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)