Docker 安装 MySQL

安装 8.0

指定

  • 数据卷
  • 配置文件
  • 日志文件夹

配置文件如果不知道自定义什么,只是预留,可以是空文件。

启动

创建映射路径和空的配置文件

mkdir -p \
  /app/mysql/mysql80/conf.d \
  /app/mysql/mysql80/data \
  /app/mysql/mysql80/log

touch /app/mysql/mysql80/conf.d/my.cnf
  • mkdir -p: 创建多个目录,-p 选项确保即使某些目录不存在也不会报错。
  • /app/mysql/mysql80/conf.d: 用于存放 MySQL 配置文件。
  • /app/mysql/mysql80/data: 用于存放 MySQL 数据文件。
  • /app/mysql/mysql80/log: 用于存放 MySQL 日志文件。
  • touch: 创建一个空的配置文件 my.cnf,它将用于后续的配置设置。

启动一个 mysql:8.0

docker run -d \
  --name mysql80 \
  --restart=unless-stopped \
  -p 3306:3306 \
  -v /app/mysql/mysql80/log:/var/log/mysql \
  -v /app/mysql/mysql80/data:/var/lib/mysql \
  -v /app/mysql/mysql80/conf.d:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD='密码' \
  -e TZ='Asia/Shanghai' \
  mysql:8.0.44
  • docker run -d: 启动一个容器并使其在后台运行。
  • --name mysql80: 为容器指定一个名字 mysql80,以便后续引用。
  • --restart=unless-stopped: 设置容器的重启策略,除非手动停止,否则容器会在系统重启时自动启动。
  • -p 3306:3306: 映射容器内的 3306 端口到主机的 3306 端口,允许外部访问 MySQL 服务。
  • -v /app/mysql/mysql80/log:/var/log/mysql: 将主机上的 /app/mysql/mysql80/log 目录挂载到容器内的 MySQL 日志目录 /var/log/mysql
  • -v /app/mysql/mysql80/data:/var/lib/mysql: 将主机上的 /app/mysql/mysql80/data 目录挂载到容器内的 MySQL 数据目录 /var/lib/mysql,存储数据库文件。
  • -v /app/mysql/mysql80/conf.d:/etc/mysql/conf.d: 将主机上的 /app/mysql/mysql80/conf.d 目录挂载到容器内的 MySQL 配置目录 /etc/mysql/conf.d,这样可以在主机上管理 MySQL 配置。
  • -e MYSQL_ROOT_PASSWORD='密码': 设置 MySQL 的 root 用户密码。
  • -e TZ='Asia/Shanghai': 设置容器的时区为 Asia/Shanghai,确保容器内的时间与主机一致。
  • mysql:8.0.44: 使用 MySQL 8.0.44 的 Docker 镜像。

操作

# 查看容器的日志输出,帮助调试容器运行状态
docker logs mysql80

# 进入容器内部,启动一个交互式的 bash shell
docker exec -it mysql80 /bin/bash

# 使用 root 用户登录 MySQL 数据库
mysql -u root -p

# 退出容器
exit

# 强制删除容器 mysql80
docker rm -f mysql80

# 删除本地存储的 MySQL 配置和数据文件
rm -rf /app/mysql/mysql80

启动一个 mysql:8.4

docker run -d \
  --name mysql84 \
  --restart=unless-stopped \
  -p 3306:3306 \
  -v /app/mysql/mysql84/log:/var/log/mysql \
  -v /app/mysql/mysql84/data:/var/lib/mysql \
  -v /app/mysql/mysql84/conf.d:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD='密码' \
  -e TZ='Asia/Shanghai' \
  mysql:8.4.5

安装 5.7

启动一个 mmysql:5.7

这次添加自定义配置

mkdir -p \
  /app/mysql/mysql57/conf.d \
  /app/mysql/mysql57/data \
  /app/mysql/mysql57/log

vi /app/mysql/mysql57/conf.d/my.cnf

文件内容

[mysqld]
interactive_timeout=288000
wait_timeout=288000

lower_case_table_names=1

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqldump]
quick
max_allowed_packet=256M

安装 5.7.44

docker run -d \
  --name mysql57 \
  --restart=unless-stopped \
  -p 3307:3306 \
  -v /app/mysql/mysql57/log:/var/log/mysql \
  -v /app/mysql/mysql57/data:/var/lib/mysql \
  -v /app/mysql/mysql57/conf.d:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD='密码' \
  -e TZ='Asia/Shanghai' \
  mysql:5.7.44 \
  --default-authentication-plugin=mysql_native_password

其中的

 --default-authentication-plugin=mysql_native_password

也可以去掉,使用 Navicat 配置用密码的插件为 mysql_native_password

5.7 的

8.0 的

posted @ 2024-10-14 18:03  ioufev  阅读(105)  评论(0)    收藏  举报