当我尝试从主机系统上的 PostgreSQL 客户端连接到 VirtualBox 客户系统上的 PostgreSQL 服务器时,收到“连接尝试失败”消息。
主机系统是 Windows XP。我运行的是 VirtualBox 3.1.2。客户系统是 Ubuntu 9.10 Karmic Koala,带有 PostgreSQL 8.4。
我已经按照手册中的说明转发了 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
我在 /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
然后我用重新加载了 PostgreSQL sudo /etc/init.d/postgresql-8.4 reload
。
仅用于诊断目的,我已经禁用了我的 Windows 防火墙和我的 Ubuntu 防火墙(sudo ufw disable
)。
有人知道我错过了哪些步骤吗?
答案1
好的,我找到了遗漏的步骤,这要感谢这个帖子。
我忘记在 postgresql.conf 中设置 listen_addresses。我正在使用这个值,但它可以更加受限制:
listen_addresses = '*'
需要澄清的是,当您从主机连接到 PostgreSQL 时,请使用 localhost 作为服务器并使用 5432 作为端口。VirtualBox 会将该端口转发给客户机。
我还意识到有些设置需要你重新启动 PostgreSQL,而不是直接重新加载它。命令是:
sudo /etc/init.d/postgresql-8.4 restart