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

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的权限:
    1. 打开XAMPP的phpMyAdmin,登录你的MySQL账号;
    2. 找到db_test数据库,点击「权限」选项卡;
    3. 确认你的用户名(比如root)在权限列表里,并且有查询、插入等必要权限;
    4. 如果没有权限,可以执行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:45