docker部署mysql

一、环境

名称 备注
操作命令对象 Docker 版本26.1.3
远程操作系统 CentOS 7.9 64位
远程管理工具 FinalShell 版本4.3.11
安装软件名称 MySQL 版本8.3.0

二、拉取镜像

2.1 查找 Docker Hub 上的 MySQL 镜像

docker search mysql
image

2.2 拉取MySQL镜像

由于我本地用的是8.3.0的,所以服务器也拉取tag8.3.0的版本
docker pull mysql:8.3.0
image

2.3 查看MySQL镜像

docker images mysql:8.3.0
image

三、在宿主机创建目录

3.1 创建挂载目录

后面用于挂载mysql容器内目录,这里就放在home目录下
mkdir -p /home/mysql/{conf,data,log}
image

3.2 创建配置文件

cd /home/mysql/conf
vim my.cnf

[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'

按键盘esc键退出输入,输入:wq保存退出
image

四、启动MySQL容器

-p表示端口映射
--restart=always表示容器退出时总是重启
--name表示容器命名
--privileged=true表示赋予容器权限修改宿主文件权利
-v /home/mysql/log:/var/log/mysql表示容器日志挂载到宿主机
-v /home/mysql/data:/var/lib/mysql表示容器存储文件挂载到宿主机
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf表示容器配置文件挂载到宿主机
-e MYSQL_ROOT_PASSWORD=a12bCd3_W45pUq6表示设置mysql的root用户密码,建议用强密码
-d表示后台运行
docker run \
-p 3306:3306 \
--restart=always \
--name mysql \
--privileged=true \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.3.0

五、测试

使用Navicat进行连接,因为我服务器配置了ssh的密钥连接方式,所以截图多了一个ssh server。

服务器如何生成密钥对,服务器配置公钥,本地配置私钥,Navicat使用ssh隧道连接mysql数据库,可以查看如下2篇文章

服务器生成密钥对、服务器配置公钥、本地配置私钥
Navicat使用ssh隧道连接mysql数据库

常见问题 : 如果连接失败,检查一下连接服务器的ssh密钥是否正确,连接服务器的密码是否正确。检查一下安全组规则,是否有开放3306端口。

posted @   Acaak  阅读(56)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示