😅

SQLSTATE[HY000] [1045] Access denied for user 'user'host_number' の対処法

2024/06/21に公開

どんな時にタイトルのエラーが発生したのか

php artisan migrateを実行したとき

エラーの詳細

SQLSTATE[HY000] [1045] Access denied for user 'username'@'host_number' (using password: YES) (SQL: select * from information_schema.tables where table_schema = event and table_name = migrations and table_type = 'BASE TABLE')

上記のエラーを分かりやすく伝えると、『ユーザーのアクセス権が拒否されている』

※username:DATABASE_USERNAME host_number:php artisan migrateに出てたエラー文のホスト

解決法

  1. .envファイルにあるDB_USERNAMEがDBのuser一覧に表示されているか確認し、表示されていなかったらDB_USERNAMEの横に書かれているユーザーを新規作成します。
// DBコンテナに入る
docker-compose exec -it db bash
// DBにてユーザーrootでログインする
mysql -u root
// DB_USERNAMEにあるユーザー名を新規作成
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
  1. 新規作成したユーザーに対して権限を与えます
GRANT ALL PRIVILEGES ON (DATABASE_NAME) . * TO 'newuser'@'host_number';
// 上のコマンドの後に、下のコマンドを実行
FLUSH PRIVILEGES;
  1. 対象のデータベースを作成します
CREATE DATABASE 'DATABASE_NAME';
  1. アプリのコンテナに入って、php artisan migrateができるか確認をする

まとめ

他のキャッシュをクリアにてどうかなど調べたりしたが、どれも改善がなかったです。かなり面倒に感じることが多いと思うが、丁寧にやれば意外と早かったです。
同じように困った方の助けになれば良いなと思い、この記事を書きました。
仮に間違っている箇所があった際は、コメントにて書いてくださると幸いです。

Discussion