phpMyAdmin 无法修改用户认证插件,因其界面不支持;需通过 SQL 执行 ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'pwd'; 或 UPDATE mysql.user。
为什么 phpMyAdmin 里改不了用户的认证插件?
因为 phpmyadmin 本身不提供直接修改 mysql 用户认证插件的界面——它只是个数据库管理前端,底层权限和插件配置得通过 sql 手动操作。你看到的“用户账户”页面只能改密码、权限、主机限制,plugin 字段是只读的。
怎么用 SQL 把用户切到 mysql_native_password?
必须连上 MySQL(比如用 phpMyAdmin 的「SQL」标签页),执行 ALTER USER 或 UPDATE mysql.user。推荐前者,更安全、语义清晰:
- 先确认当前插件:
SELECT User, Host, plugin FROM mysql.user WHERE User = 'your_user'; - 切换插件(MySQL 5.7.6+):
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; - 如果报错 “Your password does not satisfy the current policy requirements”,说明密码强度不够,换一个或临时调低策略:
SET GLOBAL validate_password.policy = LOW; - 老版本(UPDATE +
FLUSH PRIVILEGES,但容易漏掉Host匹配细节,不建议
切完插件连不上?检查这三处
认证插件改了,不代表连接就自动生效。常见断连原因不是插件没切成功,而是配套没跟上:
- MySQL 服务没重载权限:执行完
ALTER USER后,**必须**运行FLUSH PRIVILEGES;(虽然ALTER USER通常自带刷新,但某些部署下仍需显式执行) - 客户端驱动不支持新插件:PHP 的
mysqli和PDO MySQL默认支持mysql_native_password,但如果启用了caching_sha2_password且没装 OpenSSL 扩展,PDO 可能静默失败 - phpMyAdmin 自己的连接配置没更新:它用的是配置文件里的账号(如
config.inc.php中的$cfg['Servers'][$i]['auth_type']和账号),不是你刚改的那个用户——改的是数据库用户,不是 phpMyAdmin 的登录凭据
什么时候不该切回 mysql_native_password?
不是所有场景都适合降级。MySQL 8.0 默认用 caching_sha2_password 是有理由的:
- 如果你的应用明确要求 TLS 连接,或者部署在公网、高安全环境,
mysql_native_password的明文挑战响应机制其实更脆弱 - Docker 官方镜像、Laravel Sail、最新版 XAMPP 都已适配
caching_sha2_password,硬切反而增加维护成本 - PHP 8.1+ 对
caching_sha2_password支持已稳定,只要确保mysqli扩展编译时带 OpenSSL,就不需要降级
真正卡住的,往往是本地开发环境里旧 PHP(mysql_native_password 才是务实选择。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











