這是 mysql 初始化時,使用臨時密碼,修改自定義密碼時,由於自定義密碼比較簡單,就出現了不符合密碼策略的問題。
如下圖:

問題原因:
設置密碼的驗證強度等級達不到標准
解決辦法:
1、查看 mysql 初始的密碼策略,
輸入語句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 進行查看,
如下圖:

關於 mysql 密碼策略相關參數
1)、validate_password_length 固定密碼的總長度;
2)、validate_password_dictionary_file 指定密碼驗證的文件路徑;
3)、validate_password_mixed_case_count 整個密碼中至少要包含大/小寫字母的總個數;
4)、validate_password_number_count 整個密碼中至少要包含阿拉伯數字的個數;
5)、validate_password_policy 指定密碼的強度驗證等級,默認為 MEDIUM;
關於 validate_password_policy 的取值:
0/LOW:只驗證長度;
1/MEDIUM:驗證長度、數字、大小寫、特殊字符;
2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件;
6)、validate_password_special_char_count 整個密碼中至少要包含特殊字符的個數;
2、首先需要設置密碼的驗證強度等級,設置 validate_password_policy 的全局參數為 LOW 即可
set global validate_password_policy=LOW;
3、當前密碼長度為 8 ,如果不介意的話就不用修改了,按照通用的來講,設置為 6 位的密碼,設置 validate_password_length 的全局參數為 6 即可
set global validate_password_length=6; // 注:在默認密碼的長度最小值為 4 ,由 大/小寫字母各一個 + 阿拉伯數字一個 + 特殊字符一個,只要設置密碼的長度小於 3 ,都將自動設值為 4

以下操作:
mysql> set global validate_password_policy=0; //設置密碼驗證(只驗證長度) Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_length=1; //設置密碼長度 Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER USER() IDENTIFIED BY 'root'; //設置密碼 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges ; //刷新生效 Query OK, 0 rows affected (0.00 sec) mysql> quit
