You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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命令行中执行:
    SHOW VARIABLES LIKE 'socket';
    
    记录返回的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:51:43