PDO主机被忽视

时间:2011-10-16 21:13:09

标签: php mysql pdo

我正在设置Symfony2,并且作为该过程的一部分,首次使用PDO扩展。我安装得很好,但我在DSN中指定主机名时遇到问题。 MySQL主机位于不同的服务器上,我将其包含在DSN中(例如“beta.example.com”)。然而,返回的错误消息始终表示本地服务器上存在访问被拒绝的响应(例如“alpha.example.com”)。

请注意:有一个运行本地的MySQL服务器(在“alpha.example.com”上),因此访问被拒绝消息,但我需要使用的是在beta.example.com上运行。

我的DSN:

mysql:host=beta.example.com;port=3306;dbname=testdb;charset=UTF8

以下是附加的确切错误的屏幕截图(修改了主机名以匹配上面的示例):

https://skitch.com/nathanntg/gbrhx/pdo-exception

它与Symfony无关,如果我从一个空白的PHP文件直接调用PDO创建,就会发生这种情况:

<?
$a = new PDO('mysql:host=beta.example.com;port=3306;dbname=testdb;charset=UTF8', 'testuser', 'password');
?>

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045]      Access denied for user 'testuser'@'alpha.example.com' (using password: YES)' in -:2
Stack trace:
#0 -(2): PDO->__construct('mysql:host=beta…', 'testuser', 'password')
#1 {main}
thrown in - on line 2

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

“拒绝访问”消息由联系的MySQL服务器生成,并且(不一定)反映您正在使用的DNS名称。

确保beta.example.com解析为您正在使用的主机(使用host beta.example.com)。此外,该MySQL服务器上的配置可能会以某种方式搞砸了。如果您从beta.example.com 登录beta.example.com ,是否会收到相同的错误消息?

您可以通过创建数据包跟踪找到联系的主机(例如使用wireshark)。一个简单的替代方法是暂时停止(或防火墙)beta.example.com上的MySQL服务器,并查看错误消息是否发生更改。