Docker 启动另一个Mysql容器
目的
启动2个 Mysql
容器,一个用于 A,一个用于 B
背景
docker
目前已有Mysql镜像
docker images
docker
目前已启动一个Mysq
容器(用于 A,端口3306
)
docker ps
第一个
MySQL
容器暂时忽略(成功后的结果)
操作
1. 基于已有MySQL镜像创建一个容器
docker run --name self_mysql -e MYSQL_ROOT_PASSWORD=123456 -p 13307:13307 -d mysql:5.7.30
–name self_mysql:指定容器名称为self_mysql
-e MYSQL_ROOT_PASSWORD=123456: 设置默认密码为123456
-p 13307:13307: 设置端口容器和主机的端口映射
-d mysql:5.7.30: 指定镜像和tag
2. 修改远程连接权限
2.1. 进入容器
docker exec -it self_mysql /bin/bash
2.2. 连接MySQL
mysql -uroot -p123456
2.3. 设置远程连接权限
use mysql;
select host, user from user;
update user set host='%' where user='root';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
3. 修改MySQL端口号
编辑 /etc/mysql/my.cnf
,这个看到引入了2个目录,最终修改的是 /etc/mysql/mysql.conf.d/mysqld.cnf
修改容器中的文件有2种方式:
- 在容器中安装vi/vim,直接编辑
apt-get update
apt-get install vim
或
yum update
yum install vim
- 将容器的文件copy到主机,修改完成再copy回容器
# 将容器的文件copy到主机
docker cp self_mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /root
# 文件在主机做修改
# 将主机的文件copy到容器
docker cp /root/my.cnf self_mysql:/etc/mysql/mysql.conf.d/
4. 重启容器
docker restart self_mysql
5. 测试连接
- 测试端口是否连通: telnet 192.168.x.x 13307
- MySQL client连接:mysql -uroot -h192.168.x.x -P13307 -p123456