启用validate_password插件并配置策略等级、长度、大小写字母、数字及特殊字符要求,可强制密码复杂度;结合定期排查弱密码账户、修改高风险账户密码、禁用冗余权限账户,并实施最小权限分配、登录限制和日志审计,形成完整的MySQL密码安全防护体系。

MySQL 防止弱密码的核心在于启用密码强度策略和规范账户管理。通过内置的 validate_password 插件,可以有效限制用户设置过于简单的密码,从而提升数据库安全性。
启用 validate_password 插件
MySQL 提供了 validate_password 插件用于强制密码复杂度。在配置文件中启用该插件是第一步。
- 编辑 MySQL 配置文件(通常是 my.cnf 或 my.ini)
- 在 [mysqld] 段落下添加:
plugin-load-add=validate_password.so - 重启 MySQL 服务使插件生效
配置密码强度策略
插件启用后,可通过调整参数控制密码复杂度要求。
-
validate_password.policy:设置策略等级(0=LOW, 1=MEDIUM, 2=STRONG)
建议设为 MEDIUM 或以上 - validate_password.length:最小长度,默认8位,可提高至12位增强安全性
- validate_password.mixed_case_count:至少包含的大写和小写字母数量
- validate_password.number_count:至少包含的数字个数
- validate_password.special_char_count:至少包含的特殊字符数量
例如,在配置文件中添加:
validate_password.policy = MEDIUM
validate_password.length = 12
validate_password.mixed_case_count = 1
validate_password.number_count = 1
validate_password.special_char_count = 1
定期检查并修改弱密码账户
即使启用了策略,历史账户仍可能存在弱密码,需主动排查。
- 查询所有用户及其认证插件:
SELECT User, Host, plugin FROM mysql.user; - 对使用 mysql_native_password 的用户强制修改密码
- 执行 ALTER USER 命令更新密码,例如:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewP@ssw0rd!2024'; - 禁用或删除不必要的高权限账户
加强整体账户安全管理
密码策略只是基础,还需配合其他安全措施。
- 避免使用 root 账户日常操作,创建权限最小化的专用用户
- 限制用户登录主机,如 'user'@'192.168.1.%'
- 启用日志审计,监控异常登录行为
- 定期轮换密码,尤其是生产环境关键账户
基本上就这些。只要开启 validate_password 并合理配置策略,再结合良好的账户管理习惯,就能有效防止 MySQL 使用弱密码。不复杂但容易忽略。










