MySQLへの接続が拒否に関するエラー
appコンテナとdbコンテナの接続において、
php artisan migrate
コマンドを実行したところ下記のエラーが出た。
root@a0aefa03324d:/app/laravel# php artisan migrate
Illuminate\Database\QueryException
SQLSTATE[HY000] [1045] Access denied for user 'root'@'172.21.0.2' (using password: YES) (SQL: select * from information_schema.tables where table_schema = database and table_name = migrations and table_type = 'BASE TABLE')
access denied...
どうやらmysqlへの接続が拒否されているようだ。
docker-compose.ymlファイルと.envファイルの環境変数を確認してみる。
docker-compose.yml
db:
build:
context: .
dockerfile: ./docker/db/Dockerfile
ports:
- 3306:3306
environment:
MYSQL_DATABASE: MYSQL_DATABASE
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
TZ: 'Asia/Tokyo'
volumes:
- mysql-volume:/var/lib/mysql
.env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=password
database名とユーザー名が異なっているのでここが原因そう。
.envファイルを下記に修正して再度php artisan migrate
コマンドを実行してみる。
.env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
// 修正
DB_DATABASE=MYSQL_DATABASE
// 修正
DB_USERNAME=user
DB_PASSWORD=password
php artisan migrate
コマンド実行。
root@a0aefa03324d:/app/laravel# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (45.90ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (28.35ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (16.78ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (41.32ms)
うまくいきましたね。