1

我正在尝试使用 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)

4

1 回答 1

2

该错误并不是说您已连接到local_server.domain.tld,而只是说明您正在那里进行连接。该错误必须与您的 GRANT 或其他身份验证问题有关。

于 2012-10-08T03:33:41.050 回答