VirtualBox 端口转发以连接到 PostgreSQL 数据库

VirtualBox 端口转发以连接到 PostgreSQL 数据库

我正在尝试从 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 识别)。

相关内容