1. 拉取mysql镜像
2. 创建挂载目录
3. 创建容器
4. 进入容器,登录MySQL
5. 更改账户加密方式
6. 查看主机状态
7. 从机配置
8. 启动从机
9. 远程访问权限
1. 拉取mysql镜像
# 没加版本号默认最新版 latestdocker pull mysql
2. 创建挂载目录
mkdir /home/docker/mysql/writemkdir /home/docker/mysql/read# 目录权限设置chmod 0777 /home/docker/mysql/writechmod 0777 /home/docker/mysql/read# write 新增mysql.cnf文件[mysqld]# 唯一idserver-id = 1# 开启logbinlog-bin = mysql-bin# 默认端口port = 3307# read 新增mysql.cnf文件[mysqld]# 唯一idserver-id = 2# 开启logbinlog-bin = mysql-bin# 默认端口port = 3308
3. 创建容器
# docker run -d -v 宿主机挂载目录:容器文件目录 --name 容器名称 -p 宿主机端口:映射镜像端口 -e 参数=值 镜像名称# 三种模式均可,这里是创建读跟写两个数据库# 默认网络连接模式docker run -d -v /home/docker/mysql/write:/etc/mysql/conf.d --name write_mysql -p 3307:3307 -e MYSQL_ROOT_PASSWORD=root mysqldocker run -d -v /home/docker/mysql/read:/etc/mysql/conf.d --name read_mysql -p 3308:3308 -e MYSQL_ROOT_PASSWORD=root mysql# 指定网卡、IP运行docker run -d -v /home/docker/mysql/write:/etc/mysql/conf.d --name write_mysql -p 3307:3307 -e MYSQL_ROOT_PASSWORD=root --network=docker0 --ip 172.17.0.2 mysqldocker run -d -v /home/docker/mysql/read:/etc/mysql/conf.d --name read_mysql -p 3308:3308 -e MYSQL_ROOT_PASSWORD=root --network=docker0 --ip 172.17.0.3 mysql# 使用host模式运行(宿主机网段为172开头时建议使用该模式,可以避免因宿主机与docker默认网段相同导致的无法访问容器的问题)docker run -d -v /home/docker/mysql/write:/etc/mysql/conf.d --name write_mysql -e MYSQL_ROOT_PASSWORD=root --network=host mysqldocker run -d -v /home/docker/mysql/read:/etc/mysql/conf.d --name read_mysql -e MYSQL_ROOT_PASSWORD=root --network=host mysql
4. 进入容器,登录MySQL
# docker exec -it 容器名称 bash# 分别登陆读、写库docker exec -it write_mysql bashdocker exec -it read_mysql bashmysql -uroot -proot
5. 更改账户加密方式
# 'localhost'为本地, ‘%’ 为外部# 将加密方式设置为 ‘mysql_native_password’ 可以防止外部登陆时报 'sha2xxxx' 错误ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';FLUSH PRIVILEGES;ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';FLUSH PRIVILEGES;
6. 查看主机状态
show master status;# 注:需记录主机File与Positon
7. 从机配置
# 如果有启动从机则需要先停止# stop slave;# 修改主机信息change master to master_host='主机IP',master_port=主机端口,master_user='账户',master_password='密码',master_log_file='主机File',master_log_pos=主机Positon;
8. 启动从机
# 启动start slave;# 查看状态show slave status\G# 这两个配置为: Yes, 表示配置成功Slave_IO_Running: YesSlave_SQL_Running: Yes
9. 远程访问权限
use mysql;grant all on *.* to 'root'@'%' with grant option;flush privileges;