PostgreSQL: 无法连接服务器:端口5432上的TCP/IP连接

7
我遇到了PostgreSQL的错误:

SQLSTATE[08006] [7] 无法连接服务器:拒绝连接 服务器是否正在运行在主机“localhost”(::1)上并接受端口5432上的TCP/IP连接? 无法连接服务器:拒绝连接 服务器是否正在运行在主机“localhost”(127.0.0.1)上并接受端口5432上的TCP/IP连接?

以下命令没有显示5432端口已开放:
sudo netstat -plunt |grep postgres

我猜问题出在5432端口上,因为我在netstat命令中没有看到它。
如何为PostgreSQL打开端口?

  1. postgresql.confpg_hba.conf文件都正确(见下文)。
  2. postgres服务器正在运行。
  3. 我的postgresql.conf文件:
listen_addresses = '*'
port = 5432

我的pg_hba.conf文件:
local   all             postgres                                md5
local   all             all                                     md5
host    all             all             0.0.0.0/0               trust
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

我执行了以下命令:$ netstat -atu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:6379          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN
tcp        0      0 30secondboomer.com:ssh  109-252-90-59.nat:11807 ESTABLISHED
tcp        0      0 30secondboomer.com:ssh  109-252-90-59.nat:11258 ESTABLISHED
tcp        0      0 30secondboomer.com:ssh  109-252-90-59.nat:11797 ESTABLISHED
tcp6       0      0 localhost:6379          [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 [::]:https              [::]:*                  LISTEN
udp        0      0 localhost:domain        0.0.0.0:*
udp        0      0 30secondboomer.c:bootpc 0.0.0.0:*

3
请检查日志。显然PostgreSQL服务器没有运行(根据netstat输出)。 - Ancoron
1
本地主机应该对自身开放。您是在尝试在该端口之间跳转服务器吗?还是连接到同一台服务器上的数据库? - user9105725
1
@АндрейПисарев:postgresql.service是一个总服务,其状态并不能证明任何事情。实际的服务可能是postgresql@11-main。根据您的操作系统,您可能有多个由systemd管理的postgres实例。 - Daniel Vérité
在此之前,我执行了以下命令:"service postgresql restart"、"service postgresql stop" 和 "service postgresql start"。 - Андрей Писарев
请按照这个链接操作:https://dev59.com/-lgQ5IYBdhLWcg3wazIi#74163070 - abdulalim
显示剩余7条评论
2个回答

3

在设置 PostgreSQLPython/Django 项目一起工作时,遇到了类似的错误。

  1. 尝试再次 停止重启 服务器。
  2. 如果确实像你怀疑的那样是端口 5432 的问题,你可以尝试在另一个端口上启动 postgres 比如说 5433,然后看看会发生什么。
  3. 对于那些根本没有运行 数据库服务器 的人,这个解决方案 对我有用,在阅读了官方的 PostgreSQL-9.6.16 文档之后。

-2
在您的pg_hba.conf文件中,您有以下内容:
host all all 127.0.0.1/32 trust
但是这个应该包含实际机器的IP地址,从请求发出的机器(即使是本地主机,它仍然应该包含远程IP地址,因为来自另一台机器的连接将引用它)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接