6

ここ数時間、この壁に激しくぶつけていたので、頭が血まみれです。:(

タイトルが示すように、データベース サーバーの 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 のセットアップで何かを見逃したのではないでしょうか?

4

2 に答える 2

5

代わりに 'bob'@'127.0.0.1' を試してください。PHP が 127.0.0.1 経由でアクセスしている場合、ローカル DNS 解決が行われず、MySQL がアクセスを拒否するため、「localhost」と呼ばれることはありません。

于 2012-10-12T08:12:29.490 に答える
3

将来の Google 社員のために、私はたった今同じ問題を抱えていましたが、パスワードが正しいと確信していました。はい、パスワードは確かに正しかったのですが、問題はパスワードを生成する方法と、パスワードを構成ファイルに保持する方法です。

私のようなランダム パスワード ジェネレーターを使用する場合は$、パスワードにドル記号が含まれていないことを確認してください。

パスワードがある場合は$、次のように一重引用符を使用して構成ファイルにパスワードを保持してください

$pass = 'randomchars$morerandom';

ただし、このような二重引用符ではありません

$pass = "randomchars$morerandom";
于 2015-02-01T18:39:45.207 に答える