1. 程式人生 > >解決MySQL8.0報錯:Unknown system variable 'validate_password_policy'

解決MySQL8.0報錯:Unknown system variable 'validate_password_policy'

解決MySQL8.0報錯:Unknown system variable 'validate_password_policy'

一、問題描述

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 有以下取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

預設是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;