私は2つの異なるサーバー上にmysqlデータベースとphp/apacheを持っています:hostphp.domain.comとhostmysql.domain.comとしましょう。
mysqlサーバーで、特定のホスト「hostphp.domain.com」から「my_database」データベースに接続する権限を持つユーザー「my_user」を設定しました。
mysql_connectを使用して接続すると、正しく機能します。しかし、php PDOを介して実行すると、次のエラーが発生します。
SQLSTATE[42000] [1044] Access denied for user 'my_user'@'%' to database 'my_database'
いくつかのテストを行ったところ、問題は... @'%'であることがわかりました。「my_user」にはどのホストからも接続する権限がないため、mysqlはその接続を拒否しています。
また、間違ったパスワードでmysql_connectを使用して接続しようとしましたが、エラーが表示されました。次のようになります。
Could not connect: Access denied for user 'my_user'@'hostphp.domain.com' (using password: YES).
違いは..@'%'と...@'hostphp.domain.com'にあります。
それが私の質問です、なぜphp pdoはリモートホストに接続するときにホスト名を宣言しないのですか?(またはそれを間違ってやっている)。
私の英語に感謝し、申し訳ありません。
編集。いくつかのコード例、これは機能しません:
try {
$pdo = new PDO(
'mysql:host=hostmysql.domain.com;port=3306;dbname=my_database',
'my_user',
'my_pass'
);
} catch (PDOException $e) {
die($e->getMessage());
}
しかし、これは問題なく動作します:
$conn = mysql_connect('hostmysql.domain.com', 'my_user', 'my_pass');
if (!$conn) {
die('Could not connect: ' . mysql_error());
}