😅
SQLSTATE[HY000] [1045] Access denied for user 'user'host_number' の対処法
どんな時にタイトルのエラーが発生したのか
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
に出てたエラー文のホスト
解決法
- .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';
- 新規作成したユーザーに対して権限を与えます
GRANT ALL PRIVILEGES ON (DATABASE_NAME) . * TO 'newuser'@'host_number';
// 上のコマンドの後に、下のコマンドを実行
FLUSH PRIVILEGES;
- 対象のデータベースを作成します
CREATE DATABASE 'DATABASE_NAME';
- アプリのコンテナに入って、
php artisan migrate
ができるか確認をする
まとめ
他のキャッシュをクリアにてどうかなど調べたりしたが、どれも改善がなかったです。かなり面倒に感じることが多いと思うが、丁寧にやれば意外と早かったです。
同じように困った方の助けになれば良いなと思い、この記事を書きました。
仮に間違っている箇所があった際は、コメントにて書いてくださると幸いです。
Discussion