Postgresql:连接被拒绝。检查主机名和端口是否正确,邮政局长是否正在接受TCP/IP连接

Postgresql:连接被拒绝。检查主机名和端口是否正确,邮政局长是否正在接受TCP/IP连接,postgresql,Postgresql,我正在尝试连接postgresql,但遇到此错误 org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 我的pg_hba.conf文件如下所示 TYPE DATABASE USER CIDR-ADD

我正在尝试连接postgresql,但遇到此错误

org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
我的pg_hba.conf文件如下所示

 TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

如果有人能解释一下这里有什么问题,我将不胜感激。

您所引用的错误与
pg_hba.conf
无关;它无法连接,而不是无法授权连接

执行错误消息中所述的操作:

检查主机名和端口是否正确,邮政局长是否正在接受TCP/IP连接

您尚未显示产生错误的命令。假设您在
localhost
端口
5432
(标准PostgreSQL安装的默认设置)上连接,则:

  • PostgreSQL没有运行

  • PostgreSQL没有侦听TCP/IP连接(
    listen\u地址
    PostgreSQL.conf

  • PostgreSQL只监听IPv4(
    0.0.0.0
    127.0.0.1
    ),您正在连接IPv6(
    ::1
    ),反之亦然。在一些具有奇怪IPv6套接字行为的旧Mac OS X版本和一些旧Windows版本上,这似乎是一个问题

  • PostgreSQL正在侦听与您连接的端口不同的端口

  • (不太可能)存在阻止环回连接的
    iptables
    规则

(如果您不是在
localhost
上连接,它也可能是阻止TCP/IP连接的网络防火墙,但我猜您使用的是默认设置,因为您没有说)

所以。。。检查以下各项:

  • ps-f-u postgres
    应该列出
    postgres
    过程

  • sudo lsof-n-u postgres | grep LISTEN
    sudo netstat-ltnp | grep postgres
    应显示PostgreSQL正在侦听的TCP/IP地址和端口

顺便说一句,我想你一定是老版本了。在我的9.3安装中,错误更为详细:

$ psql -h localhost -p 12345
psql: could not connect to server: Connection refused
        Is the server running on host "localhost" (::1) and accepting
        TCP/IP connections on port 12345?

您是否已检查服务器是否已启动?您正在使用什么操作系统?您是否按照错误消息中的说明进行了操作?“检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接”。您尚未显示产生该错误消息的原因。此外,请始终显示您的PostgreSQL版本、您如何安装PostgreSQL以及您的OS/distro/version。我正在本地主机端口5432上连接。postgresql.conf->>listen_addresses='*',我正在连接IPv4,操作系统是Windows 7。我刚刚意识到我连接到了错误的端口5432,而不是5433。检查此处
cat/etc/postgresql/9.6/main/postgresql.conf | grep port
。Apartmenty默认端口已从一个版本更改为另一个版本。@JanuszSkonieczny,它仅在Debian/Ubuntu上使用
pg_包装器
托管安装。请参阅
pg_lscluster
。我认为答案应该是127.0.0.1与0.0.0.0与localhost的区别,以及docker是否参与了prisma(通常运行insider docker容器)与docker中或本机操作系统上的postgres之间的区别。取消注释和添加
侦听地址对我有帮助。谢谢