Linux 上安裝 Mysql 設置root密碼問題


 

Ubuntu 18.10.1

Mysql 5.7.26-0

 

 安裝mysql

apt-get install mysql-server

 

安裝完可以直接使用,但是新版本在安裝過程中沒有提示設置root用戶密碼,使用如下方法設置:

sudo mysql_secure_installation

 

過程中提示是否開啟 VALIDATE PASSWORD PLUGIN,就是設置密碼強度檢查,自行選擇:

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: 

如果后面要再修改,可以去 /etc/mysql/my.cnf 里面增加:

validate_password=OFF

 

選擇是的話會讓你選擇等級:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 

 

然會會讓你輸入root密碼,注意一定要符合上面你選擇的要求:

Please set the password for root here.

New password: 

Re-enter new password: 

 

輸入完之后會顯示你的密碼的安全性,並提示你是否確認使用這個:

Estimated strength of the password: 50 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

 

之后就是一些其他方面的設置。。。

 

最后注意會提示你是否重新加載權限表格:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

 

 

以上設置完成后發現還是無法使用,采用如下方法:

mysql> select Host,User,plugin,authentication_string from user;
+-----------+------------------+-----------------------+-------------------------------------------+
| Host      | User             | plugin                | authentication_string                     |
+-----------+------------------+-----------------------+-------------------------------------------+
| localhost | root             | auth_socket           |                                           |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | mysql_native_password | *9FD2128DA457CDBF327277BA59C9DE1BAFA88816 |
+-----------+------------------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)

 

發現root用戶的認證方式是:auth_socket

它只檢查用戶是否使用套接字進行連接,然后比較用戶名,並沒有密碼驗證。

 

所以我們要修改plugin,並設置密碼。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

注意這兩個操作必須一條命令執行,先更改插件然后設置密碼將不起作用,它將再次回退到auth_socket。

 

如果你設置密碼的時候提示了以下錯誤:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

需要注意你的密碼策略等級。

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.31 sec)
其中各字段意思如下:
  • validate_password_length  固定密碼的總長度;
  • validate_password_dictionary_file 指定密碼驗證的文件路徑
  • validate_password_mixed_case_count  整個密碼中至少要包含大/小寫字母的總個數
  • validate_password_number_count  整個密碼中至少要包含阿拉伯數字的個數;
  • validate_password_policy 指定密碼的強度驗證等級,默認為 MEDIUM;
    • 0/LOW:只驗證長度;
    • 1/MEDIUM:驗證長度、數字、大小寫、特殊字符;
    • 2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件;
  • validate_password_special_char_count 整個密碼中至少要包含特殊字符的個數;

 

我們可以修改等級:

mysql> set global validate_password_policy=LOW;

當然其他字段也可以直接修改,總之設置密碼時需要與其匹配。

 

至此root密碼設置成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM