mysql 8.0 用户登录 phpmyadmin 失败是因为默认认证插件 caching_sha2_password 不被旧版 phpmyadmin 支持,需执行 alter user 'your_username'@'localhost' identified with mysql_native_password by 'your_password'; 并 flush privileges; 解决。

为什么 MySQL 8.0 用户登录 phpMyAdmin 失败?
因为 MySQL 8.0 默认使用 caching_sha2_password 插件,而旧版 phpMyAdmin(尤其是 4.x 或未更新的 5.x)不支持该插件认证流程,连接时会报错:mysqli_real_connect(): The server requested authentication method unknown to the client。这不是 phpMyAdmin 配置问题,是底层认证协议不兼容。
如何用 SQL 命令把用户改回 mysql_native_password?
必须用具有 CREATE USER 和 ALTER USER 权限的账户(如 root)登录 MySQL 命令行或 phpMyAdmin 的「SQL」标签页执行:
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
注意替换以下内容:
-
'your_username'→ 实际用户名(比如'pma_user') -
'localhost'→ 用户 host(可能是'%'、'127.0.0.1'或具体 IP) -
'your_password'→ 若想同时重设密码就填新密码;若只换插件不改密,去掉BY '...'部分(MySQL 8.0.11+ 支持)
执行后务必运行 FLUSH PRIVILEGES;,否则变更不生效。
phpMyAdmin 连接仍失败?检查这几个地方
改完插件不代表 phpMyAdmin 就能立刻连上,还要确认:
- phpMyAdmin 配置文件
config.inc.php中的$cfg['Servers'][$i]['auth_type']设为'cookie'或'config',且没硬编码错误的插件类型 - 如果用
'config'模式,确保$cfg['Servers'][$i]['user']和$cfg['Servers'][$i]['password']对应的是刚改过插件的用户 - 某些 Docker 环境或一键包(如 XAMPP、MAMP)自带 MySQL 服务,可能实际连接的是嵌套实例而非你手动操作的那个 —— 先用命令行
mysql -u root -p验证插件是否真改成功:SELECT user,host,plugin FROM mysql.user WHERE user='your_username';
要不要长期用 mysql_native_password?
可以临时解决 phpMyAdmin 登录问题,但不推荐生产环境长期启用。原因:
-
mysql_native_password使用 SHA1 加盐哈希,安全性弱于caching_sha2_password(SHA256 + 密钥派生) - 新版 phpMyAdmin(5.2.0+)已原生支持
caching_sha2_password,升级 phpMyAdmin 比降级认证插件更稳妥 - 如果应用代码用的是老版 mysqli 扩展(非 PDO),也可能遇到同样报错 —— 此时也要同步升级 PHP 或改用 PDO
真正需要改插件的,往往是遗留系统无法快速升级的场景;一旦条件允许,优先走升级路径,而不是在认证层打补丁。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











