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

PHP新手使用mysqli连接MySQL数据库时root用户及自定义用户均出现Access Denied错误求助

解决MySQL mysqli连接Access Denied错误的排查步骤

嘿,别着急!作为PHP新手遇到这种连接问题很正常,咱们一步步来排查这个Access Denied的问题:

1. 先检查代码里的密码参数(最容易忽略的点)

看你提供的代码,root用户的密码是空字符串:

$conn = new mysqli('localhost', 'root', '', 'dbname');

如果你的MySQL root用户是设置了密码的,这里空着肯定会报错!先确认root用户的密码,把正确的密码填进去试试,比如:

$conn = new mysqli('localhost', 'root', 'your_actual_root_password', 'dbname');

新用户的连接代码也要确保密码和你创建用户时设置的完全一致。

2. 检查MySQL用户的主机权限

MySQL的用户是「用户名@主机」的组合,比如root@localhost和root@127.0.0.1是两个独立的用户,权限不通用。

  • 登录MySQL命令行(或者phpMyAdmin的SQL控制台),执行以下命令查看用户对应的主机:
SELECT user, host FROM mysql.user;
  • 如果你的用户对应的主机是localhost,那PHP里用localhost作为主机参数是对的;但如果MySQL是通过TCP/IP监听的,试试把主机改成127.0.0.1再连接。
  • 要是你需要从任意主机连接(测试阶段可以用,生产环境不建议),可以给用户授权任意主机:
GRANT ALL PRIVILEGES ON dbname.* TO 'your_new_user'@'%' IDENTIFIED BY 'user_password';
FLUSH PRIVILEGES; -- 刷新权限让设置生效

3. 确认MySQL服务是否正常运行

有时候MySQL服务没启动也会抛出类似的错误:

  • Linux系统可以用命令检查:systemctl status mysql
  • Windows系统可以打开「服务」面板,找到MySQL服务确认它处于运行状态。

4. 刷新MySQL权限

你在phpMyAdmin里给用户授权后,可能需要手动刷新权限才能生效,执行这条SQL:

FLUSH PRIVILEGES;

5. 用命令行测试连接

先绕过PHP,直接用MySQL命令行测试用户能不能登录,这样可以排除PHP代码的问题:

  • 测试root用户:mysql -u root -p,输入密码后看能不能进入MySQL控制台
  • 测试新用户:mysql -u your_new_user -p -D dbname,同样看能不能成功登录并访问目标数据库

如果命令行能成功连接,那问题大概率出在PHP代码或者PHP的mysqli配置上;如果命令行也登不上,那就是MySQL用户的权限或密码设置有问题。

先从上面这几个步骤排查,应该能解决你的问题!

内容的提问来源于stack exchange,提问作者Darshan B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:52:43