前言
MySQL5.6.6版本之后增加了密碼強度驗證插件validate_password,相關參數設置的較為嚴格。使用了該插件會檢查設置的密碼是否符合當前設置的強度規則,若不滿足則拒絕設置。
本文采用測試環境:MySQL 8.0.15
一、查看所需插件
1.1 在 MySQL安裝目錄中,\MySQL Server 8.0\lib\plugin 可以看到默認存在validate_password.dll
1.2 在MySQL 8.0.15中默認沒有安裝這個插件,我們可以通過 SELECT * from mysql.plugin;
查看,列表為空。
二、安裝插件
2.1 進入MySQL安裝插件
添加:
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.dll';
卸載:
mysql> UNINSTALL PLUGIN validate_password;
插件安裝后,使用 show plugins; 查看是否啟用成功
2.2 查看默認策略配置:
查看默認策略配置命令show variables like 'validate_password%';
三、測試
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;
經測試,最小長度為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設置密碼復雜度