使用 PDO 连接到远程 MYSQL 服务器,导致相同的错误 SQLSTATE[HY000] [2002] [重复]

Posted

技术标签:

【中文标题】使用 PDO 连接到远程 MYSQL 服务器,导致相同的错误 SQLSTATE[HY000] [2002] [重复]【英文标题】:Connecting to a remote MYSQL server using PDO, results in same error SQLSTATE[HY000] [2002] [duplicate] 【发布时间】: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 对消息没有影响..)

这是我所做的:

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

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

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

解决办法:

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

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

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

【讨论】:

以上是关于使用 PDO 连接到远程 MYSQL 服务器,导致相同的错误 SQLSTATE[HY000] [2002] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO 使用 SSL 连接到 MS SQLServer Express

将 mysql_real_escape_string 与 PDO 一起使用(不连接到 localhost 服务器)

无法使用 pdo 连接到 mysql

如何使用 PDO ssl 连接到 azure mysql 数据库

php - 袜子代理

使用带有 --ssl 的 PHP PDO 连接到 MySQL/MariaDB,无需证书