MySQL 5.6.6+ 引入 validate_password 插件,為 5.6 分支帶來密碼強度強制檢查能力。本文記錄 5.6 環境下的安裝步驟、配置參數、策略等級、測試驗證及與 5.7/8.0 的差異對比。
SELECT VERSION(); 或 mysql -Vvalidate_password.so (Linux) / validate_password.dll (Windows),位於 plugin_dir 目錄# my.cnf [mysqld] [mysqld] plugin-load=validate_password.so validate-password=FORCE_PLUS_PERMANENT validate_password_policy=2 # 2=STRONG, 1=MEDIUM, 0=LOW
INSTALL PLUGIN validate_password SONAME 'validate_password.so'; -- 成功後寫入 mysql.plugins 表,重啟自動載入
SHOW VARIABLES LIKE 'validate_password%'; SHOW PLUGINS WHERE Name='validate_password';
| 策略 | 值 | 檢查項目 |
|---|---|---|
| LOW | 0 | 僅長度 ≥ validate_password_length |
| MEDIUM | 1 (默認) | 長度 + 大寫 + 小寫 + 數字 + 特殊字符 (各 ≥ 對應 _count) |
| STRONG | 2 | MEDIUM 全項 + 密碼不在字典文件 (validate_password_dictionary_file) |
核心參數:
validate_password_length:最小長度,默認 8validate_password_mixed_case_count:大/小寫最小個數,默認 1validate_password_number_count:數字最小個數,默認 1validate_password_special_char_count:特殊字符最小個數,默認 1validate_password_dictionary_file:字典文件路徑 (STRONG 生效)選項 值範圍 含義 validate-passwordON/OFF/FORCE/FORCE_PLUS_PERMANENT 插件載入強制程度,生產必用 FORCE_PLUS_PERMANENT validate_password_policy0/LOW, 1/MEDIUM, 2/STRONG 策略等級,動態可調 validate_password_dictionary_file文件路徑 STRONG 策略下的禁用弱密碼字典,每行一個 七、插件載入機制補充
plugin_dir 變量指定插件庫搜索目錄 (通常 /usr/lib/mysql/plugin/ 或 basedir/lib/plugin/)--plugin-load=validate_password.so 啟動參數等效於配置文件INSTALL PLUGIN 會向 mysql.plugins 表寫入記錄,實現持久化自動載入| 特性 | 5.6 | 5.7 | 8.0 |
|---|---|---|---|
| 默認編譯 | 隨服務器編譯 | 隨服務器編譯 | 組件化,需 INSTALL COMPONENT |
| 默認啟用 | 否 | 否 | 否 |
| 密碼列 | mysql.user.password | mysql.user.authentication_string | mysql.user.authentication_string |
| 哈希算法 | mysql_native_password (SHA1雙倍) | mysql_native_password / caching_sha2_password | caching_sha2_password (默認) |
| 參數名 | validate_password_xxx | validate_password.xxx (部分) | validate_password.xxx |