本地访问phpMyAdmin遇MySQL caching_sha2_password认证错误求助
解决phpMyAdmin登录MySQL时的
caching_sha2_password认证错误 我来帮你搞定这个头疼的登录问题!你遇到的是MySQL 8.0+版本的默认认证机制冲突:MySQL 8.0开始默认用caching_sha2_password加密,但旧版phpMyAdmin(或PHP的mysqli扩展)不支持这种认证方式,导致连接失败。下面是一套完整的排查+解决步骤,你可以一步步来验证:
1. 先确认MySQL用户的认证方式
首先登录MySQL命令行工具(别用phpMyAdmin,直接用终端/命令提示符):
mysql -u root -p
输入你的MySQL root密码后,执行查询查看用户的认证插件:
SELECT user, host, plugin FROM mysql.user;
找到你用来登录phpMyAdmin的用户(比如root或你自定义的用户),看plugin列是不是caching_sha2_password——如果是,这就是问题根源。
2. 修改用户的认证方式为mysql_native_password
针对目标用户执行修改命令(比如修改本地root用户):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的MySQL密码';
注意:如果是远程连接的用户,把
localhost改成对应的IP地址或%(允许所有远程IP访问),密码要和你之前用的一致,或者设置新密码。
修改完成后必须刷新权限:
FLUSH PRIVILEGES;
3. 检查phpMyAdmin的config.inc.php配置
找到phpMyAdmin安装目录下的config.inc.php文件(比如XAMPP里的htdocs/phpmyadmin/config.inc.php,Linux下可能在/var/www/phpmyadmin/),确保关键配置项正确:
$cfg['Servers'][$i]['auth_type'] = 'cookie'; // 推荐用cookie认证,安全性更高 $cfg['Servers'][$i]['host'] = 'localhost'; // 确保和MySQL服务地址一致 $cfg['Servers'][$i]['user'] = 'root'; // 这里填你刚才修改认证方式的用户名 $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['AllowNoPassword'] = false;
如果你用的是
config认证(直接在配置文件填密码),要确保$cfg['Servers'][$i]['password']和你ALTER USER时设置的密码完全一致。
4. 重启相关服务
修改完成后,必须重启MySQL和Web服务器才能生效:
- Linux系统:
sudo systemctl restart mysql sudo systemctl restart apache2 # 如果你用Nginx就替换成nginx - Windows/XAMPP/WAMP:
打开集成环境的控制面板,重启MySQL和Apache服务。
可能踩的坑
- 如果你用的是集成环境(比如XAMPP),要确保你修改的是集成环境自带的MySQL,不是系统单独安装的MySQL;
- 注意区分
'root'@'localhost'和'root'@'127.0.0.1'是两个不同的用户,phpMyAdmin可能连接的是其中一个,要确认修改的是对应host的用户。
内容的提问来源于stack exchange,提问作者zalyahya
相关产品推荐
相关产品推荐

