PHP 连接失败:SQLSTATE\[HY000\] \[2002\] 连接被拒绝

新手上路,请多包涵

我正在尝试使用 PHP 连接来连接 phpmyadmin 上的 MySQL 数据库。只是想看看连接是否成功,连接并没有什么花哨的。我正在使用 MAMP 来托管数据库,我尝试使用的连接是这样的:

 <?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";

try {
    $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
}
catch(PDOException $e)
{
    echo "Connection failed: " . $e->getMessage();
}
?>

我一直在使用邮递员测试连接是否正常,但我不断收到此错误消息:

连接失败:SQLSTATE[HY000] [2002] 连接被拒绝

在我收到以下错误消息之前:

连接失败:SQLSTATE[HY000] [2002] 没有这样的文件或目录

这是因为我已将服务器名称设置为 localhost,通过将其更改为它给我的连接被拒绝的 IP 地址,我不知道出了什么问题。

对此的任何帮助将不胜感激。

原文由 Jonck 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

我找到了连接不工作的原因,这是因为连接试图连接到端口 8888,而它需要连接到端口 8889。

 $conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);

这解决了问题,尽管将服务器名称更改为 localhost 仍然会出现错误。

连接失败:SQLSTATE[HY000] [2002] 没有这样的文件或目录

但是当输入服务器名称的 IP 地址时,它会成功连接。

原文由 Jonck 发布,翻译遵循 CC BY-SA 3.0 许可协议

我曾经遇到过类似的问题,结果发现数据库中的用户是使用以下内容创建的:

 CREATE USER 'webpage'@'localhost' IDENTIFIED BY 'password';

当连接详细信息 php 脚本有 localhost 时工作正常,但当 IP 地址在那里时却不行。快速交换(在连接详细信息中创建用户和本地主机时的 IP 地址)显示这两件事必须匹配。

原文由 csfrancis555 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题