该容器镜像包含 MySQL 5.6 SQL 数据库服务器,适用于 OpenShift 和通用场景。用户可选择基于 RHEL 或 CentOS 的镜像:RHEL 镜像可从 Red Hat Container Catalog 获取,镜像名为 registry.access.redhat.com/rhscl/mysql-56-rhel7;CentOS 镜像可从 Docker Hub 获取,镜像名为 centos/mysql-56-centos7。
本容器镜像提供 MySQL mysqld 守护进程和客户端应用的容器化打包。mysqld 服务器守护进程接受客户端连接,并代表客户端提供对 MySQL 数据库内容的访问。有关 MySQL 项目的更多信息,请访问网站([]
以下示例使用 Red Hat Container Catalog 中的 rhscl/mysql-56-rhel7 镜像。若仅设置必要环境变量且不使用主机目录存储数据库,执行以下命令:
bash$ docker run -d --name mysql_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 rhscl/mysql-56-rhel7
此命令将创建名为 mysql_database 的容器,运行 MySQL 数据库 db,用户凭据为 user:pass,并将容器的 3306 端口映射到主机。若需持久化数据库,添加 -v /host/db/path:/var/lib/mysql/data 参数(/host/db/path 为主机目录,/var/lib/mysql/data 为容器内 MySQL 数据目录)。
首次运行时,若数据目录未初始化,入口脚本将执行 mysql_install_db 并设置必要的数据库用户和密码;若已初始化,则直接启动 mysqld(以 PID 1 运行)。停止容器:docker stop mysql_database。
通过 -e VAR=VALUE 传递环境变量,支持以下参数:
MYSQL_USER:需创建的 MySQL 账户用户名MYSQL_PASSWORD:该账户的密码MYSQL_DATABASE:需创建的数据库名称MYSQL_ROOT_PASSWORD(可选):root 用户密码(默认无密码,仅允许本地连接)MYSQL_LOWER_CASE_TABLE_NAMES(默认:0):设置表名的存储和比较方式MYSQL_MAX_CONNECTIONS(默认:151):最大允许同时客户端连接数MYSQL_MAX_ALLOWED_PACKET(默认:200M):单个数据包或生成/中间字符串的最大大小MYSQL_FT_MIN_WORD_LEN(默认:4):FULLTEXT 索引包含的最小单词长度MYSQL_FT_MAX_WORD_LEN(默认:20):FULLTEXT 索引包含的最大单词长度MYSQL_AIO(默认:1):控制 innodb_use_native_aio 设置(原生 AIO 损坏时使用)MYSQL_TABLE_OPEN_CACHE(默认:400):所有线程的打开表数量MYSQL_KEY_BUFFER_SIZE(默认:32M 或可用内存的 10%):索引块缓冲区大小MYSQL_SORT_BUFFER_SIZE(默认:256K):排序使用的缓冲区大小MYSQL_READ_BUFFER_SIZE(默认:8M 或可用内存的 5%):顺序扫描使用的缓冲区大小MYSQL_INNODB_BUFFER_POOL_SIZE(默认:32M 或可用内存的 50%):InnoDB 缓存表和索引数据的缓冲池大小MYSQL_INNODB_LOG_FILE_SIZE(默认:8M 或可用内存的 15%):日志组中每个日志文件的大小MYSQL_INNODB_LOG_BUFFER_SIZE(默认:8M 或可用内存的 15%):InnoDB 写入日志文件的缓冲区大小MYSQL_DEFAULTS_FILE(默认:/etc/my.cnf):指向替代配置文件的路径MYSQL_BINLOG_FORMAT(默认:statement):binlog 格式,支持 row 和 statementMYSQL_LOG_QUERIES_ENABLED(默认:0):设为 1 启用查询日志通过 -v /host:/container 挂载主机目录到容器,支持以下挂载点:
/var/lib/mysql/data:MySQL 数据目录注意:从主机挂载目录到容器时,需确保挂载目录具有适当权限,且目录的所有者和组与容器内运行的用户 UID 或名称匹配。
当容器运行时设置 --memory 参数且未指定部分参数,其值将基于可用内存自动计算:
MYSQL_KEY_BUFFER_SIZE(默认:10%):key_buffer_sizeMYSQL_READ_BUFFER_SIZE(默认:5%):read_buffer_sizeMYSQL_INNODB_BUFFER_POOL_SIZE(默认:50%):innodb_buffer_pool_sizeMYSQL_INNODB_LOG_FILE_SIZE(默认:15%):innodb_log_file_sizeMYSQL_INNODB_LOG_BUFFER_SIZE(默认:15%):innodb_log_buffer_sizeroot 用户默认无密码,仅允许本地连接。通过 MYSQL_ROOT_PASSWORD 环境变量可设置密码,允许远程连接(本地连接仍无需密码)。若需禁用远程 root 访问,取消设置 MYSQL_ROOT_PASSWORD 并重启容器。
数据库用户(MYSQL_USER)和 root 用户的密码仅支持通过环境变量 MYSQL_PASSWORD 和 MYSQL_ROOT_PASSWORD 更改。通过 SQL 语句或其他方式修改密码会导致环境变量值与实际密码不匹配,容器启动时将重置密码为环境变量值。
默认配置文件路径为 /etc/my.cnf,可通过 MYSQL_DEFAULTS_FILE 环境变量指定替代文件,例如:MYSQL_DEFAULTS_FILE=/etc/mysql/my.cnf。
可通过 source-to-image 扩展镜像。例如,使用 ~/image-configuration/ 中的配置构建自定义镜像 my-mysql-rhel7:
bash$ s2i build ~/image-configuration/ rhscl/mysql-56-rhel7 my-mysql-rhel7
s2i build 传递的目录可包含以下子目录:
mysql-cfg/:存放 mysqld 守护进程的配置文件,会执行 envsubst 以支持环境变量自定义mysql-pre-init/:存放 *.sh 脚本,在 mysqld 启动前执行mysql-init/:存放 *.sh 脚本,在 mysqld 本地启动后执行,可使用 ${mysql_flags} 连接本地守护进程(如 mysql $mysql_flags < dump.sql)脚本中可使用以下变量:
$mysql_flags:连接本地 mysqld 的 mysql 工具参数$MYSQL_RUNNING_AS_MASTER:容器以 run-mysqld-master 命令运行时定义$MYSQL_RUNNING_AS_SLAVE:容器以 run-mysqld-slave 命令运行时定义$MYSQL_DATADIR_FIRST_INIT:数据目录从空初始化时定义s2i build 会将文件复制到镜像的 /opt/app-root/src 目录,覆盖同名默认文件。也可通过 docker run -v ./image-configuration/:/opt/app-root/src/ 挂载目录临时自定义。
通过扩展功能配置 SSL:
sslapp/mysql-certs/),存放证书文件(server-cert-selfsigned.pem、server-key.pem)mysql-cfg/ 中创建配置文件(如 ssl.cnf):
ini[mysqld] ssl-key=${APP_DATA}/mysql-certs/server-key.pem ssl-cert=${APP_DATA}/mysql-certs/server-cert-selfsigned.pem
-v 挂载 sslapp 目录,或使用 s2i 构建新镜像。MySQL 版本格式为 X.Y.Z(如 5.6.23):
重要:升级有风险,建议先备份数据。安全升级方式:用
mysqldump导出数据,在新初始化的数据库中导入;或启动新版本mysqld后执行mysql_upgrade(仅支持相邻版本升级)。
通过 MYSQL_DATADIR_ACTION 变量控制数据目录操作(多值用逗号分隔,按顺序执行):
upgrade-warn(默认):版本不匹配时警告并启动,创建缺失的 mysql_upgrade_info 文件upgrade-auto:检测到前一版本时自动执行 mysql_upgradeupgrade-force:强制执行 mysql_upgrade --force,创建缺失的版本文件optimize:执行 mysqlcheck --optimize(优化所有表)analyze:执行 mysqlcheck --analyze(分析所有表)disable:不执行数据目录版本相关操作默认 binlog 格式为 statement,可通过 MYSQL_BINLOG_FORMAT=row 改为 row 格式。以 run-mysqld-master 命令运行主库时,binlog 将记录行数据变更而非 SQL 语句。
容器内 mysqld 守护进程日志输出到标准输出,可通过以下命令查看:
bashdocker logs <container>
该容器镜像的 Dockerfile 及源码可在 GitHub 获取。仓库中,CentOS 的 Dockerfile 名为 Dockerfile,RHEL 的为 Dockerfile.rhel7。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429