2
1

More than 1 year has passed since last update.

Docker-composeを使ってMySQLを建てた際に、"Access denied for user 'root'@'localhost' (using password: YES)"に悩まされた話。

Posted at

起こったこと

  1. コンテナを立ち上げる。
  2. MySQLコンテナに入る。
  3. 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"

と、文字列として書く必要がある。

まとめ

いかがでしたでしょうか。
半ば備忘録のような感じで書いたので中身はだいぶ雑ですが、皆様の開発の一助になれば幸いです。

なお、「パスワードが正しく設定されているか確認したい!」という場合は

  1. Docker Desktopを開く
  2. Containers->対象のコンテナ->mysql->Inspect->Environmentを確認する

以上の手段で確認できますのでご参考に。

私はこれに一日溶かしたので、くれぐれも同じ道をたどらないように!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1