phpMyAdmin 不提供密码强度策略,真正起作用的是 MySQL 8.0+ 的 validate_password 插件;启用后所有客户端(含 phpMyAdmin)修改密码均受校验,但 phpMyAdmin 仅显示原始报错,不提示具体规则。
phpmyadmin 本身不提供密码强度策略功能,无法强制用户设置复杂密码;它只是 mysql 的 web 管理界面,不参与 mysql 用户认证逻辑的执行。
MySQL 8.0+ 原生支持密码强度策略(validate_password 插件)
真正起作用的是 MySQL 服务端的 validate_password 插件,phpMyAdmin 只是把你的 CREATE/ALTER USER 请求原样发给 MySQL。启用后,任何客户端(包括 phpMyAdmin、mysql CLI、应用程序)创建或修改用户密码时都会被校验。
- 确认插件已加载:
SHOW PLUGINS;查看validate_password是否状态为ACTIVE - 若未启用,在 MySQL 配置文件(如
/etc/mysql/mysql.conf.d/mysqld.cnf)中添加:[mysqld] validate_password.policy=STRONG validate_password.length=12 validate_password.mixed_case_count=2 validate_password.number_count=2 validate_password.special_char_count=2
- 重启 MySQL 后生效:
sudo systemctl restart mysql - 注意:这些参数仅对新设或修改的密码生效,不影响已有弱密码用户
phpMyAdmin 中执行 ALTER USER 会触发校验,但不会提示具体规则
当你在 phpMyAdmin 的「用户账户」页面点击「编辑权限」→「更改密码」时,提交的密码若不符合 validate_password 规则,MySQL 会返回错误,phpMyAdmin 仅显示类似 #1819 - Your password does not satisfy the current policy requirements 的原始报错,不解释哪条规则没满足。
- 常见失败原因:密码太短、缺少大写字母、没数字、没特殊字符、或与用户名/主机名太相似
- 调试建议:先在 phpMyAdmin 的「SQL」标签页手动执行:
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'Aa1!verylongpass';
观察具体报错 - 避免用 phpMyAdmin 表单批量改密——它可能静默截断长密码或误处理特殊字符
MySQL 5.7 及更早版本需手动安装 validate_password 插件
MySQL 5.7 默认不启用该插件,且路径和加载方式与 8.0 不同,容易配置失败。
- 检查插件库是否存在:
SELECT * FROM information_schema.PLUGINS WHERE PLUGIN_NAME = 'validate_password'; - 若为空,尝试加载:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';(Linux)或'validate_password.dll'(Windows) - 部分旧版 MariaDB 使用
password_validation插件,参数名也不同(如password_validation_policy),不能直接套用 MySQL 8.0 配置 - phpMyAdmin 对这类底层差异完全无感知,错误仍只显示 SQL 级报错
最易被忽略的一点:phpMyAdmin 的「新建用户」表单默认勾选「使用加密的密码」,但它只控制是否调用 PASSWORD() 函数(已弃用),跟密码强度策略毫无关系。真正决定强弱的是 MySQL 服务端的插件配置,不是 phpMyAdmin 界面里的任一选项。
立即学习“PHP免费学习笔记(深入)”;



















