gpt4 book ai didi

php - 在 PHP 中使用 mysqli 连接到 MySQL 时出现问题

转载 作者:行者123 更新时间:2023-11-29 11:00:11 25 4
gpt4 key购买 nike

查看了大量答案,但没有一个与我的问题完全匹配。

我正在运行 MySQL 数据库,并尝试在 PHP 中使用 mysqli 连接。连接代码如下:

<?php
if(!isset($_COOKIE["uid"])) {

$servername = "localhost";
$username = "study";
$password = "somepassword";
$dbname = "user_study";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("aww");
}
}

但是每次我收到错误

mysqli::mysqli(): (28000/1045): Access denied for user 'study'@'localhost' (using password: YES)

我知道用户'study'@'localhost'有权限访问这个数据库,因为我可以通过MySQL命令行访问它。我尝试过其他帐户(例如 root),结果相同。

还有什么我应该检查的吗?

<小时/>

新信息 (2/23)似乎即使当我关闭数据库时,我也会收到访问被拒绝的结果,这意味着它似乎正在尝试连接到服务器上的其他数据库。我如何确保它连接到正确的?

最佳答案

我认为该错误消息表明 PHP 能够使用套接字文件联系 MySQL 服务器。 (否则这将是一个不同的错误。)

出现此错误的原因有多种。如果我们可以使用 mysql 命令行客户端成功连接到 MySQL 服务器,如下所示:

> mysql --no-defaults -h localhost -u study -psomepassword user_study

这将排除许多可能的失败原因。

对 PHP 错误消息最合理的解释是 PHP 连接尝试中提供的密码与 MySQL 期望的密码匹配。

<小时/>

我们应该能够排除一些想法。 user_study 数据库的权限已授予 'study'@'localhost',例如

 GRANT SELECT ON user_study.* TO 'user'@'localhost'

在完全不同的策略上,考虑到赋值语句:

 $password = "somepassword";

假设您不会在问题中提供实际密码...我们想知道实际密码是否包含受约束的字符PHP 字符串解释,例如反斜杠字符或美元符号。

为了进行调试,我建议在分配后执行 echo $password; ,并验证发出的字符串是否符合预期。

另一种可能性是 mysql.user 表中没有完全匹配,并且用户“study”实际上与不同的 mysql.user 匹配...具有空用户''@'localhost'

我将查看 mysql.user 表中 user='study' 和 user='' 的所有条目。

我还想排除mysql命令行客户端使用.mylogin.cnf文件的可能性。

我也很想建议对 mysql.user 表进行更改,并且未执行 FLUSH PRIVILEGES 语句...但这与行为不相符(成功连接)在mysql命令行客户端中观察到。

<小时/>

显然,我们假设 MySQL 服务器在本地运行,在 PHP 执行的同一台机器上。我们希望通过本地套接字文件进行连接。

作为测试,我建议通过 TCP 连接。将主机指定为 127.0.0.1。这将需要 mysql.user 表中的不同条目。我们将测试来自 mysql 命令行客户端的连接:

> mysql --no-defaults -h 127.0.0.1 -u study -psomepassword user_study

但这会涉及到 MySQL 服务器、网络启用、绑定(bind)地址、DNS 名称解析、监听端口、iptables、防火墙等一系列其他配置问题。

--

如果问题是不受支持的身份验证协议(protocol),我预计会出现不同的错误。如果问题是无法连接到套接字文件,我还预计会出现不同的错误。

导致此错误的所有常见原因似乎都可以通过在本地计算机上运行并使用相同凭据进行连接的命令行客户端的成功连接来排除。

关于php - 在 PHP 中使用 mysqli 连接到 MySQL 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com