私の頭は、過去数時間この壁にぶつかってどれくらい苦労しているのですか? :(mysqlコマンドラインが動作しているときに、PHP PDOが「SQLSTATE [42000] [1044] Access denied for user」を取得するのはなぜですか?
タイトルが示唆しているように、データベースサーバの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';
を?!誰かが私に骨を投げてください(FYI、問題を!私が作成しようとすると起こる新しいPDOオブジェクト... PDOExceptionをキャッチし、それがメッセージです)。
私は、付与後にFLUSH PRIVILEGESをした、とここでのSHOW GRANTSの出力です:
mysql> SHOW GRANTS FOR 'bob'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
+------------------------------------------------------------------------------------------------------------+
| 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クラスタです。
EDIT:この問題は、Zend AMFを使用してサーバーにアクセスしようとしたときにのみ発生することがわかりました。 PDOがZend AMFで動作しない理由は何ですか? Zend AMFのセットアップで何かが忘れられましたか?
のような二重引用符でこの
ではなく、のように単一引用符を使用して設定ファイルにあなたのパスワードを保つことを確認してくださいあなたをDID 'GRANT'を実行した後に' FLUSH PRIVILEGES'を実行しますか? –
質問を編集して詳細を追加してください。コメントのコードは読めません。 –
恐らく、 'GRANT'はサーバの特権キャッシュを直接更新するので、' FLUSH PRIVILEGES'は必要ではありません。 mysql。*テーブルを直接変更する場合にのみ必要です。 – lanzz