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
相关产品推荐
相关产品推荐

