mysql如何避免弱密码风险_mysql密码策略设置

来源:这里教程网 时间:2026-02-28 20:34:11 作者:

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),便于追溯异常登录尝试 不复杂但容易忽略:插件必须显式安装并配置,MySQL 默认不启用任何密码强度检查。

相关推荐