MySQL docker compose安装配置

本文详细描述了使用DockerCompose配置了一个MySQL8.0.21容器,包括重启策略、权限、镜像、数据卷、环境变量、网络模式以及my.cnf配置文件中的参数设置。

docker-compose.yml

version: '1'
services:
  mysql:
    restart: always
    privileged: true
    image: mysql:8.0.21
    container_name: mysqlServer3306
    volumes:
      - ./db:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/logs
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_USER: "test"
      MYSQL_PASSWORD: "123456"
      MYSQL_INITDB_SKIP_TZINFO: "Asia/Shanghai"
    ports:
      - 3306:3306
    network_mode: "bridge"

conf\my.cnf

###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock


###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# MySQL8 的密码认证插件
default_authentication_plugin=mysql_native_password

# 禁用符号链接以防止各种安全风险
symbolic-links=0

# 允许最大连接数
max_connections=1000

# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0
max_allowed_packet=16M 

# 设置时区
default-time_zone='+8:00'

# binlog 配置
log-bin = /logs/mysql-bin.log
expire-logs-days = 90
max-binlog-size = 500M

# server-id 配置
server-id = 1


###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
使用 Docker Compose 安装 MySQL 可按以下步骤进行: ### 环境准备 在开始之前,需要确保已经安装Docker Compose,如果没有安装或者不熟悉 Compose,可查阅 Docker 实战:使用 Docker Compose 实现高效的多容器部署 [^3]。 ### 目录结构 创建一个名为 `docker-mysql` 的目录,目录结构如下: ```plaintext docker-mysql/ ├── docker-compose.yml └── my.cnf # 可选:自定义配置文件 ``` ### `docker-compose.yml` 配置 `docker-compose.yml` 配置示例如下: ```yaml version: "3.9" services: mysql: image: mysql:8.0 container_name: mysql8 restart: always ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root123456 # root用户密码(必填) MYSQL_DATABASE: demo_db # 自动创建数据库 MYSQL_USER: dev_user # 创建新用户 MYSQL_PASSWORD: dev_pass # 用户密码 volumes: - ./data:/var/lib/mysql # 数据持久化路径 - ./my.cnf:/etc/mysql/conf.d/my.cnf # 可选:自定义配置 networks: - mysql_net networks: mysql_net: driver: bridge ``` 参数详解: - `image`:使用官方的 `mysql:8.0` 镜像。 - `container_name`:容器名称。 - `restart: always`:容器异常退出后自动重启。 - `ports`:主机与容器的端口映射,默认 MySQL 为 3306。 - `environment`:配置 MySQL 初始参数(环境变量)。 - `volumes`:挂载数据和配置,确保持久化。 - `networks`:自定义网络,支持多服务联通 [^5]。 ### `my.cnf` 自定义配置(可选) 如果需要自定义配置,可创建 `my.cnf` 文件,示例配置如下: ```plaintext [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION ``` ### 启动 MySQL 容器 在 `docker-mysql` 目录下,执行以下命令启动 MySQL 容器: ```bash docker-compose up -d ``` 通过以上步骤,即可在几分钟内启动一个 MySQL 容器,并开始存储和检索数据。如果需要更多关于使用 DockerDocker Compose 的教程,请查看 Docker 教程 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值