如何允许远程访问PostgreSQL数据库

我有PostgreSQL 9.2安装在Windows 7中,我有虚拟机中安装的Windows XP,如何连接这两个数据库,并允许远程访问从两个系统添加/编辑数据库?

为了远程访问PostgreSQL数据库,您必须设置两个主要的PostgreSQL配置文件:

postgresql.conf中
的pg_hba.conf

以下是关于如何设置它们的简要说明(请注意,以下描述纯粹是指示性的:要安全地配置机器,您必须熟悉所有参数及其含义)

首先配置PostgreSQL服务在Windows 7机器的所有网络接口上监听端口5432:
打开文件postgresql.conf (通常位于C:\ Program Files \ PostgreSQL \ 9.2 \ data)并设置参数

 listen_addresses = '*' 

检查WindowsXP虚拟机的网络地址,并在pg_hba.conf文件(位于postgresql.conf的同一目录中)中设置参数,以便postgresql可以接受来自虚拟机主机的连接。
例如,如果具有Windows XP的计算机具有192.168.56.2的IP地址,请在pg_hba.conf文件中添加:

 host all all 192.168.56.1/24 md5 

这样,PostgreSQL将接受来自网络192.168.1.XXX的所有主机的连接。

在Windows 7中重新启动PostgreSQL服务(服务 – > PosgreSQL 9.2:右键单击并重新启动服务)。 在Windows XP机器上安装pgAdmin并尝试连接到PostgreSQL。

我使用PostgreSQL 9.5.1,请按照下面的配置:

  1. 在pgAdmin中打开hg_hba.conf pgAdmin的
  2. 选择你的路径,并打开它,然后添加一个设置 的pg_hba.conf
  3. 重新启动postgresql服务

你必须把这个添加到你的pg_hba.conf中并重新启动你的PostgreSQL。

主机全部全部192.168.56.1/24 md5

这适用于VirtualBox和仅启用主机的适配器。 如果您不使用Virtualbox,则必须更换IP地址。

除了上面的答案建议修改配置文件pg_hba.conf和postgresql.conf并重新启动PostGreSQL服务之外,在某些Windows 7计算机上,可能还需要为传入的TCP通信启用端口(例如5432),即PostGreSQL服务器可以接收。

如果您的计算机上需要这样做,则请打开Windows防火墙并为端口添加入站规则(例如5432)。 现在,请尝试从客户端计算机上的pgAdmin重新连接。