phpMyAdmin界面不显示用户身份验证插件选项,是因为旧版(≤4.8.x)不支持MySQL 8.0+默认的caching_sha2_password插件,需通过MySQL命令行执行ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'pwd'并FLUSH PRIVILEGES来修改。
phpMyAdmin 里看不到用户身份验证插件选项?先确认你连的是 MySQL 8.0+
mysql 8.0 默认启用 caching_sha2_password 插件,而旧版 phpmyadmin(≤ 4.8.x)不支持该插件的密码校验流程,导致你登录后在「用户账户」页看不到「身份验证插件」下拉框,甚至编辑用户时字段灰显。这不是 phpmyadmin 故障,而是底层兼容性断层。
真正能改插件的地方不在 phpMyAdmin 界面,而在 MySQL 命令行或支持该插件的客户端(如 MySQL Workbench、DBeaver)。phpMyAdmin 只是把 MySQL 的 mysql.user 表字段渲染出来——如果它读不到或不支持对应字段,就不会显示。
用 MySQL 命令行强制修改用户插件为 mysql_native_password
这是最常用、最稳妥的降级方案,尤其适用于 PHP 应用连接报错 Authentication plugin 'caching_sha2_password' cannot be loaded 的场景。
- 先用 root 或高权限账号登录 MySQL:
mysql -u root -p - 执行 ALTER USER(注意替换用户名和密码):
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
- 刷新权限:
FLUSH PRIVILEGES; - 验证修改结果:
SELECT User, Host, plugin FROM mysql.user WHERE User = 'your_user';
—— 输出中plugin字段应为mysql_native_password
为什么不能直接在 phpMyAdmin「编辑用户」里改 plugin 字段?
phpMyAdmin 的「编辑用户」表单只暴露部分字段(如 Host、Password、Global privileges),plugin 和 authentication_string 属于隐藏字段,且其表单逻辑未适配 MySQL 8.0+ 的双插件机制。即使你手动在 SQL 标签页执行 UPDATE mysql.user SET plugin='mysql_native_password' ...,也大概率失败,因为:
- MySQL 8.0 要求插件变更必须通过
ALTER USER,直接 UPDATEmysql.user表会被拒绝(报错ERROR 1396 (HY000): Operation ALTER USER failed) - 密码哈希格式与插件强绑定:
caching_sha2_password存的是 SHA256 + salt,mysql_native_password是 SHA1,混用会导致无法登录 - phpMyAdmin 提交时会重写
authentication_string,可能覆盖你手动设的值
升级 phpMyAdmin 到 5.0+ 后仍需注意兼容细节
phpMyAdmin ≥ 5.0.0 开始支持 caching_sha2_password,但前提是:PHP 必须启用 openssl 扩展,且 MySQL 连接使用 mysqli 或 pdo_mysql(不是旧的 mysql 扩展),否则仍会提示插件不可用。
立即学习“PHP免费学习笔记(深入)”;
如果你坚持用 caching_sha2_password,确保:
- PHP 配置中
extension=openssl已启用(phpinfo()查看) - phpMyAdmin 的
config.inc.php中连接方式明确指定:$cfg['Servers'][$i]['extension'] = 'mysqli';
- 用户密码已用新插件重新设置(仅改 plugin 不够,必须用
ALTER USER ... IDENTIFIED WITH ... BY重置密码)
实际操作中,多数本地开发环境直接切回 mysql_native_password 更省事;生产环境若启用了 TLS 或需要更强密码策略,才值得折腾 caching_sha2_password 的完整链路。



















