PHP连接MySQL数据库报错:Access denied for user ''@'localhost'
解决PHP连接指定MySQL数据库时的1044权限错误
看你的错误提示和代码,问题其实很明确——你代码里的用户名是示例占位符,没换成实际有权限访问db_test的MySQL用户,而且错误里显示用户是空字符串'',说明这个无效的用户名根本没通过MySQL的验证。
问题根源
你写的$username = "username"是PHP连接MySQL的示例代码里的占位符,不是真实存在的MySQL用户。当你不指定数据库时,MySQL只验证用户名密码是否能登录服务器(哪怕这个用户暂时没权限访问任何数据库,只要能登录就会成功);但指定db_test后,MySQL会检查该用户是否拥有这个数据库的访问权限,而你用的占位符用户名不存在,就触发了1044权限错误。
具体解决步骤
- 替换成真实的MySQL用户名:比如XAMPP默认的MySQL用户名是
root,密码为空(和你代码里的$password = ""匹配),所以先把代码里的$username = "username"改成$username = "root"试试。 - 验证用户对
db_test的权限:如果换了用户名还是报错,需要确保该用户有访问db_test的权限:- 打开XAMPP的phpMyAdmin,登录你的MySQL账号;
- 找到
db_test数据库,点击「权限」选项卡; - 确认你的用户名(比如
root)在权限列表里,并且有查询、插入等必要权限; - 如果没有权限,可以执行SQL语句授权:
GRANT ALL PRIVILEGES ON db_test.* TO '你的用户名'@'localhost'; FLUSH PRIVILEGES;
- 修正后的代码示例:
<?php $servername = "localhost"; $username = "root"; // 换成你的真实MySQL用户名 $password = ""; $dbname = "db_test"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } else { echo "Connected Successfully"; } ?>
额外提醒
以后写代码时别直接抄示例里的占位符,一定要替换成自己环境里的真实配置——这是新手常犯的小错误,注意一下就好啦。
内容的提问来源于stack exchange,提问作者Sohid Ullah
相关产品推荐
相关产品推荐

