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

时间:2013-09-02 20:05:39

标签: windows postgresql virtual-machine

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

8 个答案:

答案 0 :(得分:54)

为了远程访问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服务(Services-> PosgreSQL 9.2:右键单击并重新启动服务)。在Windows XP机器上安装pgAdmin并尝试连接到PostgreSQL。

答案 1 :(得分:8)

如果使用PostgreSql 9.5.1,请遵循以下配置:

  1. 在pgAdmin中打开hg_hba.conf pgAdmin
  2. 选择您的路径,然后将其打开,然后添加设置 pg_hba.conf
  3. 重新启动postgresql服务

答案 2 :(得分:6)

postgresql.conf

中设置listen_addresses = '*'之后

编辑 hba_file.conf 文件 并在文件的最后添加以下条目:

host    all             all              0.0.0.0/0                       md5
host    all             all              ::/0                            md5

查找配置文件 this link可能会对您有所帮助。

答案 3 :(得分:4)

除了上述答案,建议(1)修改配置文件pg_hba.conf和(2)postgresql.conf以及(3)重新启动PostgreSQL服务,某些Windows计算机可能还需要传入的TCP流量允许在端口上(通常是else if)。

为此,您需要打开Windows防火墙并为端口添加入站规则(例如5432)。

前往控制面板\系统和安全\ Windows Defender防火墙>高级设置>动作(右侧标签)>入境规则>新规则...>端口>特定的本地端口并输入您使用的端口,通常为5432 > (其余的默认设置并输入您喜欢的任何名称)

Windows firewall settings

现在,尝试从客户端计算机上的pgAdmin再次连接。不需要重新启动服务。

答案 4 :(得分:2)

你必须将它添加到你的pg_hba.conf并重启你的PostgreSQL。

  

主持所有192.168.56.1/24 md5

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

答案 5 :(得分:1)

对于 PostgreSQL 13,由于某种原因,我无法对远程连接使用 scram-sha-256 加密。这奏效了。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     scram-sha-256 # "local" is for Unix domain socket connections only
host    all             all             127.0.0.1/32            scram-sha-256 # IPv4 local connections:
host    all             all             ::1/128                 scram-sha-256 # IPv6 local connections
local   replication     all                                     scram-sha-256 # Allow replication connections from localhost, by a user with the replication privilege.
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256
host    all             all             0.0.0.0/0               trust # <---------- remote connections

答案 6 :(得分:0)

在Windows上重新启动服务的快速快捷方式:

1)按Windows键+ R

2)键入“ services.msc”

enter image description here

3)按名称顺序

4)找到“ PostgreSQL”服务并重新启动它。

enter image description here

答案 7 :(得分:0)

这是针对您使用AWS云计算(EC2或RDS计算机)的特定情况的补充答案。

除了完成上面建议的所有操作之外,在使用AWS云计算时,您还需要以允许您访问端口的方式设置入站规则。 请检查this post,它对EC2和RDS有效。