XAMPP环境下无法连接MySQL至phpMyAdmin,CLI可正常连接求排查
嘿,我之前也碰到过这种诡异的情况——CLI能正常用root无密码登MySQL,但phpMyAdmin就是连不上,明明没改过配置。咱们一步步来排查解决:
检查MySQL Socket路径匹配
有时候web端的phpMyAdmin用的socket路径和MySQL实际运行的路径不匹配,这就会导致CLI能连但web端失败。先在MySQL CLI里执行:SHOW VARIABLES LIKE 'socket';记下返回的路径(比如XAMPP里常见的
/opt/lampp/var/mysql/mysql.sock或者Windows下的C:/xampp/mysql/mysql.sock),然后在你的phpMyAdmin配置文件里添加一行:$cfg['Servers'][$i]['socket'] = '你刚才查到的socket路径';把这行放在
$cfg['Servers'][$i]['extension'] = 'mysqli';附近就行。修复controluser(pma)的权限
你的配置里启用了pma这个controluser,但这个用户可能权限失效或者不存在了。在MySQL CLI里登录后执行以下SQL:-- 如果pma用户不存在就创建它 CREATE USER IF NOT EXISTS 'pma'@'localhost' IDENTIFIED BY ''; -- 给它phpmyadmin库的全部权限 GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost'; -- 刷新权限生效 FLUSH PRIVILEGES;phpMyAdmin的一些高级功能依赖这个用户,权限出问题也会导致连接异常。
确认mysqli扩展在web端正常加载
虽然配置里指定了用mysqli,但web端的PHP可能没加载这个扩展。新建一个info.php文件放在XAMPP的htdocs目录里,内容是:<?php phpinfo(); ?>访问
localhost/info.php,搜索“mysqli”关键词,如果找不到相关模块信息,就打开XAMPP的PHP配置文件(php.ini),找到;extension=mysqli这行,去掉前面的分号,保存后重启Apache服务。重启XAMPP所有服务
有时候就是服务缓存的小问题,哪怕没改配置,先停止Apache和MySQL,再重新启动,说不定就能解决。
内容的提问来源于stack exchange,提问作者Oscar

