【Docker】MySQL容器部署

MySQL标准软件基于Bitnami mysql 构建。当前版本未8.3.0

你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform
qinghub自动安装部署配置库

简介

MySQL是一个开源的关系型数据库管理系统,常用于Web应用程序的后端数据存储。它支持多种操作系统和编程语言,具有高性能、可靠性和可扩展性等特点。

配置

环境变量

可定制的环境变量

Name Description Default Value
ALLOW_EMPTY_PASSWORD 允许 MySQL 访问而无需任何密码。 no
MYSQL_ROOT_USER MySQL 数据库 root 用户。 root
MYSQL_MASTER_PORT_NUMBER MySQL 主节点的端口号。 3306
MYSQL_MASTER_ROOT_USER master主机的MySQL数据库root用户。 root
MYSQL_MASTER_DELAY MySQL 数据库复制延迟。 0
MYSQL_REPLICATION_SLAVE_DUMP 在主 MySQL 数据库上进行转储并更新从属 MySQL 数据库 false
MYSQL_CLIENT_ENABLE_SSL 是否强制使用 SSL 来连接 MySQL 数据库。 no
MYSQL_CLIENT_EXTRA_FLAGS 是否使用“mysql”CLI 工具强制进行 SSL 连接。对于依赖 CLI 而不是 API 的应用程序很有用。 no
MYSQL_STARTUP_WAIT_RETRIES 等待数据库运行的重试次数。 300
MYSQL_STARTUP_WAIT_SLEEP_TIME 等待数据库运行的重试之间的睡眠时间。 2
MYSQL_ENABLE_SLOW_QUERY 是否启用慢查询日志。 0
MYSQL_LONG_QUERY_TIME 多少时间(以秒为单位)定义了慢速查询。 10.0

只读环境变量

Name Description Value
DB_FLAVOR SQL 数据库风格。有效值:mariadb或mysql。 mysql
DB_BASE_DIR MySQL 文件的基本路径。 ${BITNAMI_ROOT_DIR}/mysql
DB_VOLUME_DIR 持久文件的 MySQL 目录。 ${BITNAMI_VOLUME_DIR}/mysql
DB_DATA_DIR MySQL 数据文件目录。 ${DB_VOLUME_DIR}/data
DB_BIN_DIR 可执行二进制文件所在的 MySQL 目录。 ${DB_BASE_DIR}/bin
DB_SBIN_DIR 服务二进制文件所在的MySQL目录。 ${DB_BASE_DIR}/bin
DB_CONF_DIR MySQL 配置目录。 ${DB_BASE_DIR}/conf
DB_DEFAULT_CONF_DIR MySQL默认配置目录。 ${DB_BASE_DIR}/conf.default
DB_LOGS_DIR MySQL 日志目录。 ${DB_BASE_DIR}/logs
DB_TMP_DIR MySQL 临时文件目录。 ${DB_BASE_DIR}/tmp
DB_CONF_FILE 主要 MySQL 配置文件。 ${DB_CONF_DIR}/my.cnf
DB_PID_FILE MySQL PID 文件。 ${DB_TMP_DIR}/mysqld.pid
DB_SOCKET_FILE MySQL 服务器套接字文件。 ${DB_TMP_DIR}/mysql.sock
DB_DAEMON_USER 将执行 MySQL Server 进程的用户。 mysql
DB_DAEMON_GROUP 将执行 MySQL Server 进程的组。 mysql
MYSQL_DEFAULT_PORT_NUMBER 用于 MySQL 服务器服务的默认端口号。 3306
MYSQL_DEFAULT_CHARACTER_SET 默认 MySQL 字符集。 utf8mb4
MYSQL_DEFAULT_BIND_ADDRESS 默认 MySQL 绑定地址。 0.0.0.0
MYSQL_DISABLE_SERVICE 是否默认禁用MySQL服务。 no

初始化一个新实例

