在宿主机上创建用于挂载的目录结构。这包括数据目录、配置文件目录、日志目录以及 MySQL 8.0 所需的 mysql-files目录

mkdir -p /home/tools/mysql8/{data,conf,logs,mysql-files}

创建一个自定义的 MySQL 配置文件 (my.cnf),以便更好地控制 MySQL 的行为。

vi /home/tools/mysql8/conf/my.cnf

将以下配置内容写入my.cnf文件。此配置设置了 UTF-8 字符集、时区以及其他常用参数

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
# 基础设置
user = mysql
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-name-resolve
default_authentication_plugin = mysql_native_password  # 确保兼容旧版客户端[2,11](@ref)

# 连接和限制
max_connections = 1000
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 表名大小写 (Linux 环境下通常设为 1 以忽略大小写)[1,10](@ref)
lower_case_table_names = 1
max_allowed_packet = 100M
# 时区设置
default-time-zone = '+08:00'

使用 docker run命令启动 MySQL 8.0 容器,并将宿主机上的目录挂载到容器中对应的路径

docker run -d \
  --name mysql8.0 \
  -p 3308:3306 \
  -v /home/tools/mysql8/data:/var/lib/mysql \
  -v /home/tools/mysql8/conf:/etc/mysql/conf.d \
  -v /home/tools/mysql8/logs:/var/log/mysql \
  -v /home/tools/mysql8/mysql-files:/var/lib/mysql-files \
  -v /etc/localtime:/etc/localtime:ro \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e TZ=Asia/Shanghai \
  --restart=unless-stopped \
  mysql:8.0

附 my.cnf 配置项报错处理

报错
Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes

MySQL根据配置文件会限制Server接受的数据包大小。大的数据插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。

max_allowed_packet的单位为字节
查询
show VARIABLES like '%max_allowed_packet%';|
show VARIABLES like 'max_allowed_packet';|
配置文件添加
max_allowed_packet = 100M

更多推荐