1

PDO を使用してリモート mysql サーバーに接続しようとしています。ただし、dsn で指定したホスト名または IP アドレスに関係なく、スクリプトを実行すると、アドレスは常に Web サーバーが実行されているローカル サーバーのホスト名に戻されます。

Google は、これは SELinux とリモート データベースに接続する apache の機能に関係していると示唆していますが、私は SELinux を無効にしています。

ディストリビューション: Ubuntu 11.04 x64

アパッチのバージョン: 2.2.17

PHP バージョン: PHP 5.3.5-1ubuntu7.11 with Suhosin-Patch (cli)

編集:

リクエストに応じてコードを追加しました。ローカルサーバーでは問題なく動作しますが、リモート接続は許可されないため、これが私のコーディングの問題であるとは思いません。

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 に答える