当前位置: 首页 > 知识库问答 >
问题:

psql无法通过IP和端口5432连接到PostgreSQL server(postmaster)?

苏鸿羽
2023-03-14

请在将其回复为重复之前阅读(因为它可能会发生)。我正在运行我的postmaster(postgres)服务器。请参阅下面的“sudo netstat-anp|grep 5432”输出?

tcp  0  0 127.0.0.1:5432    0.0.0.0:*     LISTEN      29606/postmaster       
unix  2      [ ACC ]     STREAM     LISTENING     1650581 29606/postmaster /var/run/postgresql/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     1650582 29606/postmaster    /tmp/.s.PGSQL.5432               

我可以使用

psql -h localhost (OR 127.0.0.1) -d <DB> -U user -W

但是当我尝试使用tcp从其他主机连接时,通过指定

psql -h ip_add_postmaster -d <DB> -U user -W

它抛出:

psql:无法连接到服务器:连接被拒绝服务器是否在主机XXXXXX上运行并在端口5432上接受TCP/IP连接?

这里怎么了?

pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only                  
local   all             all                                     peer  
# IPv4 local connections:                                             
host    all             all             127.0.0.1/32            md5   
# IPv6 local connections:                                             
host    all             all             ::1/128                 md5   

在postgresql中。形态,

listen_addresses = 'localhost, 127.0.0.1, ip_add_postmaster'

Note: ip_add_postmaster is same as my Elastic IP and not public DNS. If this information
matters.

我做错了什么?机器托管在Amazon EC2上,并已打开端口5432。

共有3个答案

穆景辉
2023-03-14

我发现的另一个问题是,如果最后安装了两个Postgres,第二个可以选择非默认端口(在我的例子中是5433 I/o 5432)。所以在postgresql中检查端口。conf可能是个好主意。

单于浩邈
2023-03-14

listen_addresses='localhost,private_ip'修复了这个问题。我无法在弹性IP上启动postmaster服务器。一旦postgres服务器启动olocalhost和私有IP,我就可以连接了。

沈健
2023-03-14

正如netstat输出所示,它正在监听本地主机的127.0.0.1:5432。只能从localhost连接的;)

在你的配置中设置listen_addresses='*',它就会工作。

[编辑]其他需要检查的内容:

  • 亚马逊防火墙屏蔽了什么吗
  • iptables屏蔽了什么吗

但是首先要确保监听地址是正确的,你的netstat输出显示它不会这样工作。

 类似资料:
  • PostgreSQL出现错误: 和文件是正常的(参见下面)。 服务器正在运行 我的文件:

  • 我在运行Ubuntu服务器14.04的服务器上安装了PostgreSQL 9.3。 在服务器上运行时,我得到(我猜是相关部分):

  • 我的入口pod无法通过IP访问两个集群IP服务。有很多其他集群IP服务它没有到达困难。包括在同一个命名空间中。另一个pod到达服务没有问题(我在同一个命名空间中尝试了默认后端,一切正常)。 我应该去哪里?以下是我的实际服务,它无法到达第一个,但可以到达第二个: 我的入口吊舱:

  • 我在EC2(Fedora)上运行了elasticsearch, 我无法使用公共IP或主机名进行外部连接。 ElasticSearch正确启动,我可以使用:curl-XGET在机器上本地访问http://localhost:9200 我确实遵循了这里解释的所有步骤:Ec2上的elasticsearch无法命中公共IP(超时) 喜欢 按照TJ在评论中说的做,重新启动实例。我不确定这是否有必要,但我做得

  • Postgresql服务器在我的localhost系统上运行并验证5432: 如果我输入:我会得到以下响应: psql:无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/. s上的连接。PGSQL.5432”? 如果我键入,它会工作并给我一个数据库列表。 文件完全打开,显示: 值“local”仅适用于Unix域套接字连接: