首页  >  问答  >  正文

PHP 连接失败:SQLSTATE 连接被拒绝

<p>我正在尝试使用 PHP 连接来连接 phpmyadmin 上的 MySQL 数据库。连接没什么特别的,只是想看看连接是否成功。我正在使用 MAMP 托管数据库,我尝试使用的连接是这样的: </p> <pre class="brush:php;toolbar:false;"><?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(); } ?></pre> <p>我一直在使用邮递员来测试连接是否正常工作,但我不断收到此错误消息:</p> <blockquote> <p>连接失败:SQLSTATE[HY000] [2002] 连接被拒绝</p> </blockquote> <p>在我收到以下错误消息之前:</p> <blockquote> <p>连接失败:SQLSTATE[HY000] [2002] 没有这样的文件或目录</p> </blockquote> <p>这是因为我将服务器名称设置为 localhost,通过将其更改为 IP 地址,它导致连接被拒绝,我不知道出了什么问题。</p> <p>任何有关此问题的帮助将不胜感激。</p>
P粉068510991P粉068510991423 天前549

全部回复(2)我来回复

  • P粉434996845

    P粉4349968452023-08-24 10:47:03

    我在 docker 环境中度过了相当多的时间,其中我的所有容器都是 docker 容器,并且我使用 Phinx 进行迁移。只是为了分享不同配置的不同响应。

    工作解决方案

    "host" => "db", // {docker container's name} Worked
    "host" => "172.22.112.1", // {some docker IP through ipconfig - may change on every instance - usually something like 172.x.x.x} Worked

    无效的解决方案

    "host" => "127.0.0.1", // SQLSTATE[HY000] [2002] Connection refused
    "host" => "docker.host.internal", //  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
    "host" => "localhost", //  SQLSTATE[HY000] [2002] No such file or directory

    我按照以下方式运行 Phinx

    docker compose --env-file .env run --rm phinx status -e development

    回复
    0
  • P粉186017651

    P粉1860176512023-08-24 10:10:42

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

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

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

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

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

    回复
    0
  • 取消回复