CentOS7环境下PhpMyAdmin无法登录MySQL服务器求助
解决 phpMyAdmin 无法登录 MySQL 8 的问题
我之前碰到过几乎一模一样的环境组合问题,给你几个针对性的排查和解决步骤,应该能搞定:
1. 优先修复 MySQL 8 认证插件兼容性问题
这是最可能的核心原因:MySQL 8.0 默认使用 caching_sha2_password 认证插件,但你用的 PHP 5.4 的 mysqli 扩展完全不支持这个插件,导致 phpMyAdmin 无法建立有效连接。
解决方法:通过命令行登录 MySQL,把你的用户认证方式改成旧的 mysql_native_password:
ALTER USER '你的数据库用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的用户密码'; FLUSH PRIVILEGES;
如果你的用户允许从任意地址登录,就把 @'localhost' 改成 @'%'。
2. 调整 phpMyAdmin 连接配置细节
- 把配置里的
$cfg['Servers'][$i]['host']从localhost改成127.0.0.1:
原因是$cfg['Servers'][$i]['host'] = '127.0.0.1';localhost在 PHP 环境中会优先尝试 Unix Socket 连接,而你的配置里没指定正确的socket路径,改用IP连接会强制走TCP协议,避免socket路径错误的问题。 - 如果你想继续用socket连接,可以指定CentOS7下MySQL的默认socket路径:
$cfg['Servers'][$i]['socket'] = '/var/lib/mysql/mysql.sock'; - 注意:不要把端口改成33060,那是MySQL X Plugin的端口,常规MySQL服务的端口是3306,保持配置里的端口为空或设为
3306即可。
3. 检查 PHP mysqli 扩展是否正常加载
执行以下命令确认mysqli扩展已安装并加载:
php -m | grep mysqli
如果没有输出任何内容,说明扩展未安装,执行以下命令安装:
yum install php-mysqli systemctl restart httpd
4. 排查 SELinux 限制
CentOS7默认开启的SELinux可能会阻止Apache(phpMyAdmin的运行环境)访问MySQL服务,临时关闭SELinux测试:
setenforce 0
如果关闭后能正常登录了,就需要配置SELinux永久允许Apache连接数据库:
setsebool -P httpd_can_network_connect_db on
之后记得重新开启SELinux:setenforce 1
5. 关于版本兼容性的额外提醒
你用的 phpMyAdmin 4.4.15.10 是比较老的版本,对MySQL8的支持有限——即使解决了登录问题,后续可能会出现其他功能异常。不过这个版本最低支持PHP5.3,和你的PHP5.4兼容;如果之后想更稳定地使用MySQL8,建议升级PHP到5.5+,再把phpMyAdmin升级到4.8.x及以上版本(官方从4.8开始正式支持MySQL8)。
内容的提问来源于stack exchange,提问作者Mike Cameron
相关产品推荐
相关产品推荐

