我在 Windows 7 中安装了 PostgreSQL 9.2,在虚拟机中安装了 Windows XP,如何连接这两个数据库并允许远程访问以从两个系统添加/编辑数据库?
8 回答
为了远程访问 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。
listen_addresses = '*'
在postgresql.conf中设置后
编辑pg_hba.conf文件并在文件的最后添加以下条目:
host all all 0.0.0.0/0 md5
host all all ::/0 md5
要查找配置文件 ,此链接可能会对您有所帮助。
除了上述建议 (1) 修改配置文件 pg_hba.conf 和 (2) postgresql.conf 和 (3) 重新启动 PostgreSQL 服务的答案外,某些 Windows 计算机可能还需要允许端口上的传入 TCP 流量(通常5432
)。
为此,您需要打开 Windows 防火墙并为端口添加入站规则(例如 5432)。
前往控制面板\系统和安全\Windows Defender 防火墙 > 高级设置 > 操作(右侧选项卡)> 入站规则 > 新规则... > 端口 > 特定本地端口并输入您使用的端口,通常为 5432 >(默认设置为休息并输入您想要的任何名称)
现在,尝试从客户端计算机上的 pgAdmin 再次连接。不需要重新启动服务。
这是针对使用 AWS 云计算(EC2 或 RDS 机器)的特定情况的补充答案。
除了执行上述所有建议之外,在使用 AWS 云计算时,您还需要设置入站规则以允许您访问端口。
请检查有关“入站规则”的答案。
您必须将其添加到您的 pg_hba.conf 并重新启动您的 PostgreSQL。
托管所有 192.168.56.1/24 md5
这适用于启用了 VirtualBox 和仅主机适配器。如果您不使用 Virtualbox,则必须替换 IP 地址。
对于 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