0. 小建議
- Ubuntu 16.04。由於MySQL對於Ubuntu 18.04不是很適配,會出現終端MySQL沒法輸入中文等問題。若是用Ubuntu 18.04,會須要多解決不少細節問題。
- 建議將軟件源設爲中國服務器,好比aliyun(阿里雲)或huaweicloud(華爲雲)。
- 在Linux環境下寫代碼請儘量用英文。
- 指令塊中的各指令請逐條安裝,不要同時複製多行指令執行。「#」爲註釋部分,僅供理解。
- 關機大法好 && STFW。
- 本教程結合了一些博客以及本校的三級項目指導書,但請閱讀者在兩教程不一樣時,選擇用本教程的代碼,由於其餘來源代碼老是有筆誤,例如isntall、create databases、-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
一路默認,密碼設定建議與系統密碼相同。php
1.3. 配置MySQL支持中文
sudo mysql -uroot -p #-u是帳戶,-p表明將要輸入密碼。
進入到MySQL終端後,輸入show variables like 'character%';
,顯示以下:html
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/ | +————————–+—————————-+mysql
latin1就是不能正常顯示的緣由,須要將編碼格式更改成utf8格式:sql
- 修改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[]改成本身的密碼和數據庫。apache
#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 #執行