保姆级教程:使用Docker部署MySQL镜像
创作时间:
作者:
@小白创作中心
保姆级教程:使用Docker部署MySQL镜像
引用
CSDN
1.
https://blog.csdn.net/BigCookies/article/details/144940442
本文将详细介绍如何使用Docker部署MySQL镜像,包括安装Docker及可视化工具、创建挂载目录、准备配置文件、运行MySQL容器、使用Compose运行MySQL容器、查看MySQL运行状态以及常见问题解答。
1. 安装Docker及可视化工具
Docker及可视化工具的安装可参考:Ubuntu上安装 Docker及可视化管理工具
2. 创建挂载目录
# 创建宿主机mysql挂载目录
sudo mkdir -p /data/docker/mysql/config
3. 准备配置文件
# 1.创建配置文件
sudo touch /data/docker/mysql/config/my.cnf
配置文件的内容如下:
[mysqld]
# 设置3306端口
port=3306
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M
# === 日志相关 ===
## >>> 错误日志
# 错误日志存放文件,默认 datadir 目录下
log_error=/var/log/mysql/log-error.log
# 开启事务中所有死锁的InnoDB信息记录在错误日志中
innodb_print_all_deadlocks=ON
## >>> 二进制日志
# 二进制日志文件基础名称以及路径,默认 datadir 目录下
log_bin=/var/log/mysql/log-bin
## >>> 慢查询日志
# 开启慢查询日志,默认OFF,建议开发和测试环境开启
slow_query_log=ON
# 慢查询日志文件位置
slow_query_log_file=/var/log/mysql/log-slow.log
# 慢查询时间阈值,默认10,单位:秒
long_query_time=10
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
4. 运行MySQL容器
# 1.拉取镜像
sudo docker pull mysql:8.0.40
# 2.启动镜像
sudo docker run --privileged=true --net=bridge \
-p 3306:3306 \
--name mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
-v /data/docker/mysql/config:/etc/mysql/conf.d \
-v /data/docker/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root@123 \
-e TZ=Asia/Shanghai \
-d mysql:8.0.40
参数解析如下:
参数 | 参数说明 |
|---|---|
docker run | 运行 Docker 容器 |
--name mysql | 设置容器的名称为mysql |
-d mysql:8.0.40 | 后台运行mysql容器 |
--privileged=true | Docker会赋予容器几乎与宿主机相同的权限 |
--net=bridge | 网络模式配置,默认是bridge,bridge表示使用容器内部配置网络 |
-p 3306:3306 | 将主机的 3306 端口映射到容器的 3306 端口 |
-e MYSQL_ROOT_PASSWORD=root@123 | 设置 mysql 的管理员账号密码为 root@123 |
-e TZ=Asia/Shanghai | 设置容器的时区为上海时间,便于处理时间相关的数据 |
-v /data/docker/mysql/data:/var/lib/mysql | 将主机data目录挂载到容器内,用于数据持久化 |
-v /data/docker/mysql/log:/var/log/mysql | 将主机log目录挂载到容器内,用于日志文件持久化 |
-v /data/docker/mysql/config:/etc/mysql/conf.d | 将主机中 /data/docker/mysql/config 目录映射到容器内的 /etc/mysql/conf.d 目录,这样可以提供自定义的 mysql 配置文件 |
容器运行参数详解参考:Docker容器运行常用参数详解-CSDN博客
5. 使用Compose运行MySQL容器
创建docker-compose.yml文件
sudo touch /data/docker/mysql/docker-compose.yml
文件内容如下:
version: '3'
services:
mysql:
image: mysql:8.0.40
container_name: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root@123
TZ: Asia/Shanghai
volumes:
- /data/docker/mysql/data:/var/lib/mysql
- /data/docker/mysql/config:/etc/mysql/conf.d
- /data/docker/mysql/log:/var/log/mysql
privileged: true
network_mode: "bridge"
运行容器
#-f:调用文件,-d:开启守护进程
sudo docker compose -f /data/docker/mysql/docker-compose.yml up -d
6. 查看MySQL运行状态
7. 常见问题
7.1. 用DBeaver 连接数据库的时候出现Public Key Retrieval is not allowed
解决方案:连接设置 - 驱动属性 ,找到allowPublicKeyRetrieval,把allowPublicKeyRetrieval的值设为 切换为 true 即可。
热门推荐
大连:人脸识别助力食堂精准供餐,减少食品浪费
海南官塘温泉度假攻略:养生温泉与周边景点
港大2025内地招生:高考成绩可报读,设多元卓越入学计划
沟通、分析、领导力:商科人才的七大核心能力
科学饮食助你蹿高,告别矮个子烦恼
除夕年夜饭,舌尖上的河源“美食”
乾隆帝的五世同堂传奇:从古稀之年到六世同堂的期盼
洋山深水港年吞吐量首破2600万标箱,自动化创新与绿色航运双引领
中山大学研究:鱼油补充剂或增加健康人群心血管风险
荆门旅游攻略:从岳飞城到漳河,三日玩遍荆楚名城
农村化粪池:污水处理的环保卫士
《柳叶刀》子刊重磅研究:禽肉、红肉和加工肉都与2型糖尿病风险增加有关
春节食品安全攻略来喽,请查收!
微信朋友圈一条横线,代表对方屏蔽你?真相可能更扎心
古法黄金走俏:八种传统工艺打造最具收藏价值饰品
灵枢九真汤研究新进展:多学科合作破解古方谜题
小茴香:调味去腥的烹饪必备,兼有养生保健功效
新沂必打卡美食:从姜家辣汤到捆香蹄,舌尖上的新沂等你来尝!
2024家装流行风向标:极简、中古等五种风格将走红
新鱼入缸必读:八个关键步骤确保安全适应
鼠宝最怕的不是猫,而是炎热的夏日!30度以上恐让它们中暑!
矮寨景区玻璃栈道:500米高空上的惊险与美丽
70年巨变:川藏公路从“天险”到“坦途”
肝癌防治宣传周:专家详解肝癌预防与介入治疗
远离高甘油三酯:五类食物需严格限制
手外伤康复训练,专家教你快速恢复
从哈尔滨到延吉:4天自驾游镜泊湖、长白山全攻略
【地评线】南方网评:“科学健身20条”为青少年锻炼开好处方
一起运动,增进友谊的最佳姿势
魔法与现实:幻想文学的魅力