news 2026/5/13 12:19:39

MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)

网盘分享 MySQL-8.0.32 版本 Docker 镜像文件:

链接: https://pan.baidu.com/s/1cubH9dYhtslD7nqZxlYfSA?pwd=r96p 提取码: r96p

Docker部署 MySQL8.0.32 版本

  • 1.部署流程
    • 1.1 导入镜像文件
    • 1.2 创建挂载目录
    • 1.3 添加配置文件
    • 1.4 启动命令
      • 1.4.1 核心配置参数(环境变量)
      • 1.4.2 存储与数据持久化(卷挂载)
      • 1.4.3 网络与端口
      • 1.4.4 容器运行策略
      • 1.4.5 MySQL 服务端参数(直接追加)
  • 2.总结

1.部署流程

1.1 导入镜像文件

# 上传镜像文件并导入镜像dockerload-imysql8.0.32.tar# 输出日志caefa4e45110: Loading layer[==================================================>]112.4MB/112.4MB 5ed69eb31cd7: Loading layer[==================================================>]11.26kB/11.26kB a9805d41c46a: Loading layer[==================================================>]2.359MB/2.359MB 3f772020efc1: Loading layer[==================================================>]13.93MB/13.93MB 08745f0c18ca: Loading layer[==================================================>]7.168kB/7.168kB 0b298ddae18b: Loading layer[==================================================>]3.072kB/3.072kB dffcd75d4203: Loading layer[==================================================>]178.9MB/178.9MB 27fefd67a649: Loading layer[==================================================>]3.072kB/3.072kB 500cc6781b7e: Loading layer[==================================================>]237.2MB/237.2MB a5b118f152bf: Loading layer[==================================================>]17.41kB/17.41kB edddc37f3f38: Loading layer[==================================================>]1.536kB/1.536kB Loaded image: mysql:8.0.32

导入后可以使用命令查看镜像信息:

dockerimages# 镜像信息REPOSITORY TAG IMAGE ID CREATED SIZE mysql8.0.32 412b8cc72e4a2years ago 531MB

1.2 创建挂载目录

为的是便于编辑配置文件和查看日志信息,如果数据库的数据量比较大,也可将数据文件放在容器外(启动容器的时候挂载 data 和 log 目录即可):

# 创建挂载目录mkdir-p/home/mysql/{conf,data,log}

1.3 添加配置文件

懂的都懂,当然也可以不添加配置文件使用默认的:

# 添加配置文件vim/home/jsgx/mysql/conf/my.cnf# 配置文件内容[mysqld]# 默认配置log_bin=mysql-binlogmax_connections=2000join_buffer_size=8Mread_buffer_size=8Mread_rnd_buffer_size=8Minnodb_log_buffer_size=128Minnodb_read_io_threads=8innodb_write_io_threads=8innodb_buffer_pool_size=64Gtable_open_cache=4000secure_file_priv=innodb_log_file_size=1024Minnodb_log_files_in_group=4innodb_flush_log_at_trx_commit=0sync_binlog=2000sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONlower_case_table_names=1[client]port=3306[mysqldump]quickmax_allowed_packet=1024Mnet_buffer_length=64M

1.4 启动命令

在使用 Docker 启动 MySQL 容器时,可通过docker run命令传递多种参数来配置容器的运行环境、网络、存储以及 MySQL 本身的属性。而这些参数可以大致分为Docker 运行参数(控制容器行为)和MySQL 镜像特定参数(控制数据库行为)。

以下是常用的参数详解:

1.4.1 核心配置参数(环境变量)

这些参数通常以-e开头,用于设置 MySQL 的初始配置和用户权限。

参数含义示例
-e MYSQL_ROOT_PASSWORD=yourpassword必填。设置 MySQL 的root用户密码。-e MYSQL_ROOT_PASSWORD=123456
-e MYSQL_ROOT_HOST=%设置允许 root 用户从哪些主机连接。%代表任意主机(即允许远程连接),默认是localhost-e MYSQL_ROOT_HOST=%
-e MYSQL_DATABASE=mydb容器启动时自动创建一个指定名称的数据库。-e MYSQL_DATABASE=test_db
-e MYSQL_USER=myuser创建一个新用户,并赋予对MYSQL_DATABASE指定数据库的操作权限。-e MYSQL_USER=john
-e MYSQL_PASSWORD=mypass配合MYSQL_USER使用,设置新用户的密码。-e MYSQL_PASSWORD=secret
-e TZ=Asia/Shanghai设置容器时区(防止日志或时间字段出现时差问题)。-e TZ=Asia/Shanghai

1.4.2 存储与数据持久化(卷挂载)

使用-v参数将宿主机的目录挂载到容器内,防止容器删除后数据丢失。

  • 数据目录-v /宿主机路径/data:/var/lib/mysql
    • 将 MySQL 的数据文件存储在宿主机,确保数据持久化。
  • 配置文件-v /宿主机路径/conf:/etc/mysql/conf.d
    • 将自定义的.cnf配置文件挂载到容器内,覆盖默认配置(如字符集、连接数)。
  • 日志目录-v /宿主机路径/logs:/var/log/mysql
    • 将日志文件输出到宿主机,便于排查问题。
  • 初始化脚本-v /宿主机路径/init:/docker-entrypoint-initdb.d
    • .sql.sh脚本挂载到此目录,容器首次启动时会自动执行这些脚本(用于初始化表结构或数据)。

