无法连接到端口5432上的Postgresql

问题描述 投票:19回答:5

我在运行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

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

编辑

在服务器上运行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
postgresql ssh port remote-access
5个回答
28
投票

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

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

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

listen_addresses = '*'

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

host    all         all         192.168.1.0/24        md5

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

编辑:

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

EDIT2:Highlited配置文件。


2
投票

通过命令行连接与psql有相同的问题,而pgAdmin没有在RDS上与AWS连接。我确实将我的RDS设置为Publicly Accessible。我确保我的ACL和安全组是敞开的,仍然有问题,所以,我做了以下:sudo find . -name *.conf然后sudo nano ./data/pg_hba.conf然后添加到pg_hba.conf文件中的指令顶部host all all 0.0.0.0/0 md5和pgAdmin自动登录我。

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

作为旁注,我的RDS是我的默认VPC。我的非默认VPC中有一个相同的RDS实例,我的默认VPC具有相同的安全组,ACL和安全组设置,我无法使其工作。不知道为什么,但那是另一天。


1
投票

您可能需要打开端口以在LAN(或其外部)中访问它或将网络地址绑定到端口(使PostgreSQL在LAN上而不是在localhost上侦听)


1
投票

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


1
投票

MacOS系统升级后我遇到了同样的问题。通过使用brew升级postgres解决了这个问题。详细信息:系统似乎尝试使用较旧的Postgres 10设置访问Postgres 11。我确定这是我过去的某个地方的错误,但幸运的是,所有这些都得到了上面的升级。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.