phpMyAdmin 不控制密码强度规则,仅作为 MySQL/MariaDB 的 Web 界面;密码策略由服务端插件(如 MySQL 的 validate_password 或 MariaDB 的 password_validation)控制,需在数据库配置中设置并重启生效。
phpMyAdmin 本身不控制密码强度规则
这是最常被误解的一点:phpmyadmin 只是 mysql/mariadb 的 web 管理界面,它不参与用户认证逻辑,也不定义或校验密码强度。所谓“设置密码强度规则”,实际是在数据库服务端(mysql 或 mariadb)配置的,phpmyadmin 只负责把你的 create user 或 alter user 请求发过去。
如果你在 phpMyAdmin 里执行建用户操作时遇到类似 Your password does not satisfy the current policy requirements 的错误,说明后端已启用了密码验证插件(如 validate_password 或 unix_socket),但 phpMyAdmin 并没有提供开关面板来调这些策略。
MySQL 8.0+:启用并配置 validate_password 插件
MySQL 8.0 默认加载了 validate_password 插件,但它的默认策略(medium)要求密码至少 8 位、含大小写字母、数字、特殊字符 —— 很多本地开发环境会因此卡住。
实操建议:
- 先确认插件是否启用:
SHOW VARIABLES LIKE 'validate_password%'; - 临时关闭(仅测试环境):
SET GLOBAL validate_password.policy = LOW;或直接SET GLOBAL validate_password.length = 4; - 永久生效需改 MySQL 配置文件(如
/etc/mysql/my.cnf或/etc/my.cnf),在[mysqld]下加:
validate_password.policy=LOW validate_password.length=4 validate_password.mixed_case_count=1 validate_password.number_count=1 validate_password.special_char_count=0
注意:修改后必须重启 MySQL 服务,且 phpMyAdmin 不会自动刷新变量值,需手动执行 SELECT @@validate_password_length; 验证。
立即学习“PHP免费学习笔记(深入)”;
MariaDB:用 password_validation 替代方案
MariaDB 不兼容 MySQL 的 validate_password 插件,它用的是 password_validation(MariaDB 10.4+ 内置),行为和参数名都不同。
常见差异点:
- 插件名是
password_validation,不是validate_password - 关键变量是
password_validation_policy(可设为0=none、1=low、2=medium)、password_validation_length - 启用方式:
INSTALL SONAME 'password_validation';(部分版本需先确认插件路径) - phpMyAdmin 中执行
SET GLOBAL无效 —— MariaDB 的 password validation 变量不可动态修改,必须写进配置文件再重启
错误现象举例:你在 phpMyAdmin 的 SQL 标签页里执行 SET GLOBAL password_validation_length = 6;,返回 Variable 'password_validation_length' is a read-only variable,这就是典型提示。
phpMyAdmin 界面里改密码时的隐性限制
即使你关掉了服务端的密码策略,phpMyAdmin 自身对「更改密码」表单有前端校验(基于 JavaScript),比如强制要求两次输入一致、长度 ≥ 4。但它不会检查大小写或特殊字符 —— 这点容易误判成“策略还在生效”。
真正要注意的坑:
- 通过 phpMyAdmin「用户账户」→「编辑权限」→「更改密码」流程提交的密码,会被自动用
PASSWORD()函数哈希(MySQL 5.7 及更早),而 MySQL 8.0+ 已弃用该函数,会导致新用户无法登录;应改用「SQL」标签页手动执行ALTER USER 'xxx'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx'; - 如果 phpMyAdmin 版本较老(如 4.x),它可能根本不支持 MySQL 8.0 的认证插件(
caching_sha2_password),连登录都会失败 —— 此时不是密码强度问题,而是认证方式不匹配
复杂点在于:你看到的“密码太弱”提示,可能来自三层不同机制叠加 —— 数据库插件、phpMyAdmin 前端 JS、以及底层认证插件兼容性。得一层层排除,不能只盯着一个地方调。



















