エラーメッセージ
状態:-
閲覧数:6,021
投稿日:2013-10-15
更新日:2013-10-15
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'データベースユーザー名'@'localhost' (using password: YES)'
内容
・指定したデータベースユーザー名で、データベースへアクセス出来ない
対応
・接続する「データベースユーザ名」が、データベース上で正しく設定されているかを確認
実際に遭遇した例
エラーメッセージ
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'データベースユーザー名'@'localhost' (using password: YES)'
エラー原因を探る
「データベースユーザー名」「パスワード」、何れも正しい
・「データベースユーザー名」一致を確認
・パスワード一致を確認
・エラーが消えず、途方にくれる
原因はホスト名
・最終的な原因は、phpMyAdminログイン情報ホスト欄に「locaohost」と入力していたことだった
・つまり、「phpMyAdminバージョン情報: 3.5.7」では、ホスト名が異なると、同名ユーザーを作成可能なことが判明
・バグはバグだと思うが、きっと、そんな間違いするヤツいねーよ! てことで見落とされているのだと思われ
・間違ったホスト名を削除するためには、ユーザーと同名のデータベースを必ず削除しなければいけない仕様になっているため、最終的に一旦削除後、作り直した(そのためだけに、データベース削除した…)
教訓
・ホスト入力欄を侮ってはいけない。間違うと面倒なことになる可能性がある
・phpMyAdminは、やり方次第で、同名ユーザーを作成可能(通常は同名ユーザー作成不可だが、チェックが甘く抜け道がある)
※不幸にも同名ユーザーを作成してしまった場合は、phpMyAdminでは、間違ったホスト名を設定したユーザーのみ削除することは出来ない。正しいホスト名を設定しているユーザーも、同名データベースも、一旦一緒に削除しなければいけない