88

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

4

8 回答 8

127

为了远程访问 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 的机器的 IP 地址为 192.168.56.2,则在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。

于 2013-09-02T20:49:52.587 回答
67

listen_addresses = '*'postgresql.conf中设置后

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

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

查找配置文件 ,此链接可能会对您有所帮助。

于 2017-12-16T12:41:27.577 回答
28

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

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

前往控制面板\系统和安全\Windows Defender 防火墙 > 高级设置 > 操作(右侧选项卡)> 入站规则 > 新规则... > 端口 > 特定本地端口并输入您使用的端口,通常为 5432 >(默认设置为休息并输入您想要的任何名称)

Windows 防火墙设置

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

于 2017-01-04T03:25:04.303 回答
11

如果使用 PostgreSql 9.5.1,请按照以下配置:

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

为了允许192.X.X.X使用192.0.0.0/8

为了允许192.168.X.X使用192.168.0.0/8

为了允许192.168.1.X使用192.0.0.0/16

为了允许192.168.1.X使用192.168.1.0/24

为了只允许192.168.1.2使用192.168.1.2/32

于 2016-03-25T08:09:43.690 回答
2

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

除了执行上述所有建议之外,在使用 AWS 云计算时,您还需要设置入站规则以允许您访问端口。

请检查有关“入站规则”的答案

于 2020-06-24T09:58:50.387 回答
1

您必须将其添加到您的 pg_hba.conf 并重新启动您的 PostgreSQL。

托管所有 192.168.56.1/24 md5

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

于 2013-09-02T20:17:30.940 回答
0

对于 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
于 2021-03-09T14:28:35.983 回答
-2

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

1) 按 Windows 键 + R

2) 输入“services.msc”

在此处输入图像描述

3) 按名称排序

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

在此处输入图像描述

于 2020-03-14T06:54:32.073 回答