LoginSignup
14
13

More than 3 years have passed since last update.

Docker × Mysqlでユーザー作成出来ない

Posted at

概要

Docker環境でMysqlを使用する際、docker-compose.ymlに記載した環境変数が反映されず、作業ユーザーを作成出来ないエラーに遭遇しました。

docker-compose.yml

version: "3.7"

services:

  ~~~省略~~~

  db:
    container_name: db
    build:
      context: ./db
      dockerfile: Dockerfile
    ports:
      - ${DB_PORT}:3306
    environment:
      MYSQL_DATABASE: ${DB_NAME}      # 作成するデータベース名
      MYSQL_USER: ${DB_USER}            # 作業ユーザー名→上記データベースの捜査権限をもつ
      MYSQL_PASSWORD: ${DB_PASS}        # 作業ユーザーのパスワード
      MYSQL_ROOT_PASSWORD: ${ROOT_PASS} # rootユーザーのパスワード
      TZ: ${TZ}
    volumes:
      - db-data:/var/lib/mysql
      - ./db/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./db/mysql/init:/docker-entrypoint-initdb.d
      - ./log:/var/log/mysql

volumes:
  db-data:
    driver: local

Dockerfile

FROM mysql:8.0
EXPOSE 3306

そもそもなぜ作業ユーザーを作成するか?

下記記事参照。
【MySQL】ユーザーの作成方法について解説!

原因

前作業でrootユーザーのみでdocker構築をしており、volume機能でデータが永続化していたため、後作業で記述した環境変数が反映されていないというものでした。

ビルドし直しても反映されない!そもそも消えることがないようにvolume機能を使用していたのに・・・

解決

MySQLのデータを初期化

$ docker-compose down --volumes
$ docker-compose up -d

downコマンド時に--volumesオプションを追記すれば、volumeも一緒に削除されます。
次回upコマンドで起動すれば、新しいvolumeが再構築されます。

14
13
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
14
13