天天看點

MySQL密碼複雜度政策

MySQL5.6.6版本之後增加了密碼強度驗證插件validate_password,相關參數設定的較為嚴格。使用了該插件會檢查設定的密碼是否符合目前設定的強度規則,若不滿足則拒絕設定。

本文采用測試環境:MySQL 8.0.15

一、檢視所需插件

1.1 在 MySQL安裝目錄中,\MySQL Server 8.0\lib\plugin 可以看到預設存在validate_password.dll

​​

MySQL密碼複雜度政策

​​

1.2 在MySQL 8.0.15中預設沒有安裝這個插件,我們可以通過 ​

​SELECT * from mysql.plugin;​

​ 檢視,清單為空。

二、安裝插件

2.1 進入MySQL安裝插件

添加: INSTALL PLUGIN validate_password SONAME 'validate_password.dll'; 解除安裝: UNINSTALL PLUGIN validate_password;

插件安裝後,使用 show plugins; 檢視是否啟用成功

​​

MySQL密碼複雜度政策

​​

2.2 檢視預設政策配置:

檢視預設政策配置指令​

​show variables like 'validate_password%';​

​​

MySQL密碼複雜度政策

​​

三、測試

3.1 修改密碼

alter us提示er 'root'@'localhost' identified by '123456789'; #提示錯誤 [SQL]alter user 'root'@'localhost' identified by '123456789'; [Err] 1819 - Your password does not satisfy the current policy requirements

四、各項值說明

validate_password_policy:密碼安全政策,預設MEDIUM政策

政策 檢查規則
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

validate_password_dictionary_file:密碼政策檔案,政策為STRONG才需要

validate_password_length:密碼最少長度

validate_password_mixed_case_count:大小寫字元長度,至少1個

validate_password_number_count :數字至少1個 validate_password_special_char_count:特殊字元至少1個

修改政策(将政策要求置為LOW,長度要求置為1)

set global validate_password_policy=0; set global validate_password_length=1;

​​

MySQL密碼複雜度政策

​​

經測試,最小長度為4,設定為1無效,不曉得為什麼,後面再查詢下。

如不需要,可關閉複雜性政策

mysql> set global validate_password_policy=0; # 關閉密碼複雜性政策 mysql> set global validate_password_length=1; # 設定密碼複雜性要求密碼最低長度為1 mysql> select @@validate_password_policy; # 檢視密碼複雜性政策 mysql> select @@validate_password_length; # 檢視密碼複雜性要求密碼最低長度大小

重置密碼驗證,可成功修改:

alter user 'root'@'localhost' identified by '1234';

MySQL密碼複雜度政策
vim /etc/my.cnf
plugin-load-add=validate_password.so    #在mysql啟動時載入插件
validate-password=FORCE_PLUS_PERMANENT   #為阻止該插件在運作時被删除,設定為永久強制使用      

然後重新開機mysql

systemctl restart mysqld      
show variables like 'plugin_dir';      
validate_password_check_user_name:預設關閉,設定為ON時可以将密碼設定成目前使用者名

validate_password_dictionary_file:插件用于驗證密碼強度的字典檔案路徑。

validate_password_length:密碼最小長度。

validate_password_mixed_case_count:密碼至少要包含的小寫字母個數和大寫字母個數。

validate_password_number_count:密碼至少要包含的數字個數。

validate_password_special_char_count:密碼至少要包含的特殊字元數。

validate_password_policy: validate_password強制執行的密碼政策

validate_password_policy的值可以使用數值0、1、2或相應的符号值LOW、MEDIUM、STRONG來指定。

0/LOW:隻檢查長度。對于長度測試,所需的長度是validate_password_length系統變量的值

1/MEDIUM:檢查長度、數字、大小寫、特殊字元。

2/STRONG:檢查長度、數字、大小寫、特殊字元字典檔案。