【问题标题】:Connecting to a remote MYSQL server using PDO, results in same error SQLSTATE[HY000] [2002] [duplicate]使用 PDO 连接到远程 MYSQL 服务器,导致相同的错误 SQLSTATE[HY000] [2002] [重复]
【发布时间】:2018-04-02 18:43:50
【问题描述】:

好的,我已经研究了每个步骤并尽可能多地完成了,但仍然出现以下错误:

Error!: SQLSTATE[HY000] [2002] No connection could be made because 
the target machine actively refused it.

(顺便说一句,这个解决方案,PHP Connection failed: SQLSTATE[HY000] [2002] Connection refused,不相关,我的问题是指连接到远程 mysql 服务器,而不是虚拟机,更改为端口 8888 或端口 8889 对消息没有影响..)

这是我所做的:

  1. 我在mysql中创建了一个远程连接: GRANT ALL PRIVILEGES ON fin_sample.* to fin_test@'%' identified by '****';

  2. 我把bind-address = 0.0.0.0改成了/etc/mysql/mysql.conf.d/mysql.cnf

  3. 确认我停止并重新启动了 mysql。

此时服务器应该正在接受远程连接。这是我的代码:

    try {
        $user = 'fin_test';
        $pass = '****';
        // Note "recommended" space after colon..
        $dbh = new PDO('mysql: host=67.205.123.123;dbname=fin_test', $user, $pass);
        foreach($dbh->query('SELECT * FROM fin_test.progview_sample') as $row) {
            print_r($row);
        }
        $dbh = null;
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }

我想知道如何调试它,或者出了什么问题?无论我使用什么输入,我都会得到相同的响应。

【问题讨论】:

  • 消除“推荐”空间,从连接主机中删除“.com”,删除所有获取代码(暂时),然后重试。有什么事吗?
  • 见 enapupe 的answer
  • 删除空间和“.com”(切换到一个 IP 地址,我曾尝试过无数次排列)确实有效@aendeerei - 我不知道你的意思“获取代码” - 我可以说我似乎真正需要的唯一参数是 hostname=IP_address。
  • 是的,就像“把车开给机械师,它就可以工作了”——我已经编辑了我的帖子。

标签: php mysql pdo


【解决方案1】:

解决办法:

我能够通过执行以下操作来解决以下问题:

  • 删除除hostname=.. 之外的所有参数
  • 此外,我在 IP 地址之后出现了 .com 的愚蠢错误。 警告!! PDO 不会告诉你你连接到了错误的地方!
  • hostname设为IP地址

我觉得理解你必须为你要调用的数据库修改绑定地址并重启mysql很重要。

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 1970-01-01
    • 2019-02-07
    • 2016-09-29
    • 2019-11-07
    • 1970-01-01
    • 2018-10-29
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多