无法在 VirtualBox 来宾上连接到 PostgreSQL

Don*_*kby 11 postgresql ubuntu virtualbox

当我尝试从主机系统上的 PostgreSQL 客户端连接到 VirtualBox 来宾系统上的 PostgreSQL 服务器时,我收到一条“连接尝试失败”消息。

主机系统是Windows XP。我正在运行 VirtualBox 3.1.2。来宾系统是带有 PostgreSQL 8.4 的 Ubuntu 9.10 Karmic Koala。

我已经按照手册和这篇文章中的描述在 VirtualBox 中转发了端口 5432 。当我运行时vboxmanage getextradata vmname enumerate,我得到这些条目(以及其他条目):

Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/GuestPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/HostPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/Protocol, Value: TCP
Run Code Online (Sandbox Code Playgroud)

我在 /etc/postgresql/8.4/main/pg_hba.conf 中使用以下条目配置了 PostgreSQL 安全性:

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
host    all         all         192.168.1.0/24        md5
host    all         all         10.0.2.2/32        md5
Run Code Online (Sandbox Code Playgroud)

然后我用sudo /etc/init.d/postgresql-8.4 reload.

仅出于诊断目的,我已禁用 Windows 防火墙和 Ubuntu 防火墙 ( sudo ufw disable)。

有人知道我错过了哪些步骤吗?

Don*_*kby 12

好的,多亏了这篇文章,我找到了遗漏的步骤。

我忘记在 postgresql.conf 中设置 listen_addresses 设置。我正在使用这个值,但它可能受到更多限制:

listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

澄清一下,当您从主机连接到 PostgreSQL 时,使用 localhost 作为服务器,使用 5432 作为端口。VirtualBox 会将该端口转发给来宾。

我还意识到某些设置需要您重新启动 PostgreSQL 而不是重新加载它。命令是:

sudo /etc/init.d/postgresql-8.4 restart
Run Code Online (Sandbox Code Playgroud)