Docker 搭建 MySQL 服务教程

wxh Lv3

本文档指导您如何使用 Docker Compose 快速搭建一套经过优化的 MySQL 服务。本教程基于您提供的配置文件,包含字符集设置及自定义性能优化。

1. 前置准备

确保您的服务器或本地环境已安装:

  • Docker
  • Docker Compose

2. 目录结构规划

为了配合 docker-compose.yml 中的挂载路径,我们需要按以下结构创建目录和文件:

1
2
3
4
5
6
7
project-root/
├── docker-compose.yml # 主编排文件
├── data/ # 数据库数据存放目录(自动生成)
└── config/ # 配置文件目录
├── my.cnf # MySQL 主配置文件
└── conf.d/ # 子配置文件目录
└── my_local.cnf # 自定义性能优化配置

在终端中执行以下命令快速创建目录结构:

1
2
mkdir -p config/conf.d
mkdir -p data

3. 配置文件创建

3.1 创建主配置文件 config/my.cnf

此文件定义了 MySQL 的基础路径和加载规则。

路径: ./config/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv = NULL
# default_authentication_plugin = mysql_native_password
# mysql-native-password = ON
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 引入自定义配置目录
!includedir /etc/mysql/conf.d/

3.2 创建性能优化文件 config/conf.d/my_local.cnf

此文件包含内存限制和连接数优化,适合资源有限的环境(如 1G-2G 内存的服务器)。

路径: ./config/conf.d/my_local.cnf

1
2
3
4
5
6
7
8
9
10
[mysqld]
tmp_table_size = 32M
innodb_thread_concurrency = 2
max_connections = 32
performance_schema_max_table_instances = 400 # 设置效果不明显
table_definition_cache = 400
performance_schema = off # 关闭性能模式以节省内存,效果明显
table_open_cache = 64
innodb_buffer_pool_chunk_size = 64M # 效果不明显
innodb_buffer_pool_size = 64M # 效果不明显

3.3 创建 docker-compose.yml

路径: ./docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
services:
mysql:
image: mysql:lts
restart: always
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: 123456 # 请修改为更复杂的密码
TZ: Asia/Shanghai
ports:
- "3306:3306"
- "33060:33060"
expose:
- 3306
- 33060
volumes:
- ./data:/var/lib/mysql
- ./config/my.cnf:/etc/mysql/my.cnf
- ./config/conf.d:/etc/mysql/conf.d
command:
--max_connections=32
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--mysql-native-password=ON
#--skip-grant-tables

4. 启动服务

docker-compose.yml 所在目录下执行:

1
docker-compose up -d

5. 验证与维护

查看运行日志

如果容器启动失败,请第一时间查看日志:

1
docker-compose logs -f

连接数据库测试

使用任意 MySQL 客户端连接:

  • Host: localhost (或服务器 IP)
  • Port: 3306
  • Username: root
  • Password: 123456 (或您修改后的密码)

常用命令

1
2
3
4
5
6
7
8
# 停止服务
docker-compose down

# 重启服务
docker-compose restart

# 进入容器内部
docker exec -it mysql bash

6. 配置说明与注意事项

  1. 字符集:启动命令中强制指定了 utf8mb4,这是现代 Web 应用(支持 Emoji)的标准配置。
  2. 身份验证:使用了 --mysql-native-password=ON,这确保了旧版 MySQL 客户端也能顺利连接(MySQL 8.0+ 默认使用 caching_sha2_password,有时会导致旧客户端连接报错)。
  • 标题: Docker 搭建 MySQL 服务教程
  • 作者: wxh
  • 创建于 : 2025-12-24 00:00:00
  • 更新于 : 2026-01-03 12:33:28
  • 链接: https://blog.private-cloud.site/2025/12/24/Mysql服务搭建教程/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论