mysql - 启动 docker-compose sql 实例后如何自动执行 SQL 脚本?

标签 mysql linux docker ubuntu

启动 docker 容器后,我有一个准备好的 sql5.7 服务器。但我需要创建一个名为“root”的 root 用户,并授予他所有权限和来自外部的访问权限。所以我需要这些 sql 命令在容器创建后自动执行。
这是我的 docker-compose.yml

version: '3.1'
services:
  mysql:
    container_name: mysql5.7
    restart: always
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'mypassword' 
    ports:
     - 33063:3306
    volumes:
      - sql-data:/var/lib/mysql
volumes:
  sql-data: 
我需要自动执行这个 sql 命令:
FLUSH PRIVILEGES;
CREATE LOGIN root WITH PASSWORD = "mypassword"
GRANT ALL PRIVILEGES *.* TO 'root'@'%';

最佳答案

您将需要基于原始 MySQL 制作个性化图像。
创建一个文件夹并将您需要运行的命令以 .sql 格式放在那里,并在那里创建一个 Docker 文件,一个简单的文件可以是:

FROM mysql:5.7
COPY /NAME.sql /docker-entrypoint-initdb.d/
这将确保您创建的图像是原始 mysql 5.7 + 脚本的副本。然后在该文件夹中运行 Docker 运行命令以创建镜像并使用该镜像名称代替原始 mysql,例如:
docker image build -t imageName:latest .

关于mysql - 启动 docker-compose sql 实例后如何自动执行 SQL 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68441124/

相关文章:

php - 从 2 个表中获取数据,与 $pdo 具有相同的 ID

PHP foreach 循环返回空值

linux - "dnf install <package name> "开始直接下载fedora x86-64。如何避免这种情况

相机的 Linux 系统无法运行带有 './abcd' 的已编译 C 程序,而是将其识别为/bin/sh 脚本

MySql使用Makefile创建数据库

docker - *.docker.localhost 仅适用于 chrome

php - MYSQL/PHP : Concat returning to many fields on LEFT JOIN

MySQL 查询没有显示正确的结果

linux - 仅当使用 sed 或 awk 为空时才删除模式后的一行

python - 如何在 docker 容器中打开 jupyter nookbooks?