我有一台物理机,上面有两台虚拟机。其中一台虚拟机是应用程序机,另一台是数据库机。所有虚拟机都运行 Windows XP。
我正在使用 Sun Virtual Box 进行虚拟化目的。
我注意到的一件事是,在两个虚拟机上,IP 地址完全相同。
问题在于我无法从我的应用程序机器使用 MySQL 管理员连接到数据库机器,因为我必须指定服务器主机的 IP,在这种情况下,数据库机器和应用程序机器的 IP 完全相同!
我也尝试使用 Hamachi 地址(因为不同的 VM 的 Hamachi 地址不同),但总是出现“无法连接”的问题,尽管我可以从一个 VM ping 另一个 VM 的 Hamachi 地址。
知道如何解决这个问题吗?
答案1
您的两个虚拟机均位于 VirtualBox NAT 后面,彼此不可见。您需要将虚拟机配置为使用桥接网络,以便它们可以在您的网络上获取 IP。
答案2
检查
- 虚拟盒允许两个虚拟机之间的连接 - 这似乎已经是事实,正如您所说,它们可以互相 ping 通。
- 通过使用“telnet mysqlmachine 3306”或“nmap mysqymachine -p 3306”打开mysql-machine上的端口 - 这将显示某些防火墙是否阻止访问。
- mysql 绑定到机器的公共 IP 地址 - 据我所知,它可能只是绑定到本地主机,无法通过网络访问(这是一件好事)
- 您已授予要连接的用户正确的权限。这也适用于要连接的计算机的命名。我了解到,如果 mysql 抱怨“不允许用户‘username’从‘127.0.0.1’连接”,则“GRANT ... ON ... TO ‘username’@‘localhost’ ...”可能会失败 - 在联网情况下,您可能会遇到类似的问题。请注意,那里是字符串比较,因此‘localhost’不等于‘127.0.0.1’
编辑:刚发完帖子,我就看到你说两个 IP 地址都一样。因此,问题的根源似乎出在 Virtual Box 中 - 检查那里的网络配置。如果两台计算机都将其 IP 地址解析为自己,则每台计算机都会尝试与自己联系。
一旦你有了不同的 IP 地址并且可以 ping 另一台机器,请继续上面的列表。我没有使用过 Hamachi,所以我无法评论你在那里拥有的选项...不过,你可能想尝试使用 Hamachi 地址的 telnet 或 nmap 选项。