问题描述:使用virtualbox和vagrant安装好了虚拟机centos7,并且在虚拟机上安装了docker容器,docker里安装了mysql数据库。

问题1:使用navicat,常规选项,连接不上数据库。
问题2:navicat,常规选项连接上数据库后,JDBC连接不上。

问题解决和排查:

虚拟机有两个网卡一个adapter1为NAT模式,一个adapter2为HOST-ONLY模式,nat中端口转换为127.0.0.1 2222。
HOST-ONLY中地址为192.168.56.10,对应虚拟机中配置的网卡eth1,固定IP。

排查思路:
  1. 确保主机和虚拟机可以相互Ping通。解决办法:因为刚升级到win11,并且使用的是手机的热点。
    在本机-设置-“网络和Internet”-更多网络适配器选项-WLAN-属性-共享-选择“允许其他网络主机…”-
    选择adapter2,这样操作后,二者可以互Ping
  2. 确保虚拟机防火墙已关闭
  3. 确保在docker容器中可以正常连接mysql服务。

docker exec -it mysql bash,然后输入mysql -u root -p 输入密码进行连接

  1. 确保Mysql授权过了允许远程主机连接。

show grants,查看授权情况。或者use mysql,通过sql语句查询:
select host,user from user;
授权语句:grant all on . to ‘root’@‘%’ identified by ‘your password’
再次查询即可。

  1. 使用navicat连接,常规配置里配置了是adapter2网卡的地址,端口3306,但是不能连接成功
  2. navicat中SSH选项,启用,选中使用SSH通道,host:127.0.0.1 端口2222,也就是virtualbox中
    网卡1下面的地址转换的信息,用户名是虚拟机的用户名和密码root/vagrant,再次点击测试,成功
  3. 使用jdbc进行数据库的连接,还是不成功的!!!!待定
  4. 确定虚拟机中HOST-ONLY中的网段和本地的虚拟网卡的Ip设置在同一网段!!! 最后一步导致 了问题。说明:

在vagrant虚拟机中HOST-ONLY模式下网卡:VirtualBox Host-Only Ethernet Adapter #2
在本地的网络中这个名字是以太网4,原因是在本地的这个网络中指定了自己的Ip,和虚拟机中的Ip不是一个网段。
或者说已经在虚拟机上指定了虚拟机ip为192.168.56.10,但是在本地又指定了一次本地的这个网卡的ip也是192.168.56.10,
然后我本机上实际的Ipv4地址是 169.254.221.159,这都不一个网段,肯定连不通啊。把本地的Ipv4改为192.168.56.9,立即就连通了。

总结 :还是对网络知识不太了解,小问题,折腾一大天!!!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