PHP PDO连接MySQL失败,mysql_connect正常工作。

6

我正在尝试使用PDO连接到远程MySQL数据库,但出现错误:

Connection failed: SQLSTATE[28000] [1045] Access denied for user 'my_user'@'some.ip.address' (using password: YES)

这是我尝试连接的方式:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307";
$user = "my_user";
$password = "my_password";

try {
    $this->db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

然而,它失败了。 但是这样:

mysql_connect('sql.my_domain.nazwa.pl:3307', 'my_user', 'my_password');

运行良好。

有人知道PDO出了什么问题,是配置问题,还是我设置的参数或者这个特定的服务器(nazwa.pl)有问题吗?

[已解决] 好吧,问题很简单(但也很难注意到……),是语法错误,在dsnport部分应该使用=而不是:

2个回答

5

尝试替换:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307";

使用

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db; port=3307";

1
@PeeHaa 是一个格式化的问题吗?我一直在同一台PC上使用PDO和Apache,但我找到的文档暗示了以上的语法。 - Fluffeh
真是尴尬...我没有注意到,在“port”之后应该是“=”而不是“:”。现在它可以工作了。非常感谢,这就是正确的答案。 - zelazowy
@Fluffeh 如果你的意思是“祝好运”,那应该是“Powodzenia” :) - zelazowy
@zelazowy 嘿嘿,是啊,我不太会拼写,但读起来还可以。无论如何祝你好运 :) - Fluffeh
@Fluffeh 哦,现在我明白了区别 :-) - PeeHaa
显示剩余2条评论

1

如果您正在尝试连接到其他服务器上的数据库,请确保您的SQL服务器从托管代码的地方的IP地址上的特定端口(在您的情况下为3307)授予您访问权限。如果两个服务器相同,请尝试使用localhost或127.0.0.1。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接