我正在尝试使用PDO连接到远程mysql服务器。但是,无论我在dsn中提供的主机名或IP地址如何,当脚本运行时,它总是将地址恢复为运行Web服务器的本地服务器的主机名。
Google建议这可能与SELinux和apach连接到远程数据库的能力有关,但我已禁用SELinux。Distro:Ubuntu 11.04 x64
Apache版本:2.2.17
PHP版本:带有Suhosin-Patch(cli)的PHP 5.3.5-1ubuntu7.11
编辑:
根据要求添加了代码。虽然我不相信这是我的编码问题,因为它在本地服务器上工作正常,但不允许远程连接。
public function db_connect($driver, $dbhost, $dbname, $user, $pass) {
$dsn = $driver . ':host=' . $dbhost . ';dbname=' . $dbname;
try {
$this->DB = new PDO($dsn, $user, $pass);
}
catch (PDOException $err) {
print 'Database Connection Failed: ' . $err->getMessage();
die();
}
}
$remote_db = new DB('mysql', 'remote_server.domain.tld', 'database_name', 'user_name', 'password');
这是我收到的错误消息。
数据库连接失败:SQLSTATE [28000] [1045]用户'user_name'@'local_server.domain.tld'的访问被拒绝(使用密码:是)
答案 0 :(得分:1)
该错误并不是说您已与local_server.domain.tld
相关联,而只是声明您正在连接来自。该错误必须与您的GRANT或其他身份验证问题有关。