先查SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'validate_password';,若无结果或状态为DISABLED则未加载;再执行SHOW VARIABLES LIKE 'validate_password%';为空也说明未加载。

确认 validate_password 插件是否已加载
MySQL 8.0 默认启用密码强度校验,但插件 validate_password 并非总是自动安装。如果执行 SHOW VARIABLES LIKE 'validate_password%'; 返回空结果,说明插件未加载,后续设全局变量会报错 Unknown system variable。
需先手动安装:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
Linux 下文件名是 validate_password.so,Windows 是 validate_password.dll;若提示找不到文件,请检查 plugin_dir 路径(用 SELECT @@plugin_dir; 查看)。
用 SET GLOBAL 修改策略时的常见错误
直接执行 SET GLOBAL validate_password.policy = LOW; 可能失败,原因包括:
- 用户无
SUPER或SYSTEM_VARIABLES_ADMIN权限(MySQL 8.0.16+ 推荐后者) - 变量名拼写错误:必须用
validate_password.policy,不能写成validate_password_policy(旧文档常误写) - 部分变量在插件加载前不可写,需先
INSTALL PLUGIN再设值
推荐一次性设置关键项(全部用点号语法):
SET GLOBAL validate_password.policy = LOW;<br>SET GLOBAL validate_password.length = 4;<br>SET GLOBAL validate_password.mixed_case_count = 0;<br>SET GLOBAL validate_password.number_count = 0;<br>SET GLOBAL validate_password.special_char_count = 0;
注意:validate_password.length 最小允许值为 4,设为 1 或 0 会被自动修正为 4。
让配置永久生效:my.cnf 里怎么写
仅靠 SET GLOBAL 是临时的,服务重启即失效。要持久化,必须修改 MySQL 配置文件(如 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)。
在 [mysqld] 段落下添加:
[mysqld]<br>validate_password.policy = LOW<br>validate_password.length = 4
不要写 validate_password=off —— 这是无效配置,MySQL 会忽略并继续加载插件;也不要用 skip-validate-password,该参数不存在。
改完后必须重启服务:sudo systemctl restart mysqld(CentOS/RHEL)或 sudo systemctl restart mysql(Ubuntu/Debian)。
验证是否真关掉了,别被 SHOW VARIABLES 欺骗
执行 SHOW VARIABLES LIKE 'validate_password%'; 看到 policy 是 LOW 不代表万事大吉。真正要验证,得试改密码:
- 运行
ALTER USER 'root'@'localhost' IDENTIFIED BY '123'; - 如果仍报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,说明插件仍在校验 - 此时检查
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'validate_password';,确认状态是ACTIVE;若为DISABLED,则需重装插件
最稳妥的“彻底关闭”方式其实是卸载插件:UNINSTALL PLUGIN validate_password;,但之后所有密码策略相关变量都会消失,且部分云托管 MySQL(如阿里云 RDS)禁止该操作。











