news 2026/6/10 9:19:24

Docker Compose 部署 MySQL 8.4 LTS(生产级实践方案)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker Compose 部署 MySQL 8.4 LTS(生产级实践方案)

前言:

使用docker compose 详细部署mysql8.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}cdmysql8.4

如果希望自定义docker网络的话,可以运行:

docker network create sql_default

计划使用默认的话,就删除下面内容中的关于networks配置的即可:

networks:-sql_default networks:sql_default:external:true

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

services:mysql:image:mysql:8.4.5container_name:mysql84restart:alwaysports:-"3306:3306"environment:TZ:Asia/ShanghaiMYSQL_ROOT_PASSWORD:admin123456volumes:-./data:/var/lib/mysql-./log:/var/log/mysql-./conf:/etc/mysql/conf.d-/etc/localtime:/etc/localtime:rocommand:["--character-set-server=utf8mb4","--collation-server=utf8mb4_0900_ai_ci"]networks:-sql_defaultnetworks: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文件在同一目录

dockercompose up -d

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


七、启动成功的“关键信号”

查看日志:

dockerlogs mysql84

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

MySQL init process done. Ready for start up.

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


八、连接验证

宿主机连接

mysql -h127.0.0.1 -P3306-u root -p

容器内连接(推荐)

dockerexec-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 部署简单可控
✔ 避开旧版本配置是关键
✔ 本文方案可直接用于生产


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

Ansys SpaceClaim 2025 R2 软件学习(DAY1):界面与功能详解

每日更新教程,评论区答疑解惑,小白也能变大神!" 目录 第一章:界面总体布局与核心理念 第二章:顶部菜单栏详解 1. 文件 2. 草图 3. 设计 4. 显示 5. 组件 6. 测量 7. 面片 8. 修复 9. 准备 10. 详细 …

作者头像 李华
网站建设 2026/6/10 7:03:22

爆火的 “死了么” APP安装包来了

“死了么”是一款名字带黑色幽默的轻量化安全提醒APP,核心功能简洁好上手:用户填写姓名及紧急联系人邮箱,设定每日签到时间, 软件下载地址 若连续48小时未签到,系统会自动给联系人发送邮件,提醒对方“可能…

作者头像 李华
网站建设 2026/6/9 23:22:01

【计算机毕业设计案例】基于springboot的康复医院护工管理平台护工管理便捷服务系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 8:07:59

Python中的Statsmodels:统计建模与假设检验

一、什么是 Statsmodels? statsmodels(全称:Statistical Models)是一个基于 NumPy、SciPy 和 pandas 构建的 Python 库,主要用于: 拟合统计模型(如线性回归、逻辑回归、广义线性模型&#xff…

作者头像 李华