无法连接到端口5432上的Postgresql

Rod*_*igo 25 postgresql ssh port remote-access

我在运行Ubuntu Server 14.04的服务器上安装了PostgreSQL 9.3.

如果我通过终端ssh到服务器,我可以连接到psql.但是当我尝试配置pgAdmin III进行远程连接时,我得到:

服务器不侦听服务器不接受连接:连接库报告无法连接到服务器:连接被拒绝服务器是否在主机"172.24.3.147"上运行并接受端口5432上的TCP/IP连接?

当我在服务器上运行时,service postgresql status它给了我:

9.3/main (port 5432): online
Run Code Online (Sandbox Code Playgroud)

所以当然我在这里缺少一些重要的东西.

编辑

netstat -na服务器上运行时,我得到(相关部分,我猜):

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 172.24.3.147:22         172.24.3.240:61950      ESTABLISHED
tcp        0      0 172.24.3.147:22         172.24.3.240:60214      ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

Jan*_*rek 35

您必须编辑postgresql.conf文件并使用'listen_addresses'更改行.

您可以在/etc/postgresql/9.3/main目录中找到此文件.

默认的Ubuntu配置只允许localhost(或127.0.0.1)接口,当每个PostgreSQL客户端在同一台计算机上与PostgreSQL服务器一起工作时,这足以使用.如果您想从其他计算机连接PostgreSQL服务器,您可以通过以下方式更改此配置行:

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

然后你也编辑了pg_hba.conf文件.在此文件中,您已设置了可以连接到此服务器的计算机以及可以使用的身份验证方法.通常你需要类似的线:

host    all         all         192.168.1.0/24        md5
Run Code Online (Sandbox Code Playgroud)

请阅读此文件中的评论......

编辑:

编辑postgresql.conf和pg_hba.conf之后你必须重启postgresql服务器.

EDIT2:Highlited配置文件.

  • @ScottSkiles 单个 IP 将是 192.168.1.1/32 (3认同)
  • @ScottSkiles 192.168.1.0 是网络地址,/24 不是端口数,而是网络掩码的长度(255.255.255.0)。换句话说:允许来自网络 192.168.1.0/255.255.255.0、地址从 192.168.1.1 到 192.168.1.254 的计算机 (2认同)

小智 21

取消注释 postgresql.conf 中的 listen_addresses = '*'

这让我第二次被咬了,所以我认为可能值得一提。postgresql.conf 中的 listen_addresses = '*' 行默认被注释。请务必在更新后取消注释(删除开头的井号,#),否则,远程连接将继续被阻止。

PS: psql -U postgres -c 'SHOW config_file'- 定位 postgresql.conf 文件路径


rtf*_*liz 13

只是从已接受的答案中总结

如果像我这样的人忽略了必须编辑的文件名

就我而言,conf 文件位于

/etc/postgresql/14/main'

如果你输入cd /etc/postgresql/14/main

所以只需sudo nano 添加这两个文件名

  1. postgresql.conf

listen_addresses = '*'

取消注释此行并将 localhost 更改为 *

  1. pg_hba.conf

host all all 0.0.0.0/0

将 127.0.0.1/32 更改为 0.0.0.0/0

最后不要忘记重新启动使用sudo service postgresql restart

我希望这个可以清除通知错误


小智 9

还要记住检查防火墙设置。在检查并仔细检查我的文件pg_hba.confpostgres.conf文件后,我终于发现我的防火墙覆盖了所有内容,因此阻止了连接


小智 8

通过命令行连接 psql 时遇到同样的问题,并且 pgAdmin 未在 RDS 上与 AWS 连接。我确实将 RDS 设置为公开访问。我确保我的 ACL 和安全组完全开放并且仍然存在问题,因此我执行了以下操作: sudo find . -name *.conf 然后sudo nano ./data/pg_hba.conf 添加到 pg_hba.conf 文件中的指令顶部host all all 0.0.0.0/0 md5 ,pgAdmin 自动让我登录。

这也适用于 host all all md5没有任何 IP 地址的 pg_hba.conf 文件,并且这也适用于我的 IP 地址host all all <myip>/32 md5

附带说明一下,我的 RDS 位于我的默认 VPC 中。我的非默认 VPC 中有一个相同的 RDS 实例,其安全组、ACL 和安全组设置与我的默认 VPC 相同,但我无法让它工作。不知道为什么,但是,那是另一天的事情了。


Din*_*nda 8

您必须进行编辑pg_hba.conf才能接受网络内的所有请求

#TYPE  DATABASE        USER            ADDRESS                 METHOD 
host    all             all             0.0.0.0/0                md5
host    all             all             ::1/128                  md5
Run Code Online (Sandbox Code Playgroud)

在您的应用程序中,您可以使用此 IP 地址进行连接,如下例所示:-

postgresql://postgres:*****@192.168.1.101:5432/app