跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

Docker Compose 部署 MySQL 8.4 LTS 生产环境指南

基于 Docker Compose 部署 MySQL 8.4 LTS 数据库的生产级实践方案。涵盖目录结构设计、docker-compose.yml 配置、my.cnf 参数设置及启动验证步骤。重点说明 MySQL 8.4 移除旧版参数的注意事项,如 default-authentication-plugin,并提供常见启动报错解决方案。支持 Linux 与 macOS ARM 环境,确保数据持久化与日志管理。

二进制发布于 2026/2/22更新于 2026/5/3139 浏览
Docker Compose 部署 MySQL 8.4 LTS 生产环境指南

前言

使用 Docker Compose 详细部署 MySQL 8.4 版本数据库的步骤。

  • 环境:Linux Server / macOS(ARM)
  • MySQL 版本:8.4.5(LTS)
  • 部署方式:Docker Compose
  • 适用场景:新项目 / 长期维护系统 / ARM & x86 环境

一、为什么选择 MySQL 8.4 LTS?

MySQL 8.4 是官方长期支持版本(LTS),相比 8.0.x 的创新版本:

  • ✅ 更稳定,维护周期更长
  • ✅ 官方明确推荐用于生产
  • ✅ 原生支持 ARM(Apple Silicon / 云 ARM 实例)
  • ✅ 新项目首选版本

⚠️ 注意: MySQL 8.4 已经移除了部分 8.0 早期参数,直接照抄旧配置很容易启动失败(本文重点避坑)。


二、本次部署目标

  • 使用 Docker Compose 部署 MySQL 8.4.5
  • 目录使用相对路径 ./ 挂载
  • 数据 / 日志 / 配置完全持久化
  • 避开 MySQL 8.4 的常见启动坑
  • 可在 Linux / macOS ARM 正常运行

三、目录结构设计(推荐)

mysql8.4/
├── docker-compose.yml
├── data/          # 数据目录
├── log/           # 日志目录
└── conf/
    └── my.cnf     # 配置文件

创建目录:

mkdir -p mysql8.4/{data,log,conf}
cd mysql8.4

如需自定义 Docker 网络,可运行:

docker network create sql_default

若计划使用默认网络,请删除 docker-compose.yml 中的 networks 配置。


四、docker-compose.yml(MySQL 8.4 推荐版)

services:
  mysql:
    image: mysql:8.4.5
    container_name: mysql84
    restart: always
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: admin123456
    volumes:
      - ./data:/var/lib/mysql
      - ./log:/var/log/mysql
      - ./conf:/etc/mysql/conf.d
      - /etc/localtime:/etc/localtime:ro
    command:
      ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_0900_ai_ci"]
    networks:
      - sql_default

networks:
  sql_default:
    external: true
⚠️ 重点说明(8.4 必看)

❌ 不要再加这个参数:

--default-authentication-plugin=mysql_native_password 

在 MySQL 8.4 中已被移除,会直接导致启动失败:

unknown variable 'default-authentication-plugin'

五、MySQL 8.4 专用配置文件(conf/my.cnf)

可选,不配置使用默认也可以。

[mysqld]
port=3306
user=mysql
server-id=1
# 字符集(8.4 默认 utf8mb4)
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
# 时区
default-time-zone='+8:00'
# 连接数
max_connections=500
# InnoDB
innodb_buffer_pool_size=512M
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1
innodb_file_per_table=1
# 日志
log-error=/var/log/mysql/error.log
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=2
# SQL 模式(8.x 推荐)
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

💡 MySQL 8.4 默认使用 caching_sha2_password,无需手动配置


六、启动 MySQL 8.4 容器

运行命令要跟 docker-compose.yml 文件在同一目录

docker compose up -d

首次启动会进行数据库初始化。


七、启动成功的'关键信号'

查看日志:

docker logs mysql84

出现以下日志,说明 初始化与启动全部成功:

MySQL init process done. Ready for start up.

这样的日志正是标准成功流程。


