我正在尝试使用PDO连接到远程MySQL数据库,但它失败并出现错误:
Connection failed: SQLSTATE[28000] [1045] Access denied for user 'my_user'@'some.ip.address' (using password: YES)
Run Code Online (Sandbox Code Playgroud)
这就是我试图连接的方式:
$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();
}
Run Code Online (Sandbox Code Playgroud)
它失败了.但是这样:
mysql_connect('sql.my_domain.nazwa.pl:3307', 'my_user', 'my_password');
Run Code Online (Sandbox Code Playgroud)
工作良好.
任何人都知道PDO可能出现什么问题,它的配置,我设置的参数或者这个特定的服务器(nazwa.pl)?
[解决]好了,这是简单的(也是棘手注意到...)语法错误,它应该是一个=,而不是:在port部分dsn.
尝试更换:
$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307";
Run Code Online (Sandbox Code Playgroud)
同
$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db; port=3307";
Run Code Online (Sandbox Code Playgroud)