最近一直在本地虚拟机上学习Docker,使用Mysql5.5镜像生成容器后,在物理机上使用navicat-premium却无法连接,接下来说下整体过程与解决方法。
1、找到需要下载的mysql镜像
docker search mysql
2、下载镜像
docker pull docker.io/mysql
3、查看下载的镜像
docker images
4、查看mysql暴露端口号
一般都是3306,有兴趣的可以通过命令查看,c856是镜像前4位
docker image inspect c856
5、运行容器
run-运行;d-守护进程;-p-端口隐射(外部访问端口为3308,内部的刚才找过了是3306);-e-设置mysql的密码;–name-给容器命名;c856-镜像ID前4位。
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root --name=mysql2 c856
6、查看运行的容器,并使用navicat连接
网上查了下,是因为最新版mysql(mysql8以上)加密方式变化造成的。具体见:https://www.cnblogs.com/zhurong/p/9898675.html。
我们这边为了操作方便就使用旧版的mysql5.5继续操作。
使用旧版mysql5.5生成容器后,再使用navicat连接
7、容器内放两个mysql
再次使用mysql5.5建立一个容器,通过nestat -tlnpu 看到,3307,3308两个端口都已经开启监听(3306是虚拟机本地的数据库端口)
8、连接两个容器内的mysql
可以看到可以同时连接两个容器内的数据库,暴露端口都是3306,映射端口不同,也是能够正常连接的。