目錄
一,環境
二,安裝步驟
1.使用包管理器安裝MySQL
2.配置MySQL的安全選項
3.設置root用戶使用密碼進行身份驗證(可選)
三,拓展知識
1.如何修改MySQL的密碼策略?
2.實現連接MySQL數據庫的測試代碼
一,環境
- VMware? Workstation 16 Pro (版本:16.1.2 build-17966106)
- ubuntu-22.04.2-desktop-amd64
二,安裝步驟
1.使用包管理器安裝MySQL
- 對于Ubuntu/Debian系統,使用apt-get命令安裝:
- sudo apt-get update
- sudo apt-get install mysql-server
- 對于CentOS/RHEL系統,使用yum命令安裝:
- sudo yum update
- sudo yum install mysql-server
- 安裝完成后,MySQL服務會自動啟動。使用以下命令檢查MySQL服務的狀態:
- sudo systemctl status mysql
- 如果MySQL服務沒有自動啟動,可以手動啟動MySQL服務:
- 對于Ubuntu/Debian系統,使用以下命令:
- sudo service mysql start
- 對于CentOS/RHEL系統,使用以下命令:
- sudo systemctl start mysql
- 可以通過以下命令來檢查MySQL服務是否在運行:
- sudo systemctl is-active mysql
- 停止MySQL服務命令如下:
- sudo systemctl stop mysql
2.配置MySQL的安全選項
- 對于MySQL 5.7版本及以上,運行以下命令進行初始配置:(這個命令會要求你設置MySQL的root用戶密碼和其他安全選項)
- sudo mysql_secure_installation
- 然后提示是否對密碼驗證組件進行配置,輸入y
- 接下來會顯示選擇設置密碼的強度,輸入0
- 詢問是否要移除匿名用戶,輸入y(上一步選擇密碼強度后會有一個輸入要設置的密碼過程,但是直接跳過了,原因看下一節)
- 詢問是否禁用root用戶進行遠程登錄,輸入y
- 詢問是否刪除測試數據庫并訪問它,輸入y
- 詢問是否重新加載權限表,就是讓到目前為止作出的設置將立即生效。輸入y
- 最后出現 All done,說明設置完成!
- 安裝完成后,可以通過以下命令登錄MySQL服務器(此時是通過auth_socket插件進行身份驗證的)
- sudo mysql
3.設置root用戶使用密碼進行身份驗證(可選)
- 在配置MySQL的安全選項時,選擇設置密碼的強度后直接跳過了輸入密碼的一步,并顯示如下紅框中的內容
- 這是因為在MySQL中,默認情況下,root用戶使用的是auth_socket插件進行身份驗證,而不是使用密碼。auth_socket插件通過Unix套接字文件來驗證用戶的憑據。因此,如果使用auth_socket插件進行身份驗證,就沒有必要為root用戶設置密碼。
如果希望為root用戶使用密碼進行身份驗證,可以按照以下步驟操作:
- 以root用戶身份登錄MySQL(此時是通過auth_socket插件進行身份驗證):
- sudo mysql
- 登錄后,切換到MySQL系統數據庫:
- USE mysql;
- 將root用戶的身份驗證方法更新為使用mysql_native_password插件:(將your_password替換為root用戶的密碼,密碼長度至少為8個字符)
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
- 刷新權限表使更改生效:
- FLUSH PRIVILEGES;
- 完成這些步驟后,root用戶將可以通過密碼進行身份驗證,而不是通過auth_socket插件。
- 最后通過以下命令并輸入前面設置的MySQL的root用戶密碼,即可登錄MySQL服務器:
- mysql -u root -p
三,拓展知識
1.如何修改MySQL的密碼策略?
- 在設置MySQL的登錄密碼時,會遇到如下錯誤提示
- 出現這個錯誤是因為MySQL默認啟用了密碼策略來確保密碼的安全性。根據密碼策略,密碼必須滿足一定的要求才能被接受,要求如下紅框中內容。
- 但在MySQL中,可以通過修改密碼策略變量來調整密碼策略的要求。具體來說,可以修改以下兩個相關的變量:
- validate_password.policy:該變量定義了密碼策略的要求。其取值可以是一個或多個如下策略的組合。
- LOW:密碼只要求長度滿足即可。
- MEDIUM:密碼至少要求包含數字、字母和特殊字符。
- STRONG:密碼至少要求包含數字、字母、特殊字符和其它字符。
- validate_password.length:該變量定義了密碼的最小長度要求,默認為8,可以根據需要進行調整。
可以按照以下步驟在MySQL中調整密碼策略:
- 以root身份登錄MySQL:
- sudo mysql
- 執行以下命令修改密碼策略:(將密碼策略設置為LOW,密碼最小長度設置為4)
- SET GLOBAL validate_password.policy='LOW';
- SET GLOBAL validate_password.length=4;
- 刷新權限表使更改生效:
- FLUSH PRIVILEGES;
- 退出MySQL的命令行界面:
- QUIT;
2.實現連接MySQL數據庫的測試代碼
#include <mysql/mysql.h> #include <stdio.h>int main() {MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;char *server = "localhost";char *user = "username";char *password = "password";char *database = "database_name";conn = mysql_init(NULL);// 連接數據庫if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {fprintf(stderr, "%s\n", mysql_error(conn));mysql_close(conn);return 1;}// 執行SQL查詢if (mysql_query(conn, "SELECT * FROM table_name")) {fprintf(stderr, "%s\n", mysql_error(conn));return 1;}res = mysql_use_result(conn);// 處理查詢結果while ((row = mysql_fetch_row(res)) != NULL) {for(int i = 0; i < mysql_num_fields(res); i++) {printf("%s ", row[i] ? row[i] : "NULL");}printf("\n");}// 釋放結果集和關閉連接mysql_free_result(res);mysql_close(conn);return 0; }
- 確保已經安裝了?
libmysqlclient-dev
?庫。如果尚未安裝,可以使用以下命令安裝:
- sudo apt-get install libmysqlclient-dev
- 在編譯命令中,需要鏈接MySQL C API庫。可以使用以下命令進行編譯:
- gcc -o my_program main.c -lmysqlclient
- 如果仍然遇到問題,請確保編譯器能夠正確找到MySQL庫文件的路徑。如果MySQL庫文件不在默認路徑中,可能需要使用?
-L
?標志來指定庫文件的路徑。