MySQL 5.7 默認安裝 validate_password 插件,root 初始隨機密碼位於錯誤日誌(/var/log/mysqld.log)。首次登錄必須修改密碼,若新密碼不符合策略則拋出:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
| 策略等級 | validate_password_policy 值 | 檢查項目 |
|---|---|---|
| LOW (0) | 0 / LOW | 僅長度 |
| MEDIUM (1) | 1 / MEDIUM (默認) | 長度 + 數字 + 大小寫 + 特殊字符 |
| STRONG (2) | 2 / STRONG | MEDIUM + 字典文件檢查 |
-- 1. 降級策略至 LOW(僅驗證長度)
SET GLOBAL validate_password_policy = LOW; -- 或 0
-- 2. 調整最小長度(默認 8,最小 4)
SET GLOBAL validate_password_length = 6; -- 設為 6,允許 123456
-- 3. 修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; -- 或 SET PASSWORD = '123456';
-- 4. (可選) 恢復生產級策略
SET GLOBAL validate_password_policy = MEDIUM;
SET GLOBAL validate_password_length = 8;
validate_password_length 實際下限 = validate_password_number_count + validate_password_special_char_count + 2×validate_password_mixed_case_count(默認各 1 → 最小 4)。validate_password_length 會自動調整以滿足下限。validate_password_length 低於下限,MySQL 會靜默將其提升至下限(不報錯)。SHOW VARIABLES LIKE 'validate_password%';
-- 若返回空集合,說明插件未安裝/啟用,密碼策略不生效
MEDIUM 策略,配合密碼管理器生成高強度密碼。password_expire、password_history(8.0+)強制過期與防重用。SELECT @@log_error; -- 顯示錯誤日誌絕對路徑
grep 'temporary password' /var/log/mysqld.log -- 提取初始隨機密碼
理解策略機制,靈活調整,才能在安全與便利間找到平衡點。