前言
记一次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的步骤,可以配置集群,主从复制等,如果测试连接不上,可以检查以下:端口是否开放,端口是否被占用,映射是否成功,容器是否运行,安全组或者防火墙是否打开等这几处来检测。