开启MySQL8的密码策略组件validate_password
一、validate_password组件安装配置
1.安装组件
INSTALL COMPONENT 'file://component_validate_password';安装后,密码策略立即生效,但仅影响后续操作(如新建用户或修改密码)。
2.卸载组件
UNINSTALL COMPONENT 'file://component_validate_password';卸载后,密码复杂度策略失效,可设置简单密码(如root)。
3.检查组件状态
SHOW VARIABLES LIKE 'validate_password.%'; -- 查看参数配置 SELECT * FROM mysql.component WHERE component_urn LIKE '%validate_password%'; -- 验证是否安装二、validate_password组件核心参数
1.密码策略控制
•
validate_password.policy
定义密码强度等级,可选值:•0/LOW:仅检查密码长度(默认长度由
validate_password.length控制,最小为 4。•1/MEDIUM(默认):检查长度、数字、大小写字母和特殊字符。
•2/STRONG:在 MEDIUM 基础上,额外检查密码是否存在于字典文件。
•其他参数
•
validate_password.length:密码最小长度(默认 8)。•
validate_password.mixed_case_count:至少需要的大写+小写字母数(默认 1)。•
validate_password.number_count:至少需要的数字个数(默认 1)。•
validate_password.special_char_count:至少需要的特殊字符个数(默认 1)。
2.密码强度评估函数
• 使用
VALIDATE_PASSWORD_STRENGTH()函数评估密码强度(0-100 分),例如:
SELECT VALIDATE_PASSWORD_STRENGTH('Password123!'); -- 返回强度评分三、常见问题与解决方案
1.ERROR 1819 (密码不符合策略)
临时调整策略:
SET GLOBAL validate_password.policy = LOW; -- 降低强度要求 SET GLOBAL validate_password.length = 4; -- 最小长度设为 4永久修改:在my.cnf中配置参数(需重启 MySQL).
2.客户端兼容性问题
MySQL 8.0 默认使用caching_sha2_password加密插件,旧客户端可能不支持。可修改用户加密方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';