文章目录
宿主机(Mac)连接Docker中的CentOS容器MySQL数据库
#1 环境及需求
#1.1 环境
Navicat for Mac
Docker
-CentOS 6.9
-MySQL 5.7
#1.2 需求
在宿主机(Mac)上面远程链接Docker中CentOS容器里面的MySQL数据库
#1.3 基本配置
MySQL的安装和配置,请看上一篇博客
https://blog.youkuaiyun.com/Coxhuang/article/details/103837993
#2 开始
#2.1 创建CentOS容器
- 创建容器
docker run -it -p 33060:3306 centos:addmysql /bin/bash
# 命令注释:
# -p: 开放端口号
# 33060:3306: 冒号前面是宿主机的端口,冒号后面是容器的端口,意思就是在宿主机访问33060就会映射到宿主机的3306端口
╭─coxhuang@Cox.local ~
╰─➤ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos addmysql 25753ae42377 About an hour ago 442MB
centos 6.8 82f3b5f3c58f 9 months ago 195MB
centos 6.9 2199b8eb8390 9 months ago 195MB
mysql 5.7.21 5195076672a7 22 months ago 371MB
╭─coxhuang@Cox.local ~
╰─➤ docker run -it -p 33060:3306 centos:addmysql /bin/bash
[root@799a3e499eed /]#
- 进入容器,启动MySQL
service mysqld start
[root@799a3e499eed /]# service mysqld start
Starting mysqld: [ OK ]
#2.2 宿主机远程连接MySQL
172.17.0.2不允许连接MySQL
查看一下CentOS容器的ip
[root@799a3e499eed /]# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1617 (1.5 KiB) TX bytes:510 (510.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
原来,CentOS的ip正是172.17.0.2,是CentOS的3306端口没有开放,不允许远程连接
#2.3 配置MySQL允许远程连接
- 进入MySQL
mysql -u root -p
- 修改MySQL配置
grant all privileges on *.* to 'root'@'%' identified by '数据库密码';
flush privileges;
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
- 再次连接MySQL
连接成功