1.4.3 网络与端口

  • 端口映射 (-p)
    • 语法:-p 宿主机端口:容器端口
    • 示例:-p 3306:3306(将宿主机的 3306 端口映射到容器的 3306 端口)。
    • 如果宿主机 3306 已被占用,可以映射为其他端口,如-p 3307:3306
  • 容器名称 (--name)
    • 为容器指定一个易记的名称,方便后续管理(如docker stop mysql-container)。

1.4.4 容器运行策略

参数含义
-d后台运行容器(detached mode)。
--restart=always设置容器随 Docker 服务开机自启,或在崩溃后自动重启。
--privileged=true赋予容器高权限(通常在 SELinux 或权限受限的系统中需要)。
--net=host使用宿主机网络模式(不推荐常规使用,会失去网络隔离)。

1.4.5 MySQL 服务端参数(直接追加)

在镜像名称后面直接追加 MySQL 的启动参数,用于覆盖默认配置。

  • 字符集设置
    • --character-set-server=utf8mb4
    • --collation-server=utf8mb4_unicode_ci
  • 大小写不敏感(仅限初始化):
    • --lower_case_table_names=1
  • SQL 模式
    • --sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

这是一个结合了上述大部分最佳实践的启动命令:

dockerrun-d\--namemysql-prod\-p3306:3306\-eMYSQL_ROOT_PASSWORD=StrongPassword123\-eMYSQL_ROOT_HOST=%\-eTZ=Asia/Shanghai\-v/data/mysql/conf:/etc/mysql/conf.d\-v/data/mysql/data:/var/lib/mysql\-v/data/mysql/logs:/var/log/mysql\-v/data/mysql/init:/docker-entrypoint-initdb.d\--restart=always\mysql:8.0\--character-set-server=utf8mb4\--collation-server=utf8mb4_unicode_ci\--lower_case_table_names=1

数据库的版本不同,挂载目录会存在差异,本次测试使用的命令:

dockerrun-d\--namemysql8.0.32\-p3309:3306\-eMYSQL_ROOT_PASSWORD=1234567890\-v/home/mysql/conf/my.cnf:/etc/mysql/my.cnf\-v/home/mysql/data:/var/lib/mysql\-v/home/mysql/log:/logs\--privileged=true\mysql:8.0.32\--lower_case_table_names=1

2.总结

Docker 部署的优点不少,我最看中的是它只需要一行命令即可启动一个 MySQL 实例。不需要手动配置软件源、处理依赖关系,且可以离线部署。而同时,切换 MySQL 版本变得异常简单,只需更换镜像标签(如mysql:5.7切换到mysql:8.0),无需重新安装或担心依赖冲突,极大地提升了部署效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 19:38:45

RHEL 7.x环境下新华三3PAR存储多路径配置避坑指南(含ALUA优化)

RHEL 7.x环境下新华三3PAR存储多路径配置避坑指南(含ALUA优化) 在当今企业级存储环境中,高可用性和性能优化是系统管理员和存储工程师面临的核心挑战。特别是当使用新华三3PAR存储与RHEL 7.x操作系统组合时,正确的多路径配置不仅关…

作者头像 李华
网站建设 2026/4/14 19:36:14

1Panel AI 终端:用自然语言,把 Linux 运维变简单

“还在死记 Linux 命令参数?还在为误输高危命令焦虑?本文详细介绍 1Panel AI 终端功能,输入 ai 自然语言需求,就能生成可直接执行的 Shell 命令,内置高危命令拦截,支持自定义模型配置,零基础也…

作者头像 李华
网站建设 2026/4/14 19:35:34

ngx_worker_process_cycle

1 定义 ngx_worker_process_cycle 函数 定义在 ./nginx-1.24.0/src/os/unix/ngx_process_cycle.cstatic void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data) {ngx_int_t worker (intptr_t) data;ngx_process NGX_PROCESS_WORKER;ngx_worker worker;ngx_worker_…

作者头像 李华
网站建设 2026/4/14 19:34:01

告别命令行!用Streamlit 5分钟为你的ROS机器人做个实时数据仪表盘

告别命令行!用Streamlit 5分钟为你的ROS机器人做个实时数据仪表盘 在机器人开发中,数据可视化往往是项目展示和调试的关键环节。想象一下,当你花费数周时间终于让机器人能够稳定行走后,如何向团队成员或投资人直观展示它的实时状态…

作者头像 李华
网站建设 2026/5/3 22:36:39

VR星际行走平台|沉浸式科普教育与未来体验的新入口

在科技高速发展的今天,虚拟现实技术已经逐渐从“酷炫娱乐”走向“深度教育”,成为现代科普与展示类场馆必不可少的互动载体。在众多VR设备中,VR星际行走平台凭借其突破传统的原地万向行走技术和高度沉浸式体验方式,正成为科普教育…

作者头像 李华