mysql - 如何在我的 MySQL-Docker 容器中导入现有的 MySQL 数据库?

标签 mysql docker import

我已经基于 Docker Hub 的 MySQL 官方镜像创建了一个 docker 容器。它工作正常,但我在数据库导入方面遇到了一些麻烦。

我的带有 SQL 指令的文件已经存储在我的容器的文件夹/docker-entrypoint-initdb.d 中,但它不起作用!我已经将我的 sql-import.sql 复制到/var/lib/docker/volumes/mysql-dump/_data,但是当我调用“SHOW DATABASES;”时我只能看到我的数据库的名称。在我的容器内。当我调用“SHOW TABLES FROM myDB;”时,没有可用的表。如何导入 MySQL 数据库的内容?

这是我的 Dockerfile:

FROM mysql:5.7
ADD ./init-scripts/*.sql /docker-entrypoint-initdb.d/
ADD ./config/my.cnf /root/
RUN cd /root/ && \
chmod 0600 my.cnf && \
mv my.cnf .my.cnf

ENV MYSQL_DATABASE=regex
ENV MYSQL_ROOT_PASSWORD=mypassword

EXPOSE 3306

MySQL View in the MySQL-Container

最佳答案

有几种导入方法。如果您的竞争者正在运行,则使用 docker exec:

解决方案一:

docker exec -i <id_conteneur> /usr/bin/mysql -u <fooUser> -e "CREATE DATABASE mydb"

cat schema.sql | docker exec -i <id_conteneur> /usr/bin/mysql -u <fooUser> --password=<password> <database>

解决方案 2:

在 bash 脚本中:

#!/bin/bash 
/usr/bin/mysqld_safe --skip-grant-tables &
mysql -u <fooUser> -e "CREATE DATABASE mydb" 
mysql -u <fooUser> mydb < schema.sql

并使用运行命令添加到您的 DockerFile 中:

ADD create_db.sh /tmp/create_db.sh
RUN /tmp/create_db.sh

关于mysql - 如何在我的 MySQL-Docker 容器中导入现有的 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50948372/

相关文章:

import - `import` 语句的用法

Mysql插入查询待修复

azure应用程序服务容器未获取HTTPS方案

在 docker 中分离运行时,Python 应用程序不打印任何内容

docker - 在 docker 镜像中运行 jar 文件

javascript - 当与动态导入而不是普通的 &lt;script&gt; 标记链接时,脚本被破坏

MySQL:日期字段的 CURRENT_TIMESTAMP 在本地有效但在服务器上无效

mysql - 使用 MySQL 时在 SQL Developer 中禁用自动提交

mysql - sync-mysql node js中使用变量调用query

php - 一个复杂的 mysql 查询来获取日期