我正在尝试从 Win7 主机连接到 Win7 客户机上托管的 PostgreSQL 数据库。
我已经在 pg_hba.conf 中配置了安全性
host all all 127.0.0.1/32 md5
host all all 10.0.2.15/32 md5
host all all 192.168.1.6/32 md5
并将 postgresql.conf 中的 listen_addresses 设置设为“*”。
我认为我已经正确设置了端口转发,如下所示:
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/win7_vm1/GuestPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/win7_vm1/HostPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/win7_vm1/Protocol, Value: TCP
当我调用 getextradata 时。
这类似于 无法连接到 VirtualBox 客户机上的 PostgreSQL但我不确定我做错了什么。
在 vbox.log 文件中我看到:
00:00:01.019 NAT:设置重定向 TCP 主机端口 5432 => 客户端口 5432 @ 10.0.2.15 00:00:01.033 NAT:无法重定向 TCP 5432 => 5432
但我不知道该如何解决这个问题。有什么想法吗?谢谢。
答案1
我的第一个问题是,您能否验证您可以从客户机连接到客户机上的 PostgreSQL?
至于端口转发失败的问题,这通常是由于 VirtualBox 无法创建套接字来监听主机上的连接而导致的 - 最常见的原因是其他程序已在该端口上监听。您是否也在主机上运行 PostgreSQL?
查看 Microsoft SysInternals 团队提供的 TCPView 工具。它可以向您显示活动的 TCP 端点及其所属进程。这应该可以帮助您确定是否有东西抓取了 TCP 5432 以及它是什么。如果您想验证 PostgreSQL 是否正在运行并监听连接,请在主机和客户机上运行它。
TCP视图:http://technet.microsoft.com/en-us/sysinternals/bb897437
答案2
如果数据库托管在主机上,则不需要端口转发,只需将客户机指向 NAT 主机(通过 ipconfig 识别)。