容器可以在第一次启动和每次启动时执行自定义文件。支持扩展名为.sh,.sql和.sql.gz的文件。

  • 在/docker-entrypoint-initdb.d中的文件只会在第一个容器启动时执行。
  • 在/docker-entrypoint-startdb.d中的文件将在每个容器启动时执行。
    为了将自定义文件放入 docker 映像中,可以将它们挂载为卷。

考虑到这些脚本根据扩展名的不同而被不同地对待。当.sh脚本在所有节点执行;和.sql脚本.sql.gz仅在主节点中执行。这种差异背后的原因是.sh脚本允许添加条件来确定运行脚本的节点是什么,而这些条件不能使用.sql或者sql.gz文件来设置。这样就可以根据需要覆盖不同的用例。

注意:如果您要导入大型数据库,建议将它们导入为.sql而不是.sql.gz,因为后者需要即时解压缩并且不允许进行额外的优化来导入大文件。

首次运行时设置 root 密码

可以使用以下环境变量通过设置 root 用户和密码:

  • MYSQL_ROOT_USER:数据库管理员用户。默认为root.
  • MYSQL_ROOT_PASSWORD:数据库管理员用户密码。没有默认值。

在首次运行时会设置以上用户名及密码新。

docker run --name mysql -e MYSQL_ROOT_PASSWORD=qingcloud123 registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通过修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - MYSQL_ROOT_PASSWORD=qingcloud123
  ...

Warning MYSQL_ROOT_USER始终是通过远程访问创建的。建议始终指定 env 变量来为用户MYSQL_ROOT_USER设置密码MYSQL_ROOT_PASSWORD。如果您希望允许MYSQL_ROOT_USER用户无需密码即可访问数据库,请设置环境变量ALLOW_EMPTY_PASSWORD=yes。建议仅用于开发。

允许空密码

默认情况下,要设置所有可用的密码。为了允许空密码,需要设置ALLOW_EMPTY_PASSWORD=yes 环境变量。

docker run --name mysql -e ALLOW_EMPTY_PASSWORD=yes registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通过修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  ...

设置字符集和排序规则

可以使用以下环境变量配置数据库默认使用的字符集和排序规则:

  • MYSQL_CHARACTER_SET:使用的默认字符集。默认:utf8
  • MYSQL_COLLATE:要使用的默认排序规则。默认:utf8_general_ci

首次运行时创建数据库

MYSQL_DATABASE通过在第一次运行镜像时传递环境变量,将创建一个数据库。如果您的应用程序要求数据库已存在,这非常有用,使您不必使用 MySQL 客户端手动创建数据库。

docker run --name mysql \
    -e ALLOW_EMPTY_PASSWORD=yes \
    -e MYSQL_DATABASE=my_database \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通过修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_DATABASE=my_database
  ...

首次运行时创建数据库用户

您可以创建一个受限数据库用户,该用户仅具有使用环境变量创建的数据库的权限MYSQL_DATABASE。为此,请提供MYSQL_USER环境变量并为提供该变量的数据库用户设置密码MYSQL_PASSWORD。MySQL支持不同的身份验证机制,例如caching_sha2_password或mysql_native_password。要设置它,请使用MYSQL_AUTHENTICATION_PLUGIN变量。

docker run --name mysql \
  -e ALLOW_EMPTY_PASSWORD=yes \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_AUTHENTICATION_PLUGIN=mysql_native_password \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通过修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_USER=my_user
      - MYSQL_PASSWORD=my_password
      - MYSQL_DATABASE=my_database
  ...

注意:这里如果要禁用空密码, 可以配置MYSQL_ROOT_PASSWORD 环境变量替代ALLOW_EMPTY_PASSWORD=yes

你可以通过轻云UC 部署工具直接安装部署,也可以手动按如下文档操作
部署配置文件获取地址: https://gitee.com/qingplus/qingcloud-platform

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容