現象
Docker ✖️ MySQL環境でマイグレーションを実行しようとすると、
% ./vendor/bin/sail artisan migrate
エラー発生。
Illuminate\Database\QueryException
SQLSTATE[HY000] [1045] Access denied for user 'root'@'xx.xx.xx.xx' (using password: YES)
以下略
原因:作業用ユーザーを作成してないため
rootユーザーではマイグレーションを実行できないので、作業用のユーザーを作成する。
1, コンテナのIDを確認
% docker ps
2, DockerのMySQLコンテナに接続
パスワードを求められるので、rootユーザーのパスワードを入力。
設定してない場合はエンターキーで通る。
% docker exec -it [コンテナID] mysql -u root -p
3, 新しいユーザーを作成
> CREATE USER '[ユーザー名]'@'%' IDENTIFIED BY '[パスワード]';
4, 作成したユーザーに権限を付与
(※ここでは全権限を付与していますが、適宜調節してください。)
> GRANT ALL PRIVILEGES ON *.* TO '[ユーザー名]'@'%';
5, 権限を有効にするために、フラッシュ
> FLUSH PRIVILEGES;
6, .envを更新
.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=作成したユーザー名
DB_PASSWORD=パスワード
7, マイグレーションを実行 → OK!