八、连接验证

宿主机连接
mysql -h 127.0.0.1 -P 3306 -u root -p
容器内连接(推荐)
docker exec -it mysql84 mysql -uroot -p

九、常见问题 & 避坑总结(8.4 特有)

1️⃣ 启动失败:unknown variable

原因:

  • 使用了 8.0 / 5.7 的旧参数
  • 8.4 已移除部分变量

解决:

  • 删除 default-authentication-plugin
  • 只保留 8.4 官方支持参数
2️⃣ lower_case_table_names 警告
Setting lower_case_table_names=2 because file system is case insensitive

说明:

  • macOS / Docker Desktop 常见
  • Linux 服务器一般不会出现
  • 不影响使用
3️⃣ 时区 Warning 是否影响?
Unable to load '/usr/share/zoneinfo/...'
  • 仅影响 CONVERT_TZ()
  • 业务无影响
  • 可选择忽略

十、5.7 vs 8.4 LTS 简要对比

对比项MySQL 5.7MySQL 8.4 LTS
生命周期即将 EOL官方长期支持
ARM 支持❌✅
默认认证mysql_native_passwordcaching_sha2_password
JSON基础更强
推荐新项目❌✅

十一、总结

✔ MySQL 8.4 是新项目首选 ✔ Docker Compose 部署简单可控 ✔ 避开旧版本配置是关键

目录

  1. 前言
  2. 一、为什么选择 MySQL 8.4 LTS?
  3. 二、本次部署目标
  4. 三、目录结构设计(推荐)
  5. 四、docker-compose.yml(MySQL 8.4 推荐版)
  6. ⚠️ 重点说明(8.4 必看)
  7. 五、MySQL 8.4 专用配置文件(conf/my.cnf)
  8. 字符集(8.4 默认 utf8mb4)
  9. 时区
  10. 连接数
  11. InnoDB
  12. 日志
  13. SQL 模式(8.x 推荐)
  14. 六、启动 MySQL 8.4 容器
  15. 七、启动成功的“关键信号”
  16. 八、连接验证
  17. 宿主机连接
  18. 容器内连接(推荐)
  19. 九、常见问题 & 避坑总结(8.4 特有)
  20. 1️⃣ 启动失败:unknown variable
  21. 2️⃣ lowercasetable_names 警告
  22. 3️⃣ 时区 Warning 是否影响?
  23. 十、5.7 vs 8.4 LTS 简要对比
  24. 十一、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • RAG 应用构建与优化:解决检索召回与上下文窗口问题
  • Spring Cloud 商品服务核心实现:库存、缓存与分布式锁
  • Stable Diffusion 3 Medium 模型特性与 ComfyUI 部署指南
  • 人工智能与数据分析的关系及 Python Pandas 快速入门
  • 实时控制程序开发:从算法到确定性执行
  • 无人机低空智能巡飞巡检平台:全域感知与智能决策
  • ChatGPT Prompt Hacker 技巧:优化简历通过 AI 筛选
  • Flutter 三方库 webkit_inspection_protocol 在鸿蒙系统的适配指南
  • OpenCode 命令行 AI 编程代理使用指南
  • Docker 基础:虚拟化原理与容器化实战
  • Python 驱动的 ADS 自动化仿真框架与 API 实战指南
  • Stable Diffusion WebUI 基于云主机 RTX 5090 的部署指南
  • JUnit NoSuchMethodError 报错及 Spring Boot 版本兼容修复方案
  • 无人机航拍小目标检测:YOLO11 实战与 PyQt6 桌面应用
  • Webots R2023b 安装配置与 Python 环境搭建教程
  • 逆向工程中的 Hash 算法识别与破解
  • Blender 复杂物体减面流程与 Python 自动化实现
  • C++ 搜索二叉树:特性、实现与应用
  • 二分查找算法:x 的平方根与搜索插入位置
  • Spring Boot Web 三大核心交互实战:表单、AJAX 与 JSON

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online