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

PHP脚本终端可连数据库,浏览器访问遇1045权限拒绝问题

问题场景

我有一段用于连接数据库并查询数据的PHP脚本(db.php):

function connect()  {
    try {
        $this->connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

        if ($this->connection->connect_error) {
            die("\nConnection failed: " . $this->connection->connect_error);
        } else {
            print "\nConnected successfully\n";
        }
    } catch (Exception $e)  {
        echo 'Exception: ' . $e -> getMessage();
        die("\nConnection failed: " . $this->connection->connect_error);
    }
}

该脚本在终端运行时可正常连接数据库并获取数据,但将文件复制到/opt/lampp/htdocs/myapp目录通过浏览器访问时,出现如下错误:

Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in /opt/lampp/htdocs/myapp/db.php on line 15
Connection failed: Access denied for user 'root'@'localhost' (using password: YES) 
Warning: mysqli::close(): Couldn't fetch mysqli in /opt/lampp/htdocs/myapp/db.php on line 61
排查过程

尝试过以下操作,但问题未解决:

  • 修改/etc/hosts添加192.168.1.1
  • 注释/etc/mysql/mysql.conf.d/mysqld.cnf中的bind-address行
  • 创建新的授权用户

后续发现关闭XAMPP面板中的MySQL服务后,终端仍可正常使用MySQL,推测系统中存在两个独立的MySQL实例:一个是系统原生安装的,另一个是XAMPP自带的。终端运行脚本时连接的是系统原生MySQL,而浏览器通过XAMPP的Apache访问时,调用的是XAMPP自带的MySQL,两者的用户权限配置不一致,导致出现1045权限错误。

解决方法

移除XAMPP包,手动安装Apache服务,确保系统仅运行单一MySQL实例,问题得以解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:45:41