MySQL默认不启用密码强度校验,需手动安装validate_password插件并设为MEDIUM策略,配置最小长度、数字、大小写及特殊字符要求,同时重置弱密码账户并辅以匿名用户清理、root远程限制等安全措施。

MySQL 本身不自带强制密码强度校验功能,需通过插件(如 validate_password)启用密码策略,否则默认允许如 123456、password 等弱密码,存在明显安全风险。
启用 validate_password 插件
该插件是 MySQL 官方提供的密码强度验证模块,支持最低长度、数字、大小写字母、特殊字符等要求。
- 登录 MySQL 后执行:
INSTALL PLUGIN validate_password SONAME 'validate_password.so'; - 确认是否加载成功:
SHOW PLUGINS;查看validate_password状态为ACTIVE - 若提示找不到 so 文件,说明插件未安装(常见于精简版 MySQL 或某些 Docker 镜像),需安装
mysql-common或对应版本的插件包
配置密码策略等级
插件提供三个强度等级:LOW(仅长度)、MEDIUM(长度+数字+大小写+特殊字符)、STRONG(额外校验字典文件)。推荐设为 MEDIUM。
- 查看当前策略:
SELECT @@validate_password_policy; - 设置为 MEDIUM:
SET GLOBAL validate_password_policy = MEDIUM; - 同时可调整具体参数(如最小长度):
SET GLOBAL validate_password_length = 8;SET GLOBAL validate_password_number_count = 1;SET GLOBAL validate_password_mixed_case_count = 1;SET GLOBAL validate_password_special_char_count = 1; - 为使重启后仍生效,将上述配置写入
my.cnf的[mysqld]段落中
对已有用户强制重置密码
插件启用后,仅对新设或修改的密码生效。已有弱密码用户不会被自动拦截,需主动更新。
- 检查是否存在低强度密码用户:
SELECT user, host, password_last_changed FROM mysql.user WHERE password_last_changed IS NULL OR password_last_changed = '0000-00-00 00:00:00';(部分版本适用) - 手动重置高危账户密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass#2024'; - 建议优先重置
root、管理员及远程访问账户
补充安全建议
仅靠密码策略不够,还需结合其他措施降低风险。
- 禁用匿名用户:
DROP USER ''@'localhost'; - 限制 root 远程登录:
只保留'root'@'localhost',删除'root'@'%' - 定期轮换关键账户密码,尤其在人员变动或系统迁移后
- 开启 MySQL 错误日志与审计日志(如使用企业版或插件 audit_log),便于追溯异常登录尝试










