docker建多个mysql_docker mysql初始化多个sql脚本

本文介绍了如何在docker中创建并初始化多个MySQL数据库,通过在启动时执行多个sql脚本来设置数据库、用户和角色。文章提供了详细的步骤,包括创建docker-compose配置、Dockerfile以及如何控制sql文件的执行顺序。此外,还展示了如何通过docker logs检查初始化脚本的执行情况。
摘要由CSDN通过智能技术生成

docker mysql初始化多个sql脚本

发布时间:2020-04-29 10:55:16编辑:admin阅读(1070)

一、概述

现有一台服务器,需要部署mysql。其中mysql容器,需要在第一次启动时,执行多个sql文件。文件名说明执行顺序

init.sql创建数据库以及用户1

users.sql用户表2

role.sql用户角色3

注意:必须严格按照执行顺序来执行,不能错乱。

有些人可能会问:为啥不把这3个sql文件合并成1个sql?答案是可以的。假设有上万个用户,那么这个sql文件就会很大,后期维护不方便。

那么可不可以让一个sql文件,执行另外3个sql文件呢?答案是可以的。这样就可以控制sql文件的执行顺序。比如:source /opt/sql/init.sql;

use test;

source /opt/sql/users.sql;

source /opt/sql/role.sql;

二、容器演示

环境说明

操作系统:centos 7.6

docker版本: 19.03.8

docker-compose版本: 1.24.1

目录结构

/opt/mysql_test 目录结构如下:./

├── docker-compose.yml

└── mysql

├── dockerfile

├── init

│   └── init.sql

├── mysqld.cnf

└── sql

├── init.sql

├── role.sql

└── users.sql

docker-compose.ymlversion: '3'

services:

mysql:

image: mysql:1

container_name: mysql

build: ./mysql

volumes:

- /data/mysql/data:/var/lib/mysql

- ./mysql/init:/docker-entrypoint-initdb.d/

- ./mysql/sql:/opt/sql

environment:

- MYSQL_ROOT_PASSWORD=abcd1234

ports:

- "3306:3306"

restart: always

command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

说明:将sql文件放到容器中的 /docker-entrypoint-initdb.d/ 目录,就会在mysql第一次启动时执行。之后重启容器不会重复执行!

如果此目录放置多个sql文件,它执行时是没有顺序的。因此,这个目录只放一个init.sql,专门用来控制执行sql顺序的。

mysql/dockerfileFROM mysql:5.7

ADD mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf

mysql/init/init.sqlsource /opt/sql/init.sql;

use t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值