postgres连接在摇摆中被拒绝

Posted

技术标签:

【中文标题】postgres连接在摇摆中被拒绝【英文标题】:postgres connection refused in swing 【发布时间】:2014-10-21 02:15:42 【问题描述】:

我在连接远程机器时遇到错误,这里是 java 错误日志 -

DBConnection.getConnectionFromDB - Error Occured -- SQL EXCEPTION
org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:136)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:397)
at org.postgresql.Driver.connect(Driver.java:267)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)

这里是 pg_hba.conf 文件 -

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.101/24        trust
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

【问题讨论】:

服务器在运行吗?用户名/密码是否正确? @ScaryWombat : 是的,postgres 服务正在运行,并且用户名密码正确。 @MadProgrammer :我尝试禁用防火墙,但它不起作用。我应该提供java代码吗?我想要实现的是通过可执行jar访问数据库,数据库机器分配了ip 192.168.1.101,其他机器没有分配任何ip,他们将通过DHCP获取它。 【参考方案1】:

首先,检查 postgresql.conf 配置文件中参数listen_addresses 的值。如果未设置,则数据库引擎将仅接受通过本地 Unix 套接字的连接,并且不会侦听任何 TCP/IP 端口。

在此之后,确认您可以使用命令行工具 psql 从客户端计算机连接到数据库。

如果你不能做到这一点,并假设机器有 ip 联系(即,你可以从客户端 ping 服务器),那么它意味着防火墙,无论是在客户端,服务器上,还是一些中间交换机或路由器.

如果您确实设法通过 psql 进行连接,请检查您在 jdbc 连接字符串中使用的连接参数,尤其是地址/主机名和端口号。

哦,顺便说一句,您在 pg_hba.conf 中以 'trust' 结尾的两行是一个非常糟糕的主意。它们意味着任何机器上的任何人都可以在不提供密码或任何其他凭据的情况下进行连接。

【讨论】:

【参考方案2】:

已解决 关注

更新/var/lib/pgsql/&lt;version&gt;/data/postgresql.conf

更改#listen_addresses = 'localhost' to listen_addresses = '*'

重启服务

【讨论】:

以上是关于postgres连接在摇摆中被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 容器连接被拒绝

连接被拒绝 postgres docker

从本地节点服务器到Postgres DB的连接被拒绝

Docker- django 在连接到 postgres 时抛出错误:psycopg2.OperationalError:无法连接到服务器:连接被拒绝

在 docker-compose 中运行 Django 应用程序:与 postgres db 的连接第一次拒绝但之后可以工作

Bd Postgres 与 Laravel 的连接?