拉取镜像

docker pull mysql:8.0.43

在所需文件(D:\soft\docker-data\mysql.8.0.43)下创建docker-compose.yml

services:
  mysql:
    image: mysql:8.0.43
    container_name: mysql8.0.43  # 明确指定容器名称
    restart: unless-stopped       # 更灵活的自动重启策略
    environment:
      - MYSQL_ROOT_PASSWORD=Admin@123  # 实际密码需替换
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/var/log/mysql
    ports:
      - "13308:3306"
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --lower_case_table_names=1
      - --explicit_defaults_for_timestamp=1

创建data、conf、logs 三个文件夹

在conf下创建my.cnf

[mysqld]

#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1


#服务端口号 默认3306
port=3306

#mysql数据文件所在位置
datadir=/var/lib/mysql

#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci

#是否对sql语句大小写敏感,0敏感 1不敏感
lower_case_table_names=1

#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true

# 启用二进制日志并指定日志文件路径
# 路径:binlog文件的存储路径和前缀
# 不设置此参数则禁用binlog
log_bin = /var/log/mysql/mysql-bin.log

# 二进制日志格式(重要选择)
# 可选值:ROW, STATEMENT, MIXED
#   ROW     : 记录行的更改(推荐,数据安全)
#   STATEMENT: 记录SQL语句(可能主从不一致)
#   MIXED   : 混合模式,多数使用ROW,部分使用STATEMENT
binlog_format = ROW

# binlog文件过期时间
# 单位:天
# 自动删除超过指定天数的binlog文件,防止磁盘占满
expire_logs_days = 7

# 关闭通用日志(0默认关闭,1默认开启)
general_log = 0

#数据库错误日志文件
log-error=/var/log/mysql/error_log.log

#慢查询sql日志设置(0默认关闭,1默认开启)
slow_query_log=1
#慢日志路径
slow_query_log_file=/var/log/mysql/show_query.log

[client]
default-character-set=utf8mb4

启动docker-compose

docker-compose up -d

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