如何在单个容器中的 docker-compose 文件中创建多个 mysql 数据库用户?

Muh*_*P B 5 mysql database yaml docker docker-compose

我有一个包含多个服务(WordPress、nocodb)的 docker-compose 文件,需要 mysql 数据库,但我不想为每个服务创建单独的容器(mysql)。我计划对多个用户使用单个 mysql 容器。那么,如何使用 docker-compose 添加多个用户

小智 5

首先docker的整个概念就是将每个服务隔离到单独的容器中。

但是,通过使用卷将 sql 文件添加到/docker-entrypoint-initdb.d文件夹中,所有.sql文件都将由图像入口点脚本调用mysql

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./<your-path>/init:/docker-entrypoint-initdb.d
Run Code Online (Sandbox Code Playgroud)

然后你可以添加一个文件./<your-path>/init/01-users.sql

# create your root user
CREATE USER 'root'@'localhost' IDENTIFIED BY 'local';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
# create other users
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
# grand appropriated rights
Run Code Online (Sandbox Code Playgroud)

和一个文件./<your-path>/init/02-databases.sql

# create databases
CREATE DATABASE IF NOT EXISTS `<first>`;
CREATE DATABASE IF NOT EXISTS `<second>`;
Run Code Online (Sandbox Code Playgroud)