nkimraの日記

技術的なメモのブログ。

MariaDBで複数DBを作る

環境

macOS  Mojave

DockerでMariaDBで複数DBを同時に作る必要があったので、そのやり方のメモ。
DB1個であれば、MYSQL_DATABASEだけで作れる。
2個以上作りたい場合は、docker-entrypoint-initdb.dというのを使う。
docker-entrypoint-initdb.dにはsqlやsh等を使えるらしい。

手順

まずdocker-compose.ymlを次のように記載する

version: '3'
services:
    mariadb:
        container_name: mariadb
        build: ./db/
        ports:
            - 3306:3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_USER: user
            MYSQL_PASSWORD: pass
            MYSQL_DATABASE: hoge
        volumes:
            - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
        restart: always
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

まずdb/Dockerfileを次のように記載する

FROM mariadb:latest

COPY ./my.cnf /etc/mysql/my.cnf
COPY ./init.sql /docker-entrypoint-initdb.d/init.sql

my.cnfを次のように記載する

[mysqld]
character-set-server=utf8
datadir = /var/lib/mysql

init.sqlにCREATE文とGRANT文を記載する

CREATE DATABASE moge;
GRANT ALL ON moge.* TO 'user'@'%';

Dockerを作成

docker-compose up -d

データベースが閲覧できることを確認。

mysql -h 127.0.0.1 -uhoge -p
pass

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| hoge               |
| information_schema |
| moge               |
+--------------------+