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 的


浙公网安备 33010602011771号