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 | +--------------------+