MySQL密码复杂度策略配置与调整
本指南仅供个人学习和测试目的,请勿在生产环境中使用。
查看当前密码策略
首先,查看MySQL服务器当前的密码验证规则:
SELECT * FROM performance_schema.global_variables
WHERE VARIABLE_NAME LIKE 'validate_password%';
调整密码策略参数
可以通过设置全局变量来修改密码复杂度要求。以下是一些常用参数及其调整方法:
validate_password_policy: 设置密码强度等级。0(LOW): 只要求满足最小长度。1(MEDIUM): 要求满足最小长度,并包含数字、大小写字母和特殊字符。2(STRONG): 要求满足最小长度,并包含数字、大小写字母和特殊字符,同时还会检查密码是否在字典中。
默认值为
MEDIUM。SET GLOBAL validate_password_policy = 0; -- 设置为最低复杂度要求validate_password_length: 设置密码的最小长度。最小值是4。SET GLOBAL validate_password_length = 4; -- 设置最小长度为4validate_password_number_count: 设置密码中至少包含的数字个数。SET GLOBAL validate_password_number_count = 0; -- 取消对数字数量的要求validate_password_mixed_case_count: 设置密码中至少包含的大小写字母(小写和大写)的组合数量。SET GLOBAL validate_password_mixed_case_count = 0; -- 取消对大小写字母组合的要求validate_password_special_char_count: 设置密码中至少包含的特殊字符数量。SET GLOBAL validate_password_special_char_count = 0; -- 取消对特殊字符数量的要求validate_password_check_user_name: 是否检查密码中是否包含用户名。默认关闭 (OFF)。validate_password_dictionary_file: 指定用于验证密码强度的字典文件路径。
修改用户密码
在调整策略后,你可以使用较简单的密码修改用户密码。例如,修改 root 用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'simple_password'; -- 替换 'simple_password' 为你的新密码
持久化配置
为了使密码策略的更改在MySQL服务重启后依然生效,需要将相关配置添加到MySQL的配置文件中(通常是 /etc/my.cnf 或 /etc/mysql/my.cnf)。
[mysqld]
# ... 其他配置 ...
validate_password_policy = 0
validate_password_length = 4
validate_password_number_count = 0
validate_password_mixed_case_count = 0
validate_password_special_char_count = 0
# ... 其他配置 ...
修改配置文件后,需要重启MySQL服务使更改生效:
sudo systemctl restart mysqld