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

时间:2017-10-21 22:19:30

标签: php mysql pdo

好的,我已经研究过每一步并尽可能多地完成并仍然得到以下错误:

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

(BTW这个解决方案,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

  3. 中更改了/etc/mysql/mysql.conf.d/mysql.cnf
  4. 确认我已停止并重新启动了mysql。

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

        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();
        }
    

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

1 个答案:

答案 0 :(得分:0)

解决方案:

我能够通过以下方式解决以下问题:

  • 删除除hostname=..
  • 以外的所有参数
  • 另外我在IP地址后面有一个.com的愚蠢错误。 警告的!! PDO不会告诉你你正在连接错误的地方!
  • hostname设为IP地址

我确实知道你必须修改bind-address并重新启动要调用的数据库的mysql。