无法连接到端口5432上的Postgresql

时间:2016-07-19 18:41:47

标签: postgresql ssh port remote-access

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

如果我通过终端进入服务器,我可以用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

7 个答案:

答案 0 :(得分:27)

您必须编辑 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配置文件。

答案 1 :(得分: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自动登录了我。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

在MacOS系统升级后,我遇到了同样的问题。通过用brew升级postgres来解决它。 详细信息:看来系统正在尝试使用旧的Postgres 10设置访问Postgres 11。我敢肯定,这是我过去的某个错误,但幸运的是,上述升级都可以解决所有问题。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我遇到了同样的问题。我最初安装了版本 10,因为这是 Ubuntu 18.04 的默认安装。我后来升级到 13.2,因为我想要最新版本。我做了所有的配置修改,但它仍然只是 binging 到 1207.0.0.1 然后我想 - 也许它正在查看版本 10 的配置文件。我修改了这些并重新启动了 postgres 服务。答对了!它绑定到 0.0.0.0

我需要完全删除 10 并确保我强制该服务在 13.2 版本下运行,因此如果您从其他版本升级,请尝试更新该旧目录中的其他配置文件。