【Docker】MySQL 容器化部署即相关配置参数详情

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

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

Qinghub Studio 在线体验

环境变量

可定制的环境变量
名称描述Default Value
ALLOW_EMPTY_PASSWORD允许 MySQL 访问而无需任何密码no
MYSQL_AUTHENTICATION_PLUGIN在第一次初始化期间配置的 MySQL 身份验证插件。nil
MYSQL_ROOT_USERMySQL 数据库 root 用户。root
MYSQL_ROOT_PASSWORDMySQL数据库root用户密码。nil
MYSQL_USERMySQL 数据库用户在第一次初始化期间创建。nil
MYSQL_PASSWORD首次初始化期间创建的 MySQL 数据库用户的密码。nil
MYSQL_DATABASE在第一次初始化期间创建的 MySQL 数据库。nil
MYSQL_MASTER_HOSTMySQL 主节点的地址。nil
MYSQL_MASTER_PORT_NUMBERMySQL 主节点的端口号。3306
MYSQL_MASTER_ROOT_USERmaster主机的MySQL数据库root用户。root
MYSQL_MASTER_ROOT_PASSWORDmaster主机的MySQL数据库root用户的密码。nil
MYSQL_MASTER_DELAYMySQL 数据库复制延迟。0
MYSQL_REPLICATION_USERMySQL 复制数据库用户。nil
MYSQL_REPLICATION_PASSWORDMySQL 复制数据库用户的密码。nil
MYSQL_PORT_NUMBER用于 MySQL 服务器服务的端口号。nil
MYSQL_REPLICATION_MODEMySQL复制模式。nil
MYSQL_REPLICATION_SLAVE_DUMP在主 MySQL 数据库上进行转储并更新从属 MySQL 数据库false
MYSQL_EXTRA_FLAGS启动 MySQL 服务器时需要传递的额外标志。nil
MYSQL_INIT_SLEEP_TIME等待 MySQL 初始化配置操作完成时的睡眠时间。nil
MYSQL_CHARACTER_SET要使用的 MySQL 排序规则。nil
MYSQL_COLLATE要使用的 MySQL 排序规则。nil
MYSQL_BIND_ADDRESSMySQL绑定地址。nil
MYSQL_SQL_MODE要启用的 MySQL 服务器 SQL 模式。nil
MYSQL_IS_DEDICATED_SERVERMySQL 服务器是否将在专用节点上运行。nil
MYSQL_CLIENT_ENABLE_SSL是否强制使用 SSL 来连接 MySQL 数据库。no
MYSQL_CLIENT_SSL_CA_FILE用于与 MySQL 数据库服务器进行 SSL 连接的 CA 证书的路径。nil
MYSQL_CLIENT_SSL_CERT_FILE用于与 MySQL 数据库服务器进行 SSL 连接的客户端公钥证书的路径。nil
MYSQL_CLIENT_SSL_KEY_FILE用于与 MySQL 数据库服务器进行 SSL 连接的客户端私钥的路径。nil
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
只读环境变量
名称描述默认值
DB_FLAVORSQL 数据库风格。有效值:mariadb或mysql。mysql
DB_BASE_DIRMySQL 文件的基本路径。${BITNAMI_ROOT_DIR}/mysql
DB_VOLUME_DIR持久文件的 MySQL 目录。${BITNAMI_VOLUME_DIR}/mysql
DB_DATA_DIRMySQL 数据文件目录。${DB_VOLUME_DIR}/data
DB_BIN_DIR可执行二进制文件所在的 MySQL 目录。${DB_BASE_DIR}/bin
DB_SBIN_DIR服务二进制文件所在的MySQL目录。${DB_BASE_DIR}/bin
DB_CONF_DIRMySQL 配置目录。${DB_BASE_DIR}/conf
DB_DEFAULT_CONF_DIRMySQL默认配置目录。${DB_BASE_DIR}/conf.default
DB_LOGS_DIRMySQL 日志目录。${DB_BASE_DIR}/logs
DB_TMP_DIRMySQL 临时文件目录。${DB_BASE_DIR}/tmp
DB_CONF_FILE主要 MySQL 配置文件。${DB_CONF_DIR}/my.cnf
DB_PID_FILEMySQL PID 文件。${DB_TMP_DIR}/mysqld.pid
DB_SOCKET_FILEMySQL 服务器套接字文件。${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

初始化一个新实例

容器可以在第一次启动和每次启动时执行自定义文件。支持扩展名为.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

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

  • 45
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker是一个开放源代码的虚拟平台,能够以容器的形式打包和分发应用程序。MySQL是一种流行的开源关系型数据库管理系统。使用Docker部署MySQL可以极大简安装和配置的过程,并且能够实现数据的持久。 首先,我们需要在Docker上搜索并选择适合的MySQL镜像。可以通过运行`docker search mysql`命令来查找可用的MySQL镜像。选择合适的镜像后,可以通过`docker pull <镜像名称>`来下载镜像,例如`docker pull mysql:latest`。 下载完成后,我们可以运行以下命令来创建一个MySQL容器: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest ``` 这个命令将会创建一个名为mysql容器,并将MySQL服务的默认端口3306映射到宿主机的3306端口。同样,我们可以设置一个root密码,让MySQL服务有一个基本的访问控制。 这样,MySQL容器就成功运行起来了。我们可以通过`docker ps`命令来查看正在运行的容器。接下来,我们可以使用MySQL客户端连接到该容器。可以通过以下命令登录到MySQL容器内部的MySQL服务: ``` docker exec -it mysql mysql -uroot -p ``` 然后,我们可以在MySQL容器内部使用标准的MySQL命令来管理和操作数据库。 要实现数据的持久,我们可以将MySQL容器内部的数据目录和宿主机的目录进行挂载。可以使用`-v`参数来指定目录的挂载点。例如: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql/data:/var/lib/mysql -d mysql:latest ``` 这将会将MySQL容器内部的`/var/lib/mysql`目录与宿主机上的`/path/to/mysql/data`目录进行挂载,从而实现数据的持久。 通过以上步骤,我们可以使用Docker部署MySQL,并且实现数据的持久。这样,我们可以方便地在不同的环境之间快速部署和迁移MySQL数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值