我正在设置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
非常感谢任何帮助!
答案 0 :(得分:2)
“拒绝访问”消息由联系的MySQL服务器生成,并且(不一定)反映您正在使用的DNS名称。
确保beta.example.com
解析为您正在使用的主机(使用host beta.example.com
)。此外,该MySQL服务器上的配置可能会以某种方式搞砸了。如果您从beta.example.com 登录beta.example.com ,是否会收到相同的错误消息?
您可以通过创建数据包跟踪找到联系的主机(例如使用wireshark)。一个简单的替代方法是暂时停止(或防火墙)beta.example.com上的MySQL服务器,并查看错误消息是否发生更改。