Skip to content

Instantly share code, notes, and snippets.

@ibeucaly
Created March 15, 2020 21:01
Show Gist options
  • Save ibeucaly/b7b3e8e239a4e14d6e69c49fd54b5acf to your computer and use it in GitHub Desktop.
Save ibeucaly/b7b3e8e239a4e14d6e69c49fd54b5acf to your computer and use it in GitHub Desktop.
creates multiple databases on MySQL Docker by using an script
-- This file is placed at ./initdb/sql/db1.sql
-- SQL for initializing db1
CREATE TABLE table1 (id int NOT NULL PRIMARY KEY, name varchar(50) NOT NULL);
-- This file is placed at ./initdb/sql/db2.sql
-- SQL for initializing db2
CREATE TABLE table2 (id int NOT NULL PRIMARY KEY, name varchar(50) NOT NULL);
version: "3"
services:
mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_USER: your_user
MYSQL_PASSWORD: your_password
volumes:
- ./initdb:/docker-entrypoint-initdb.d
#!/bin/bash
# This file is placed at ./initdb/init.sh
docker_process_sql () {
mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" "$@"
}
docker_process_sql << EOS
CREATE DATABASE db1;
CREATE DATABASE db2;
GRANT ALL ON db1.* TO '$MYSQL_USER'@'%';
GRANT ALL ON db2.* TO '$MYSQL_USER'@'%';
FLUSH PRIVILEGES;
EOS
docker_process_sql db1 < /docker-entrypoint-initdb.d/sql/db1.sql
docker_process_sql db2 < /docker-entrypoint-initdb.d/sql/db2.sql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment