首先确认并安装validate_password插件,然后配置密码策略级别、长度及字符要求,通过SET GLOBAL命令设置并写入配置文件使其永久生效,最后测试密码修改验证规则是否起作用。

MySQL密码复杂度通过插件机制实现,最常用的是validate_password插件。启用后可强制用户设置符合安全要求的密码,防止弱口令。以下是在MySQL中设置和修改密码复杂度的完整步骤。
1. 检查是否已安装validate_password插件
登录MySQL后执行:
SELECT * FROM mysql.plugin WHERE name = 'validate_password';如果没有结果返回,说明插件未安装,需手动启用。
2. 安装validate_password插件
运行以下命令安装插件:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';安装成功后可通过以下语句验证:
SHOW VARIABLES LIKE 'validate_password%';3. 配置密码复杂度策略
validate_password提供多个参数用于控制密码强度,常见配置如下:
- validate_password.policy:密码策略级别(0=LOW, 1=MEDIUM, 2=STRONG)
- validate_password.length:最小长度,默认8
- validate_password.character_count:至少包含多少种字符类型(数字、小写、大写、特殊符号)
- validate_password.number_count:至少包含几位数字
- validate_password.mixed_case_count:至少包含几个大小写字母
- validate_password.special_char_count:至少包含几个特殊字符
例如,设置为中级策略且密码至少12位:
SET GLOBAL validate_password.policy = MEDIUM;SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.special_char_count = 1;
4. 修改配置文件永久生效
以上设置在重启后会失效,需写入MySQL配置文件(如/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf):
[mysqld]validate_password_policy=MEDIUM
validate_password_length=12
validate_password_number_count=1
validate_password_mixed_case_count=1
validate_password_special_char_count=1
保存后重启MySQL服务:
systemctl restart mysql5. 测试密码复杂度限制
尝试修改用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';如果密码太简单,系统将报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements使用符合规则的密码即可成功:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyP@ssw0rd!2024';基本上就这些。开启密码复杂度能有效提升数据库安全性,建议生产环境务必启用并合理配置策略。不复杂但容易忽略。










