WSL环境下PHPMyAdmin登录失败:mysqli_real_connect权限拒绝问题
解决WSL环境下PHPMyAdmin登录失败(HY000/2002权限拒绝)的问题
问题核心原因
该报错主要来自两个关键点:
- MySQL root用户默认采用
auth_socket认证机制,而非密码认证,导致PHPMyAdmin无法通过密码完成连接 - PHPMyAdmin依赖的控制用户(默认名为
pma)未正确创建/授权,或配置文件中密码与实际不匹配
分步解决方案
1. 修改MySQL root用户认证方式
WSL环境安装的MySQL,root用户默认仅允许系统用户认证,需切换为密码认证:
- 执行命令登录MySQL:
sudo -u root -p - 在MySQL命令行中执行以下SQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码'; FLUSH PRIVILEGES; - 退出MySQL后,尝试用
mysql -u root -p登录,确认密码认证生效
2. 配置PHPMyAdmin控制用户
PHPMyAdmin需要pma用户完成后台管理操作,需确保该用户存在且权限正确:
- 重新登录MySQL,执行以下SQL创建并授权用户:
CREATE USER 'pma'@'localhost' IDENTIFIED BY '自定义pma密码'; GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost'; FLUSH PRIVILEGES; - 编辑PHPMyAdmin配置文件:
sudo nano /etc/phpmyadmin/config.inc.php - 找到以下配置段,将
controlpass替换为你设置的pma密码:$cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = '你的pma密码'; - 保存并退出编辑器(按
Ctrl+O回车,再按Ctrl+X)
3. 匹配MySQL与PHP的Socket路径
若上述操作后仍报错,需检查Socket路径是否一致:
- 在MySQL命令行中执行:
记录返回的Socket路径(例如SHOW VARIABLES LIKE 'socket';/var/run/mysqld/mysqld.sock) - 编辑PHP配置文件(根据你的PHP版本调整路径,示例为PHP 8.2):
sudo nano /etc/php/8.2/apache2/php.ini - 找到以下两行,设置为MySQL返回的Socket路径:
mysqli.default_socket = /var/run/mysqld/mysqld.sock pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock - 保存退出后,重启Apache服务:
sudo systemctl restart apache2
4. 修复MySQL Socket目录权限
若Socket路径存在权限问题,执行以下命令修复:
sudo chown -R mysql:mysql /var/run/mysqld/ sudo systemctl restart mysql
内容的提问来源于stack exchange,提问作者UltiApex
相关产品推荐
相关产品推荐

