Linux的基本指令
2026/9/13 19:41:35
使用docker compose 详细部署mysql5.7版本数据库详细步骤
环境:Linux Server + Docker + Docker Compose
MySQL 版本:5.7.44
适用场景:测试 / 生产 / 学习 / 云服务器
虽然 MySQL 8.0 已经成为主流,但在大量存量系统中:
因此,掌握一套稳定、规范的 MySQL 5.7 Docker 部署方案仍然非常有价值。
本次部署目标如下:
在服务器上创建如下目录结构:
mysql5.7/ ├── docker-compose.yml ├── data/ # MySQL 数据目录 ├── log/ # MySQL 日志目录 └── config/ └── my.cnf # 自定义配置文件创建目录:
mkdir-p mysql5.7/{data,log,config}cdmysql5.7如果希望自定义docker网络的话,可以运行:
docker network create sql_default计划使用默认的话,就删除下面内容中的关于networks配置的即可:
networks:-sql_default networks:sql_default:external:trueservices:mysql:image:mysql:5.7container_name:mysql57restart:alwaysports:-"13306:3306"environment:TZ:Asia/ShanghaiMYSQL_ROOT_PASSWORD:admin123456volumes:-./data:/var/lib/mysql-./log:/var/log/mysql-./config:/etc/mysql/conf.d-/etc/localtime:/etc/localtime:rocommand:["--character-set-server=utf8mb4","--collation-server=utf8mb4_unicode_ci"]networks:-sql_defaultnetworks:sql_default:external:true不再使用version:字段
Docker Compose v2 已废弃该字段,避免启动警告
配置目录挂载到/etc/mysql/conf.d
不覆盖官方默认配置,更安全、规范
使用 utf8mb4 作为默认字符集
[mysqld] port=3306 user=mysql server-id=1 default-storage-engine=INNODB # 字符集 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake # 时区 default-time-zone='+8:00' # 连接数 max_connections=500 max_connect_errors=1000 # InnoDB innodb_buffer_pool_size=512M innodb_log_file_size=256M innodb_file_per_table=1 innodb_flush_log_at_trx_commit=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 模式(5.7 推荐) sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4如果服务器内存 ≥ 8G,可适当调大
innodb_buffer_pool_size
dockercompose up -d首次启动会自动初始化数据库文件。
查看日志:
dockerlogs mysql57看到如下关键日志,说明初始化成功:
MySQL init process done. Ready for start up.mysql -h127.0.0.1 -P13306-u root -pdockerexec-it mysql57 mysql -uroot -p输入密码:
admin123456能正常进入即表示部署完成。
Warning: Unable to load '/usr/share/zoneinfo/...'这是MySQL 官方镜像的常见警告,对业务无实质影响。
如需彻底消除,可额外挂载:
-/usr/share/zoneinfo:/usr/share/zoneinfo:ro✔ 本方案适用于Linux 服务器
✔ 目录结构清晰、可维护
✔ 符合 MySQL 官方 Docker 镜像设计
✔ 可直接用于生产或教学
✔ 后续可扩展主从、备份、迁移