5432端口无法连接到 Postgresql

我在运行 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
340405 次浏览

您可能需要打开端口来访问局域网内(或局域网外)的端口,或者将网络地址绑定到端口(使 PostgreSQL 在局域网上监听,而不仅仅是在本地主机上监听)

您必须编辑 Postgreql.conf文件并用“ listen _ address”更改行。

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

默认的 Ubuntu 配置只允许使用本地主机(或127.0.0.1)接口,当每个 PostgreSQL 客户端作为 PostgreSQL 服务器在同一台计算机上工作时,本地主机接口就足够了。如果希望从其他计算机连接 PostgreSQL 服务器,则必须按以下方式更改此配置行:

listen_addresses = '*'

然后还要编辑 Pg _ hba. conf文件。在此文件中,您已经设置了可以从哪台计算机连接到此服务器以及可以使用哪种身份验证方法。通常你会需要类似的行:

host    all         all         192.168.1.0/24        md5

请阅读文件中的注释..。

编辑:

在编辑 postgreql.conf 和 pg _ hba. conf 之后,必须重新启动 postgreql 服务器。

编辑2: 突出显示的配置文件。

通过命令行连接 psql 时遇到了同样的问题,而 pgAdmin 没有通过 AWS 在 RDS 上连接 psql。我把 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 自动登录我。

这在 pg _ hba. conf 文件中也是可行的 host all all md5没有任何 IP 地址,这也与我的 IP 地址 host all all <myip>/32 md5工作

顺便说一句,我的 RDS 在我的默认 VPC 中。我有一个相同的 RDS 实例在我的非默认 VPC 与相同的安全组,ACL 和安全组设置我的默认 VPC,我无法让它工作。不知道为什么,但是,这是另一天。

还要记得检查防火墙设置。在检查和反复检查我的 pg_hba.confpostgres.conf文件之后,我终于发现我的防火墙覆盖了所有内容,因此阻塞了连接

在 MacOS 系统升级之后,我也遇到了同样的问题。通过用 brew 升级 postgres 解决了这个问题。 详细信息: 看起来系统试图使用旧的 Postgres 10设置访问 Postgres 11。我敢肯定这是我过去的某个地方犯的错误,但幸运的是,通过上面的升级,一切都得到了解决。

取消 postgreql.conf 中的 listen _ address =’*’的注释

这已经是我第二次被咬了,所以我想也许值得一提。Conf 中的 listen _ address =’*’行在默认情况下是注释的。一定要在更新后取消注释(删除开头的 # 符号) ,否则,远程连接将继续被阻塞。

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

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

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

我用自酿啤酒启动服务器。

1) 停止服务器(但它不工作。这是问题)

啤酒服务停止后

2)有需要时作出更新

酿造后期升级数据库

3)下面的注释解决我的问题,它启动服务器。就这样

酿酒服务开始后

如果错误首先发生,你必须读取日志。

  • 这只适用于在 mac * 上通过 brew 进行 postgreql 安装

首先,必须通过运行

brew services在你的终端上

如果它停止了,尝试启动它,然后再次运行 brew services

如果状态显示错误,您可以通过 * . plist 文件轻松找到日志位置。

例如,在我的配置上

cat /Users/drosanda/Library/LaunchAgents/homebrew.mxcl.postgresql@12.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>homebrew.mxcl.postgresql@12</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/postgresql@12/bin/postgres</string>
<string>-D</string>
<string>/usr/local/var/postgresql@12</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/postgresql@12.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/postgresql@12.log</string>
<key>WorkingDirectory</key>
<string>/usr/local</string>
</dict>
</plist>

以下是日志文件的内容:

2021-11-30 09:07:20.154 WIB [3891] FATAL: lock file "postmaster.pid" already exists

2021-11-30 09:07:20.154 WIB [3891] HINT: Is another postmaster (PID 422) running in data directory "/usr/local/var/postgresql@12"?

对于我的情况,由 PID 文件引起的 postgreql 不会启动,因此仍然存在。

通过删除 postmaster.pid文件,很容易修复。

只要加上一个以后可能对某人有用的答案。

只是从已接受的答案中摘要

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

在我的例子中,conf 文件位于

/etc/postgresql/14/main'

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

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

  1. Postgreql.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重新启动

我希望这个程序能够清除通知错误

Windows = = = 按 WIN + R//open services 类型服务,理学硕士
查找 postgres-双击它。

属性框打开,然后单击开始 好好享受。

您必须编辑 pg_hba.conf来接受网络中的所有请求

#TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0                md5
host    all             all             ::1/128                  md5

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

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

