我正在尝试使用 PDO 连接到远程 mysql 服务器。但是,无论我在 dsn 中提供的主机名或 IP 地址如何,当脚本运行时,它总是将地址恢复为运行 Web 服务器的本地服务器的主机名。
谷歌建议这可能与 SELinux 和 apache 连接到远程数据库的能力有关,但是我禁用了 SELinux。
发行版:Ubuntu 11.04 x64
阿帕奇版本: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' 的访问被拒绝(使用密码:YES)