Docker安装Mysql并挂载目录后运行

前言

记一次MySql数据库读写分离的的功能,其中里面涉及到了数据库的主从复制,并且是在Docker中的运行的MySql实例,于是乎就写下这篇文章,记录在Docker中安装MySql的步骤。

一、拉取镜像

1、执行如下命令拉取镜像:
本次使用的版本号是8.0.18

1
docker pull mysql:8.0.18

提示:记得配置镜像加速器,否则拉取镜像将非常慢,原因你懂的。

2、查看镜像是否存在:

1
docker images

二、配置并运行容器

1、运行容器:

1
docker run -d -p 3308:3306 --name mysql-server-01 -e MYSQL_ROOT_PASSWORD="123456" mysql:8.0.18

2、查看是否运行成功

1
docker ps

如图所示则成功:

3、进入容器:

1
docker exec -it mysql-server-01 bash

提示:mysql-server-01就是运行时设置的容器名称

4、查看容器内mysql配置文件路径

1
mysql --help | grep my.cnf

如图:

5、复制配置文件到宿主机目录
找到容器路径后,退出容器(ctrl+d),在宿主机下执行如下命令

1
docker cp mysql-server-01:/etc/mysql/my.cnf /mydocker/mysql-server-docker/mysql-01/conf

提示:宿主机路径位置一定要创建好

6、重新运行容器
配置好配置文件后,重新运行容器,将容器的配置文件指向宿主机的配置文件
执行如下命令:

1
docker run --restart=always --privileged=true -d -v /mydocker/mysql-server-docker/mysql-01/data/:/var/lib/mysql -v /mydocker/mysql-server-docker/mysql-01/conf/my.cnf:/etc/mysql/my.cnf -p 3308:3306 --name mysql-server-01 -e MYSQL_ROOT_PASSWORD="123456" mysql:8.0.18

提示:运行新容器时记得删除就容器,或者不删除,但容器名字不能相同,端口号不能被占用!!

三、测试连接

1、进行容器,开启远程访问
执行如下命令连接mysql:

1
mysql -uroot -p123456

2、进入名字为mysql的库

1
use mysql

3、配置远程访问

1
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;

4、刷新生效

1
flush privileges;

5、连接成功

四、总结

以上就是在Docker中安装MySql的步骤,可以配置集群,主从复制等,如果测试连接不上,可以检查以下:端口是否开放,端口是否被占用,映射是否成功,容器是否运行,安全组或者防火墙是否打开等这几处来检测。