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

Ali*_*356 35 windows postgresql virtual-machine

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

And*_*Boc 62

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

postgresql.conf
pg_hba.conf

以下是有关如何设置它们的简要说明(请注意,以下说明仅供参考:要安全地配置机器,您必须熟悉所有参数及其含义)

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

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

检查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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 您是否检查过 Windows 7 防火墙?你可以从 WindowsXP ping Windows7 吗?您还可以尝试使用 `netstat -a -n` 命令来检查 postgresql 是否正在侦听地址 (2认同)

S.H*_*ahi 13

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

编辑pg_hba.conf文件,并在文件末尾添加以下条目:

host    all             all              0.0.0.0/0                       md5
host    all             all              ::/0                            md5
Run Code Online (Sandbox Code Playgroud)

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

  • 不要将 **trust** 与 **all all 0.0.0.0/0** 结合使用 - 这使您的服务器实际上对所有人开放。正如[PostgreSQL文档](https://www.postgresql.org/docs/9.6/auth-methods.html#AUTH-TRUST)中提到的:“只有在有足够的操作系统级保护时才应使用此方法与服务器的连接。” (6认同)
  • conf 文件位置:`psql -U postgres -c 'SHOW config_file'`。Ubuntu 中的默认值:`/etc/postgresql/12/main/postgresql.conf`。另外,应该重新启动服务:`sudo service postgresql restart` - 在 ubuntu 上。 (2认同)
  • 不要忘记`sudo systemctl restart postgresql` (2认同)
  • 我的工作了。但我不得不使用“信任”而不是“md5”。此外,只有 ipv6 连接才需要第二行。 (2认同)

176*_*ing 8

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

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

  • @ziggy:所有IP地址.为了允许XXXX使用0.0.0.0/0.为了允许192.XXX使用192.0.0.0/8.为了允许192.168.XX使用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 (2认同)

Jim*_*m C 7

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

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

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

Windows防火墙设置

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

  • 这适用于在 VirtualBox 上的 Windows 10 主机上运行的 Windows 7 来宾操作系统。 (2认同)
  • 就是这样 !并且不要忘记在您的路由器中制定路由规则! (2认同)