使用 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 服务器)