您的位置:首页 > 数据库 > MySQL

解决VirtualBox中的MySQL数据库,Mac无法访问的问题(通过端口映射的方式)

2017-04-20 10:12 495 查看
Virtualbox默认使用NAT来做网络连接的,访问外网比较方便,但是纯NAT模式下,宿主机不能访问虚拟机。开发过程中有时候会用到虚拟机,这里有个简单有效的解决方法就是用VirtualBox的“端口映射”功能。

配置如下:

1.打开VirtualBox的偏好设置,设置host_only网络,默认是192.168.56.1;





2.对virtualBox中的设置进行配置=>选中网络地址转换(NAT)=>点击端口转发=>配置主机IP,端口号和子系统IP,端口号(这里的主机端口可以和子系统端口不一致,比如以上图的MySQL为例,如果把主机的端口配置为3307的话,那么从外网访问虚拟机的MySQL数据库地址就是192.168.56.1,端口就是3307,虚拟机会自动转发给子系统中的3306端口。):





3.mysql客户端测试连接:



4.我在连接中一直出现:ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用户权限问题;这里需要我们配置虚拟中MySQL的远程权限(这个处理只针对虚拟机中的系统是Windows系统的解决方案,具体操作详情链接:这里写链接内容):



5.以上配置之后还是会出现多次的连接超时现象:

can’t connect to mysql server on ‘XXX.XXX.XX.X’ (10060 Operation Timeout)这种问题的出现,我的解决办法如下,

virturalBox =>偏好设置=>网络=>红色框框中不要选中:



6.以上设置后,还是会出现无法连接超时,拒绝连接等状况,我的解决办法是:

1).在虚拟机和真机中ping 192.168.56.1,看看两边是否能通;如果不能通:virturalBox =>偏好设置=>网络=>红色框框中选中点击确认,然后再ping;此时两边再ping我就能ping通了;

2).在真机中用Navicat for mysql测试连接MySQL数据库,我这里出现的状况是出现虚拟机拒绝连接(61 connect refused),此时解决办法是:virturalBox =>偏好设置=>网络=>红色框框中不要选中;此时再在虚拟机和真机中ping 192.168.56.1,看看是否能ping通,如果可以,重启虚拟机,关闭您的Navicat;

3)重启后再在虚拟机和真机中ping 192.168.56.1,此时我的虚拟机也是能ping通的,重新打开您的Navicat,然后再连接,此时就连接成功了;

我的发现:虚拟机和真机端口映射,有一个缓存时间,就是说,你开机后真机和虚拟机无法自动进行IP映射,此时您可以通过ping IP来检测什么时候已经完成了IP映射,当ping通后,可能端口映射还没有映射上去,所以您再重启您的电脑试试,再ping,再用Navicat尝试,就能成功,当您配置好后,如果出现Navicat连接超时的状况就多尝试,之前弄过的,再还原,再ping,直到成功为止;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息