0. 小建議
- Ubuntu 16.04。因為MySQL對於Ubuntu 18.04不是很適配,會出現終端MySQL無法輸入中文等問題。如果用Ubuntu 18.04,會需要多解決很多細節問題。
- 建議將軟件源設為中國服務器,比如aliyun(阿里雲)或huaweicloud(華為雲)。
- 在Linux環境下寫代碼請盡可能用英文。
- 指令塊中的各指令請逐條安裝,不要同時復制多行指令執行。“#”為注釋部分,僅供理解。
- 關機大法好 && STFW。
- 本教程結合了一些博客以及本校的三級項目指導書,但請閱讀者在兩教程不同時,選擇用本教程的代碼,因為其他來源代碼總是有筆誤,例如isntall、create database
s、-lmysqlclient
1. 環境部署
1.1. 基本環境部署
sudo apt update
sudo apt upgrade # 升級當前系統內可更新的內容。若升級項目較多,建議升級完成后重啟一下。
sudo apt install g++ # 安裝g++編譯器,用於編譯C/C++語言。
1.2. MySQL安裝
sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
一路默認,密碼設定建議與系統密碼相同。
1.3. 配置MySQL支持中文
sudo mysql -uroot -p #-u是賬戶,-p代表將要輸入密碼。
進入到MySQL終端后,輸入show variables like 'character%';
,顯示如下:
Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
latin1就是不能正常顯示的原因,需要將編碼格式更改為utf8格式:
- 修改MySQL的配置文件
sudo gedit /etc/mysql/conf.d/mysql.cnf
修改之后的配置文件如下所示:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
service mysql restart #重啟一下MySQL
注意:只對改動之后創建的數據庫有效。改動之前就創建好的數據庫依然無法插入中文。
1.4. 安裝phpmyadmin
sudo apt-get install phpmyadmin
- 窗口提示選擇服務器,注意不要直接回車,而是確定選中 apache2 回車。
- 設定 phpMyAdmin 的密碼,建議將所有密碼都設成系統密碼。
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin #建立/var/www/html 下的軟連接
sudo /etc/init.d/apache2 restart #重啟apache2
- 打開瀏覽器,地址欄輸入
localhost/phpmyadmin
,賬號輸入root,密碼輸入MySQL密碼即可登錄。也可以賬號phpmyadmin,密碼按剛才安裝phpmyadmin設的密碼,只是本賬戶權限比root要低一些。
2. 練手
2.1. MySQL
sudo mysql -uroot -p #-u是賬戶,-p代表將要輸入密碼。
show databases; #顯示當前所有數據庫
use mysql;
show tables;
select host,user,password_last_changed from user;
create database aaa;
use aaa;
create table student (id int(3) auto_increment not null primary key, xm char(8),xb char(4),csny date);
insert into student values('1','Bai','F','1972-05-20');
insert into student values('2','白','女','1972-05-20');
2.2. C++連接MySQL
sudo gedit Test.cpp #用gedit編輯器創建並打開一個.cpp文件
填入以下代碼,注意將password[]和database[]改為自己的密碼和數據庫。
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char server[] = "localhost";
char user[] = "root";
char password[] = "1234";
char database[] = "aaa";
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
mysql_query(conn, "SET NAMES UTF8");
//以上,為連接數據庫並聲明SQL指令的編碼類型為UTF8。
if (mysql_query(conn, "show tables"))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s \n", row[0]);
}
mysql_query(conn, "INSERT INTO `student` VALUES ('5', '李四', '男', null);");
mysql_free_result(res);
mysql_close(conn);
printf("finish! \n");
return 0;
}
g++ -W -Wall Test.cpp -o Test.out -lmysqlclient #編譯並輸出可執行文件Test.o,-l是用到mysqlclient庫。
./Test.out #執行