Postgresql:连接被拒绝。检查主机名和端口是否正确以及postmaster是否接受TCP / IP连接

时间:2013-12-29 13:44:08

标签: 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-ADDRESS            METHOD

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

如果有人愿意解释这里有什么问题以及我该如何纠正它,我将非常感激。

1 个答案:

答案 0 :(得分:94)

您引用的错误与pg_hba.conf无关;它没有连接,没有授权连接。

执行错误消息:

  

检查主机名和端口是否正确以及postmaster是否接受TCP / IP连接

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

  • PostgreSQL未运行

  • PostgreSQL没有侦听TCP / IP连接(listen_addresses中的postgresql.conf

  • PostgreSQL只收听IPv4(0.0.0.0127.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 LISTENsudo 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?