Docker部署MySQL

14 篇文章 0 订阅

1 Docker配置文件

1.1 docker-compose.yml

使用Docker Compose编排MySQL,如下:

version: '3'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql-5.7
    privileged: true
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_USER: xindaqi
      MYSQL_PASS: 123456
      TZ: Asia/Shanghai
    command:
      --wait_timeout=28800
      --interactive_timeout=28800
      --max_connections=1000
      --default-authentication-plugin=mysql_native_password
    volumes:
      - "/home/xindaqi/mysql-5.7/data:/var/lib/mysql"
      - "/home/xindaqi/mysql-5.7/config/my.cnf:/etc/mysql/my.cnf"

1.2 参数解析

序号参数描述
1imageMySQL对应版本的镜像
2container_name容器名称
3privileged授权
4restart重启MySQL容器,always,启动失败时一直尝试重启
5portsMySQL运行端口,格式:host-port:docker-port
6environmentMySQL环境,包括用户名和密码
7command连接超时配置及授权配置
8volumesDocker容器中的MySQL数据挂载到宿主机路径,格式:host-path:docker-path
9/var/lib/mysql数据库文件路径
10/etc/mysql/my.cnf数据库配置文件路径

2 MySQL配置

在挂载MySQL配置文件的目录下添加配置文件
/home/xindaqi/mysql-5.7/config/my.cnf:

[client]
# 客户端来源数据的默认字符集
default-character-set=utf8mb4

[mysqld]
# 服务端默认字符集
character-set-server=utf8mb4
# 连接层默认字符集
collation-server=utf8mb4_unicode_ci

[mysql]
# 数据库默认字符集
default-character-set=utf8mb4

3 启停

  • 前台启动
docker-compose -f docker-compose.yml up 
  • 守护进程启动
docker-compose -f docker-compose.yml up -d
  • 停止
docker-compse -f docker-compose.yml stop
  • 停止并删除容器
docker-compose -f docker-compose.yml down

4 连接MySQL

4.1 MySQL控制台

# 进入docker-compse.yml文件夹执行命令
docker-compose exec mysql bash
mysql -u root -p123456

在这里插入图片描述

4.2 Workbench连接

在这里插入图片描述
在这里插入图片描述

5 Q&A

5.1 启动异常

  • 描述
    mysql-5.7 | 2022-06-11 10:24:17+08:00 [Note] [Entrypoint]: Switching to dedicated user ‘mysql’
    mysql-5.7 | 2022-06-11 10:24:17+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.38-1debian10 started.
    mysql-5.7 | 2022-06-11 10:24:17+08:00 [ERROR] [Entrypoint]: MYSQL_USER=“root”, MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user
    mysql-5.7 | Remove MYSQL_USER=“root” and use one of the following to control the root user password:
    mysql-5.7 | - MYSQL_ROOT_PASSWORD
    mysql-5.7 | - MYSQL_ALLOW_EMPTY_PASSWORD
    mysql-5.7 | - MYSQL_RANDOM_ROOT_PASSWORD

  • 原因
    MYSQL_USER参数使用root

  • 方案
    MYSQL_USER使用其他用户,如xindaqi

5.2 启动异常

  • 描述
    Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting “/home/xindaqi/install/mysql/config/my.cnf” to rootfs at “/etc/mysql/my.cnf”: mount /home/xindaqi/install/mysql/config/my.cnf:/etc/mysql/my.cnf (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
  • 原因
    文件挂载失败,没有在宿主机新建配置文件:my.cnf,如上
  • 方案
    在挂载的宿主机新建配置文件:my.cnf如上。

5.3 进入MySQL控制台异常

  • 描述
    no configuration file provided: not found
  • 原因
    执行:docker-compose exec mysql bash时没有指定docker-compse.yml文件
  • 方案
    在docker-compse.yml文件路径下执行:docker-compose exec mysql bash

6 小结

(1)必须将容器的数据库挂载到宿主机目录;
(2)宿主机添加my.cnf配置文件;
(3)进入MySQL控制台需通过docker compose命令:docker-compose exec mysql bash
(4)停止当前容器时,选择stop仅停止,选择down会删除当前镜像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值