docker部署mysql

296 阅读2分钟

小记

自己在买的云服务器上部署的mysql让黑客劫持了,留下消息让我准备好比特币,两周内赎回数据。哭了(bushi)看了下服务器日志,原来是两个月前的事了,哦那没事了。mysql是用docker跑的,本来想着重新创个实例出来,改下密码得了。但是许久没用doker了,指令都生疏了,想想还是记录下来留待后用。

环境说明

操作系统:centos7
docker版本:20.10.17 (这里不介绍怎么安装docker了)
mysql版本:8.0

步骤说明

1.下载mysql镜像

这里可以用docker search mysql来查询,也可以到dockerhub网站上去搜索

image.png

image.png 网站上的话对于版本号更直观点

image.png 这里找到8.0版本mysql,将右边下载镜像命令拷下来运行就行
docker pull mysql:8.0

image.png 通过docker images查看本地镜像,mysql就算下载成功了

2.创建外部配置文件和文件保存路径

使用docker运行数据库时,需要将数据库中保存数据挂载到容器外,不能把数据保存在容器里,因为重启的话数据会丢失

image.png
我在自己用户目录下创建了mysql的文件目录和配置目录,在conf路径下创建my.cnf文件

[mysqld] 
user=mysql 
character-set-server=utf8 default_authentication_plugin=mysql_native_password 
[client] 
default-character-set=utf8 
[mysql] 
default-character-set=utf8

3.运行容器

容器启动代码,如果直接拷过去的话记得把回车去掉。其实不进行第一步操作,直接run也可以,docker run命令会在本地仓库先找匹配的镜像,没找到的话会到远程仓库匹配

docker run -d -p 3306:3306 
--restart always 
--name mysql8.0 
-e MYSQL_ROOT_PASSWORD="rootpwd" 
-v=/home/lighthouse/docker/mysql/conf/my.cnf:/etc/my.cnf 
-v=/home/lighthouse/docker/mysql/data:/var/lib/mysql 
mysql:8.0

参数解析:
-p 3306:3306 端口映射
--restart always 开机自启
--name mysql8.0 起个容器名字
-e MYSQL_ROOT_PASSWORD="rootpwd" 设置root用户密码
-v=/home/lighthouse/docker/mysql/conf/my.cnf:/etc/my.cnf 将默认配置文件设置成我们自己创建的配置文件
-v=/home/lighthouse/docker/mysql/data:/var/lib/mysql 将mysql数据文件保存到容器外我们自己创建的目录下
mysql:8.0 用到的镜像名

其他事项:
--privileged=true:提升容器内权限
有看到其他人博客说需要加这个启动参数,不然容器启动失败,但我这边没遇到这个问题

image.png
启动成功了!

image.png
最后我们测试一下连接,连接成功!