首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.6 validate_password 插件安裝配置與密碼強度策略實戰

     編輯:MySQL 綜合教學

插件簡介

validate_password 是 MySQL 5.6.6+ 內建插件,強制密碼複雜度策略,防止弱密碼。支援三級策略:LOW/MEDIUM/STRONG。

安裝與啟用

方法一:配置文件永久生效(推薦)

[mysqld]
plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT  # 強制載入,不可卸載
validate_password_policy=2              # 2=STRONG, 1=MEDIUM, 0=LOW
validate_password_length=12             # 最小長度
validate_password_mixed_case_count=1    # 至少 1 大寫 + 1 小寫
validate_password_number_count=1        # 至少 1 數字
validate_password_special_char_count=1  # 至少 1 特殊字符
# validate_password_dictionary_file=/path/to/dict  # STRONG 級需字典檔

重啟 MySQL 後自動生效。

方法二:運行時動態安裝

INSTALL PLUGIN validate_password SONAME 'validate_password.so';
-- 註冊到 mysql.plugins 表,重啟自動載入

策略等級詳細對照

等級policy 值檢查項目
LOW0僅長度
MEDIUM1長度 + 數字 + 大小寫 + 特殊字符
STRONG2MEDIUM + 字典檔檢查(不可包含字典詞)

實戰測試

-- 設置密碼測試
SET PASSWORD = PASSWORD('abc');
-- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

SET PASSWORD = PASSWORD('Abc123!@#');
-- Query OK

-- 查看當前策略變數
SHOW VARIABLES LIKE 'validate_password%';

常見參數調整

-- 動態調整(立即生效,重啟失效)
SET GLOBAL validate_password_length = 10;
SET GLOBAL validate_password_policy = 1;  -- MEDIUM

-- 永久生效需修改 my.cnf 並重啟

字典檔配置(STRONG 級)

  1. 準備字典檔(每行一詞,如常見弱密碼):/usr/local/mysql/dict.txt
  2. 配置:validate_password_dictionary_file=/usr/local/mysql/dict.txt
  3. 重啟或 SET GLOBAL validate_password_dictionary_file=...

避坑指南

  • 現有用戶不受影響:插件僅檢查 SET PASSWORD、CREATE USER、ALTER USER 等設密操作
  • FORCE_PLUS_PERMANENT 防止誤執行 UNINSTALL PLUGIN 導致策略失效
  • 複製環境:從庫同步執行 INSTALL PLUGIN,否則主庫設密成功、從庫報錯導致複製中斷
  • 應用層配合:註冊/修改密碼前端驗證規則需與資料庫策略一致

總結

生產環境建議:policy=MEDIUM、length=10+、FORCE_PLUS_PERMANENT、配置字典檔升級 STRONG。兼顧安全與可用性,避免過於嚴格導致業務受阻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved