从Win7连接到Linux VirtualBox中的PostgreSql数据库

Fil*_*lip 8 linux postgresql virtualbox windows-7

正如标题所述,从Win7主机开始,我正在尝试访问在同一台机器上的VirtualBox中的Linux Centos 5.8中建立的Postgres 9.3.我正试图从PGAdmin访问它,当我从Win7服务启动Postgre时一切正常,所以PGAdmin配置得很好.

我试过了什么?我已经阅读了很多关于这个主题的文章,甚至在这个论坛上也有一些问题,但没有任何效果.我有:

  1. 在VirtualBox GUI中切换到NAT并转发端口5432
  2. 在postgresql.conf文件中设置listenadresses ='*'
  3. 把所有10.0.2.1/24 md5行的主机放在pg_hba.conf文件中
  4. 在win7防火墙设置中放入5432端口入站和出站规则
  5. 用#service iptables停止禁用linux防火墙

提一下.当在虚拟linux中启动服务时,我可以从linux访问它,因此服务正常启动.问题是Windows没有看到该服务.当从linux启动服务时,我可以在Win中启动相同的服务,反之亦然,尽管端口5432应该被占用.

对我来说最可疑的部分是第3点)因为我不确定我是否在规则中放置了好的地址.根据我的网络,这个地址因文章而异,如果有人能解释我如何确定放在那里的地址(或范围),我将不胜感激.或者如果可能的话,或者其他建 谢谢.

Fil*_*lip 8

解决了.

更换:

"主机全部10.0.2.1/24 md5"与"host all all 0.0.0.0/0 trust"解决了它.


Luk*_*tor 5

在我的情况下,添加以下行pg_hba.conf就足够了:

host    all    all    10.0.0.0/16    md5
Run Code Online (Sandbox Code Playgroud)

然后重新启动:

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


Vis*_*l R 5

Filip 的解决方案有效,但您可以进一步定制它。
首先,在VM中启用适配器2并将其设置为Host-only Adapter:

在此输入图像描述

其次,转到您的主机并找到它的 IP 地址。
这可以通过在 Windows 主机中运行 ipconfig 来找到。

现在您需要在 VMBox 中编辑两个文件。

首先是postgresql.conf

sudo nano /etc/postgresql/<version>/main/postgresql.conf
Run Code Online (Sandbox Code Playgroud)

并添加以下行:

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

保存然后编辑pg_hba.conf

sudo nano /etc/postgresql/<version>/main/pg_hba.conf
Run Code Online (Sandbox Code Playgroud)

在这里你需要添加你的主机IP(在我的例子中是192.168.56.1:

host    all             all             192.168.56.1/0          trust
Run Code Online (Sandbox Code Playgroud)

保存并重启postgresql

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

现在您可以使用 pgadmin 连接到 vm postgresql。

方便!