エラー文
[ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for
configuring a regular user and cannot be used for
the root user Remove MYSQL_USER="root" and use one of the following to control the root user password:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
該当のソースコード
docker-compose.yml
version: "3"
services:
web:
container_name: sample_app_local
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:5.7
volumes:
- mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_PASSWORD: password
MYSQL_USER: root
ports:
- 3306:3306
volumes:
mysql-data:
原因
docker-compose.ymlファイルでMYSQL_USER: root
を設定していたから。
MYSQL_USER
は通常のユーザーを作成するためのもので、rootユーザーには使用できない。
また、rootユーザーはmysql構築時に作成されている。
解決
MYSQL_USER: root
を削除、またはMYSQL_USER: user
を設定する。
MYSQL_USER: user
を設定した場合、MYSQL_PASSWORD
の設定も必要になります。
また、mysqlはrootユーザーで作成されているため、MYSQL_USER: user
だと権限がなくアクセス時にエラーが出る。その際には権限の設定が必要になる。
参考サイト
【Docker】Mysql が立ち上がらない(ユーザ設定エラー)
MYSQL_ROOT_PASSWORDを付け足したのに解決しない
Ruby on Rails 6のDocker環境構築