![cover](https://img-blog.csdnimg.cn/img_convert/93aead519c564435a80b80f50ea52764.png)
【Docker】MySQL 容器化部署即相关配置参数详情
MySQL是一个开源的关系型数据库管理系统,常用于Web应用程序的后端数据存储。它支持多种操作系统和编程语言,具有高性能、可靠性和可扩展性等特点。
![](https://csdnimg.cn/release/devpress/public/img/ic-book.4f347164.png)
MySQL标准软件基于Bitnami mysql 构建。当前版本为8.3.0
你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作
配置文件地址: https://gitee.com/qingplus/qingcloud-platform
环境变量
可定制的环境变量
名称 | 描述 | Default Value |
---|---|---|
ALLOW_EMPTY_PASSWORD | 允许 MySQL 访问而无需任何密码 | no |
MYSQL_AUTHENTICATION_PLUGIN | 在第一次初始化期间配置的 MySQL 身份验证插件。 | nil |
MYSQL_ROOT_USER | MySQL 数据库 root 用户。 | root |
MYSQL_ROOT_PASSWORD | MySQL数据库root用户密码。 | nil |
MYSQL_USER | MySQL 数据库用户在第一次初始化期间创建。 | nil |
MYSQL_PASSWORD | 首次初始化期间创建的 MySQL 数据库用户的密码。 | nil |
MYSQL_DATABASE | 在第一次初始化期间创建的 MySQL 数据库。 | nil |
MYSQL_MASTER_HOST | MySQL 主节点的地址。 | nil |
MYSQL_MASTER_PORT_NUMBER | MySQL 主节点的端口号。 | 3306 |
MYSQL_MASTER_ROOT_USER | master主机的MySQL数据库root用户。 | root |
MYSQL_MASTER_ROOT_PASSWORD | master主机的MySQL数据库root用户的密码。 | nil |
MYSQL_MASTER_DELAY | MySQL 数据库复制延迟。 | 0 |
MYSQL_REPLICATION_USER | MySQL 复制数据库用户。 | nil |
MYSQL_REPLICATION_PASSWORD | MySQL 复制数据库用户的密码。 | nil |
MYSQL_PORT_NUMBER | 用于 MySQL 服务器服务的端口号。 | nil |
MYSQL_REPLICATION_MODE | MySQL复制模式。 | 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_ADDRESS | MySQL绑定地址。 | nil |
MYSQL_SQL_MODE | 要启用的 MySQL 服务器 SQL 模式。 | nil |
MYSQL_IS_DEDICATED_SERVER | MySQL 服务器是否将在专用节点上运行。 | 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_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 |
初始化一个新实例
容器可以在第一次启动和每次启动时执行自定义文件。支持扩展名为.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 用户和密码:
在首次运行时会设置以上用户名及密码新。
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
更多推荐
所有评论(0)