当前位置: 首页 > 知识库问答 >
问题:

使用docker compose创建MySQL模式/数据库

燕智
2023-03-14

我正在尝试创建一个mysql数据库/模式,如果它还不存在的话。

以下是我尝试过的:

docker编写。yml公司

mysql:
  image: mysql:5.6.26
  environment:
   - MYSQL_ROOT_PASSWORD=root
  command: "mysql -uroot -proot < createDB.sql"
  ports:
    - "3306:3306"

创建数据库

CREATE DATABASE IF NOT EXISTS bignibou;

它不起作用。如果架构不存在,使用docker/docker compose创建架构的最佳方式是什么?

共有3个答案

秦育
2023-03-14

可能您正在尝试的操作需要一个额外的脚本。因此,如果您可以选择构建图像而不是直接使用预构建的图像,那么您需要使用Dockerfile和脚本文件,该文件首先在MySql中导入脚本,然后运行服务本身。

看看这个答案:Docker-使用模式初始化mysql数据库

嵇俊德
2023-03-14

为了不丢失数据,最好也使用卷:

version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
        - mysql-db:/var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: my_db_name
    ports:
        - "3307:3306"
volumes:
  mysql-db:
闻人宇定
2023-03-14

我终于找到了解决方案的开始。

MySQL映像采用一个环境变量,即MySQL\u DATABASE,该变量在映像启动时使用数据库的名称初始化容器请参见此处以获取完整文档。

或者阅读以下摘录:

MYSQL\u数据库

此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对该数据库的超级用户访问权限(对应于GRANT ALL)。

以下是我的想法:

mysql:
  image: mysql:5.6.26
  environment:
   - MYSQL_ROOT_PASSWORD=root
   - MYSQL_DATABASE=bignibou
  ports:
    - "3306:3306"

我现在需要一种方法来指定默认排序规则,但那是另一回事...

编辑:对于那些有兴趣指定不同于默认排序规则的排序规则的人,以下是使用另一个将覆盖默认排序规则的配置文件的说明。见下文:

使用自定义MySQL配置文件,MySQL启动配置在文件/etc/MySQL/my中指定。cnf,该文件又包括在/etc/mysql/conf.d目录中找到的以结尾的任何文件。cnf。此目录中文件中的设置将扩充和/或覆盖/etc/mysql/my中的设置。cnf。如果要使用自定义的MySQL配置,可以在主机上的目录中创建备用配置文件,然后将该目录位置装载为MySQL容器中的/etc/MySQL/conf.d。

If/my/custom/config文件。cnf是自定义配置文件的路径和名称,您可以这样启动mysql容器(请注意,此命令中仅使用自定义配置文件的目录路径):

$docker run——命名一些mysql-v/my/custom:/etc/mysql/conf.d-e mysql\u ROOT\u PASSWORD=my secret pw-d mysql:tag这将启动一个新的容器some mysql,其中mysql实例使用/etc/mysql/my的组合启动设置。cnf和/etc/mysql/conf.d/config-file。cnf,以后者的设置为准。

 类似资料:
  • 问题内容: 对于一个宠物项目,数据库进入了顶峰, 元数据 达到了顶峰,我很难理解该命令与MySQL命令之间的区别(如果有)。 有什么区别吗?如果不是这样,这是关系数据库行为的一种相当典型的模式(我听说过,对于其他数据库(例如Oracle),模式存在于数据库中,而不是与数据库处于同一级别)。 谢谢! 问题答案: MySQL的文档说: CREATE DATABASE创建具有给定名称的数据库。要使用此语

  • 问题内容: 作为MySQL的新手,我已经安装了最新版本的MySQL Workbench(5.2.33)。我想知道如何使用此应用程序创建数据库。在SQL编辑器的“概述”选项卡中,几乎没有显示“ MySQL模式”,这些模式是现有数据库吗? 问题答案: 启动MySQL Workbench。 在欢迎窗口的左窗格中,在“打开连接以开始查询”下选择要连接的数据库。 查询窗口将打开。在其左窗格上,有一个标题为“

  • 在MySQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下: 中的内容是可选的。语法说明如下: <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。 IF NOT EXISTS:在创建数据库之前进行判断,只有该

  • MySQL 是一个使用广泛的数据库服务器,你肯定会在某些节点上安装配置 MySQL 服务器。 本节将向你展示如何安装配置 MySQL 服务器,以及如何为应用程序自动创建数据库和用户。 准备工作 如果你还没有 MySQL 模块,先创建一个: # mkdir /etc/puppet/modules/mysql # mkdir /etc/puppet/modules/manifests # mkdir

  • 问题内容: 我试图将edmx实体模型添加到Visual Studio 2013中的C#/ Web项目中。我的问题是未创建文件。 我执行以下步骤: 给项目起个名字 从数据库中选择“ EF Designer” 从已经成功测试成功连接到MySQL数据库的下拉列表(localhost)中选择连接 选中“将webc.config中的连接设置另存为”选项 我单击“下一步”,窗口消失,然后回到代码窗口 没有创建

  • 我正在编写一个脚本,该脚本的目的是:基于包含后缀日期时间的旧表设置表名(例如,table_1_2020_01_01),基于旧表的架构为该表创建架构,然后从旧表向该表插入数据。 我创建了三个MySQL语句,用于设置表名,创建表,然后将数据插入到创建的表中: 但是,每次我运行我的运行我的func从主,我收到这个错误: 我在golang中发现Set表名是一个var。所以我的解决方案是使用准备好的报表,并