为另一种可能性添加一个更新的答案。在 AWS EC2上运行 postgres 10我不得不通过 Windows Defender 防火墙添加一个自定义入站规则来允许端口5432。

对于任何其他来自 docker 和其他应用程序的问题,如 nodejs 或 Django 或任何东西

我面对这个问题2天或更多的视频观看教程似乎没有工作,虽然我会说我已经错过了一些,但这里是为我工作的解决方案

而不是 PGHOST 的本地主机

您必须指定您的服务名称

例如:

    image: postgres
container_name: postgresdb
restart: always
env_file:
- ./env/.env
volumes:

那你的主人一定是 Nodeapp-db

有同样的问题和搜索导致许多复杂的过度解决方案。最终,这个问题是在 Postgres 安装到 Ubuntu 上之后没有设置密码。

解决方案:

  1. 从 Postgres 终端-输入“ sudo-u Postgres psql”即可到达,结果应为“ Postgres = #”..。
  2. 使用“ password postgres”设置密码
  3. 用新密码和用户名“ postgres”更新 PG 管理员

参考资料 https://www.cherryservers.com/blog/how-to-install-and-setup-postgresql-server-on-ubuntu-20-04

在我的例子中,服务器没有监听,因为它没有自动启动(Windows 版的 PostgreSQL) ,因为安装程序没有创建用户,也没有初始化服务器。下面的事情帮助了我:

安装完成后,我必须运行(在一个非管理的 cmd.exe shell 中) :

set PGDATA=C:\Program Files\PostgreSQL\14\data
cd C:\Program Files\PostgreSQL\14\bin
createuser.exe -s postgres
pg_ctl init
pg_ctl start

之后,我使用 pgAdmin工具并在仪表板中选择“ Add new server”。在那里,我在“ General”选项卡中输入了所需的服务器名称,在“ Connection”选项卡中输入了 127.0.0.1,因为我想在本地运行它。在用 Save确认之后,它被正确地创建了。

似乎在 Windows 中,Postgres 不是作为 Windows 服务运行的,所以它不会自动启动,你必须手动运行它。然而,你可以创建一个 StartPg.cmd文件并输入命令 C:\Program Files\PostgreSQL\14\bin\pg_ctl start,然后你可以通过 Win + E打开一个文件资源管理器,在它的路径文本框中输入 shell:Startup(然后按 Enter)并将批处理文件(或它的快捷方式)复制到其中。

然后它会自动启动。

如果您尝试编辑 Pg _ hba. confPostres.conf文件 就像上面建议的那样,没有任何效果,那么就这样吧!

后起之秀: | LINUX 用户

在尝试了上面建议的所有其他选择之后,没有一个对我有用。

因此,我发布了这是由于启动/启动时 PostgreSQL 群集14-main失败造成的。

我按照下面的步骤,

应用解决方案:

  1. sudo chmod 700 -R /var/lib/postgresql/14/main
  2. sudo -i -u postgres
  3. /usr/lib/postgresql/14/bin/pg_ctl restart -D /var/lib/postgresql/14/main

注意: 你可以把14替换成你的 postresql 版本号,你可以选择 /usr/lib/postgresql/{标记你在这里看到的数字}

解决方案后状态:

Pg _ ctl: PID 文件“/var/lib/postgreql/14/main/postmaster. PID”没有 服务器正在运行吗? 正在尝试启动服务器 服务器启动... 2022-11-1713:06:36.614 CET [5542]日志: 开始 PostgreSQL 14.5(Ubuntu 14.5-0ubuntu0.22.04.1) on x86 _ 64-pc-linux-gnu, 编译: gcc (Ubuntu11.2.0-19ubuntu1)11.2.0,64位2022-11-17 日志: 监听 IPv4地址“0.0.0.0”, 端口54322022-11-1713:06:36.614 CET [5542]日志: 监听 IPv6 地址“ : :”,端口54322022-11-1713:06:36.616 CET [5542]日志: 监听 Unix 套接字“/var/run/postgreql/. s.PGSQL. 5432” 2022-11-1713:06:36.623 CET [5543]日志: 数据库系统关闭 At 2022-11-1709:20:13 CET 2022-11-1713:06:36.631 CET [5542]日志: 数据库系统已准备好接受连接完成服务器启动

  1. pg_lsclusters

集群 | 端口 | 状态 | 所有者 | 数据目录 | 日志文件

10 main 5432 online postgres/var/lib/postgreql/10/main /var/log/postgreql/postgreql-10-main. log

最后,我能够连接到 PORT = 5432没有问题,一切都工作得非常好。