【プログラミングスクールの無料体験はこちら】

SQLSTATE[HY000] [1045] Access denied for user の解決法

エラー解決法
SQLSTATE[HY000] [1045] Access denied for user

エラー発生時

マイグレーションをしようと、

php artisan migrate

とコマンドを打ったとき。

原因

.envファイルに記載されているデータベース名やユーザー名、パスワードが間違っている。

が、根本的な原因なんですが、対処法はいくつか考えられます。
なぜかと言うと、他の要因が邪魔していて上記原因につながっている場合もあるからです。

解決法

いくつか考えられます。

.envファイルを確認&修正する

根本的な原因である「.envファイルに記載されているユーザー名、もしくは、パスワードが間違っている」ことに直接対処する解決法です。

今回のエラー出る場合は、これで解決できることも多いです。

DB_CONNECTION=mysql
DB_HOST=ホスト名
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=データベースのユーザー名
DB_PASSWORD=データベースのパスワード

作成したデータベースの情報と照らし合わせて、誤りがないか確認してください。

パスワードを変更する or ダブルクォーテーションで囲む

これが有用なのは、パスワードに“#”が含まれている場合です。
#は値として認識されないので、パスワードを変更するか、ダブルクオーテーションで囲みましょう。

DB_PASSWORD="データベースのパスワード"

キャッシュを削除する

プロジェクトのルートディレクトリで、

php artisan config:cache

とコマンドを打つと、キャッシュが削除されて上手くいくことがあります。

bootstrap/cache/config.phpを削除する

上記のキャッシュを削除する方法では、キャッシュが削除されるとともに、bootstrap/cache/config.phpというファイルが出来ます。

php artisan migrate

とコマンドを打ったときに、migrationファイルよりこのconfig.phpが優先されてしまいます。
もし、キャッシュを削除する方法を試した後、.envの間違いに気づいて修正してもエラーが解消されることはありません。

本記事を投稿するきっかけは、この方法でエラーが解決したためです。

キャッシュを削除する方法でもエラーが解決することもあるようですが、ググって試してみた後は何をやってもエラーが解決されることはないのが恐ろしいところですね。

タイトルとURLをコピーしました