无法通过phpMyAdmin连接MySQL及新建用户登录失败咨询
解决phpMyAdmin连接MySQL的两类问题
一、无法从phpMyAdmin连接到MySQL数据库
咱们先从基础排查开始,这些点大概率能帮你定位问题:
- 确认MySQL服务是否运行:Linux下可以执行
systemctl status mysql查看状态,Windows打开服务管理器找到MySQL服务检查是否启动 - 核对phpMyAdmin配置文件:找到
config.inc.php(通常在phpMyAdmin安装目录下),检查$cfg['Servers'][$i]['host']是否正确——如果MySQL和phpMyAdmin在同一台机器,设为localhost或127.0.0.1;远程MySQL的话填对应IP。另外确认端口$cfg['Servers'][$i]['port']和MySQL监听端口一致(默认3306,改了的话要对应) - 检查防火墙规则:确保phpMyAdmin所在服务器的防火墙允许访问MySQL的3306端口;如果是远程MySQL,也要确认MySQL服务器的防火墙开放了这个端口
- 查看MySQL绑定地址:打开MySQL配置文件
my.cnf(Linux)或my.ini(Windows),找到bind-address项——本地连接设为127.0.0.1,需要远程连接的话设为0.0.0.0或指定允许的IP,修改后重启MySQL生效
二、新用户创建后无法登录phpMyAdmin(报错mysqli_real_connect(): (HY000/104...)
这个问题我碰到过好多次,主要集中在这几个坑:
1. 密码可能带隐藏字符
看你给出的创建命令里,密码'abc@123'前面有个看不见的零宽空格(大概率是复制时带进来的),这会导致实际密码和你输入的不一致。重新执行命令,手动输入密码,确保没有隐藏字符:
CREATE USER 'new_user'@'%' IDENTIFIED BY 'abc@123'; GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
2. 用户主机权限不匹配
'new_user'@'%'允许从任意远程主机连接,但如果phpMyAdmin和MySQL在同一台服务器,你的连接其实是从localhost发起的——MySQL里localhost是本地套接字连接,和TCP/IP的%权限不通用。可以额外创建本地用户并授权:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'abc@123'; GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
3. phpMyAdmin配置限制
检查config.inc.php里的相关设置:
- 确保
$cfg['Servers'][$i]['auth_type']设为cookie或http,这样才能手动输入用户名密码登录 - 确认
$cfg['Servers'][$i]['AllowNoPassword']设为false(你的用户有密码,开启这个可能导致验证异常)
4. 确保权限刷新生效
执行FLUSH PRIVILEGES;后如果还是不行,可以重启MySQL服务,确保权限表的修改完全生效
5. 看具体错误代码
104开头的错误里,最常见的是1045(Access denied,对应权限或密码问题);如果是1040(Too many connections),那要检查MySQL的连接数限制。把完整错误代码贴出来,能更精准定位问题
内容的提问来源于stack exchange,提问作者odbhut.shei.chhele




