ここ数時間、この壁に激しくぶつけていたので、頭が血まみれです。:(
タイトルが示すように、データベース サーバーの mysql コマンド プロンプトからデータベースに正常にアクセスできる MySQL ユーザーを作成しました。ただし、同じユーザーでデータベースにアクセスするために新しい PDO オブジェクトをインスタンス化しようとすると、次のようになります。
SQLSTATE[42000] [1044] Access denied for user 'bob'@'localhost' to database 'my_database'
ユーザーを作成した方法は次のとおりです。
GRANT SELECT, DELETE, EXECUTE, INSERT, UPDATE ON my_database.* TO 'bob'@'localhost' IDENTIFIED BY 'some_password';
ここで何が問題になる可能性がありますか?! 誰か私に骨を投げてください!(参考までに、新しい PDO オブジェクトを作成しようとすると問題が発生します... PDOException をキャッチすると、それがメッセージです)。
付与後に FLUSH PRIVILEGES を実行しました。SHOW GRANTS の出力は次のとおりです。
mysql> SHOW GRANTS FOR 'bob'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for bob@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'bob'@'localhost' IDENTIFIED BY PASSWORD '.........................................' |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `my_database`.* TO 'bob'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
このユーザーの mysql.db は次のようになります。
mysql> SELECT * FROM db WHERE User = 'bob'\G;
*************************** 1. row ***************************
Host: localhost
Db: my_database
User: bob
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: Y
Event_priv: N
Trigger_priv: N
重要な場合、これは Ubuntu 12.04 LTS で実行されている 4 ノードの MySQL クラスターです。
編集: Zend AMF を使用してサーバーにアクセスしようとしたときにのみ問題が発生することがわかりました。PDO が Zend AMF で動作しない理由はありますか? Zend AMF のセットアップで何かを見逃したのではないでしょうか?