萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 5.5+ 強制密碼複雜度插件 validate_password 完整配置指南

MySQL 5.5 引入 validate_password 插件,可在資料庫層面強制執行密碼策略,阻擋弱密碼入庫。本文詳解插件啟用、參數調優、策略分級與實戰驗證全流程。

插件啟用:兩行配置搞定

編輯 my.cnf [mysqld] 區塊:

plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT

FORCE_PLUS_PERMANENT 表示強制載入且不可運行時卸載,防繞過。重啟 MySQL 生效。

核心參數矩陣

執行 SHOW VARIABLES LIKE 'validate%'; 查看當前配置:

參數預設值說明建議生產值
validate_password_policyMEDIUM (1)策略等級:LOW/MEDIUM/STRONGMEDIUM 或 STRONG
validate_password_length8最小長度12+
validate_password_mixed_case_count1大小寫字母最少個數2
validate_password_number_count1數字最少個數2
validate_password_special_char_count1特殊字符最少個數2
validate_password_dictionary_file空STRONG 模式下的禁用字典路徑/etc/mysql/dict.txt

三級策略解析

  • LOW (0):僅檢查長度
  • MEDIUM (1):長度 + 大小寫 + 數字 + 特殊字符(預設)
  • STRONG (2):MEDIUM + 拒絕字典弱密碼

動態調整實戰

無需重啟,即時生效:

SET GLOBAL validate_password_policy=STRONG;
SET GLOBAL validate_password_length=16;
SET GLOBAL validate_password_dictionary_file='/etc/mysql/weakpass.txt';

實戰驗證:拒絕弱密碼

-- 長度不足且無大寫
CREATE USER 'test'@'%' IDENTIFIED BY 'abc123';
-- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

-- 長度達標但無大寫
CREATE USER 'test2'@'%' IDENTIFIED BY 'abcdefghijkl';
-- ERROR 1819 (HY000): ...

避坑指南

  • 既有用戶不受影響:策略僅約束新建/修改密碼,存量弱密碼需腳本掃描強制重置
  • 應用層配合:註冊/改密 API 需前端預檢,避免用戶收到難懂的 1819 錯誤
  • 字典文件維護:定期更新 weakpass.txt,包含常見弱密碼、企業名、產品名等
  • 複製場景注意:主從同步時,從庫也需載入插件並同步策略,否則主庫拒絕的操作在從庫可能通過

資料庫層面的強制策略是最後一道防線,配合應用層多重驗證,才能構建完整的憑證安全體系。

copyright © 萬盛學電腦網 all rights reserved