起こったこと
- コンテナを立ち上げる。
- MySQLコンテナに入る。
-
mysql -u root -p
でログインを試みる。
⇒"Access denied for user 'root'@'localhost' (using password: YES)
と言われ、ログインができない。
使用した環境
Docker Desktop for Windowsにて、
Node.jsを内包したLinuxコンテナと、MySQLコンテナの2種類を建てました。
Docker-compose.yml
version: '3'
services:
app:
build: .
tty: true
ports:
- 8000:8000
volumes:
- .:/Service
depends_on:
- mysql
mysql:
image: mysql:8.0
tty: true
ports:
- 3306:3306
volumes:
- ./mysql:/mysql
environment:
MYSQL_ROOT_PASSWORD: 000000
※パスワードは実際と異なる数字を記載しています。
Dockerfile
FROM --platform=linux/x86_64 node:18.15.0-slim
RUN apt-get update && \
apt-get install -y locales git procps
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP
ENV LANG=ja_JP.UTF-8
ENV TZ=Asia/Tokyo
WORKDIR /Service
原因
Docker-compose.ymlの環境変数にて
environment:
MYSQL_ROOT_PASSWORD: 000000
と記載していたこと。
正しくは
environment:
MYSQL_ROOT_PASSWORD: "000000"
と、文字列として書く必要がある。
まとめ
いかがでしたでしょうか。
半ば備忘録のような感じで書いたので中身はだいぶ雑ですが、皆様の開発の一助になれば幸いです。
なお、「パスワードが正しく設定されているか確認したい!」という場合は
- Docker Desktopを開く
-
Containers->対象のコンテナ->mysql->Inspect->Environment
を確認する
以上の手段で確認できますのでご参考に。
私はこれに一日溶かしたので、くれぐれも同じ道をたどらないように!