一、問題描述
1、在安裝MySQL8.0時,修改臨時密碼,因密碼過於簡單(如:123456),不符合MySQL密碼規范,會觸發一個報錯信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。
二、遇到問題
1、解決辦法調整MySQL密碼驗證規則,修改 policy 和 length 的值。
2、MySQL 5.7 進行如下設置,即可解決問題:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
3、MySQL 8.0 執行代碼:
mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
mysql> set global validate_password_length=1;
ERROR 1193 (HY000): Unknown system variable 'validate_password_length'
三、問題解決
1、分析:可以看到,修改 policy 和 length 的值,在MySQL5.7中好使,在MySQL8.0中無效。'validate_password_policy' 變量不存在。
2、解決:先修改一個滿足的密碼(如:Root_12root)。
補充: validate_password_policy 有以下取值:
默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。
3、密碼修改后,可用命令查看 validate_password 密碼驗證插件是否安裝。
mysql> SHOW VARIABLES LIKE 'validate_password%';
4、MySQL 5.7 查看密碼驗證插件:
5、 MySQL 8.0 查看密碼驗證插件:
四、問題總結
1、通過查看 MySQL5.7 和 MySQL8.0 密碼驗證插件對比,可知兩個版本中,變量名不一樣。(*_password_policy 和 *_password.policy ) --- 問題原因所在。
2、MySQL 8.0 調整密碼驗證規則:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;