无法连接到PostgreSQL

时间:2011-02-01 05:55:37

标签: postgresql jdbc

我正在尝试从其他机器中存在的PostgreSQL访问一个表。 我收到以下错误。

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:136)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:393)
    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文件中配置了我的ip,但是存在同样的错误。它的解决方案是什么?

4 个答案:

答案 0 :(得分:3)

你能telnet到你认为PostgreSQL正在收听的IP地址和端口号吗?

  • 如果没有,麻烦的是邮件管理员没有运行,或者你的网络中有一些东西搞乱 - 防火墙阻止访问端口,或无法找到主机或其他什么。

  • 如果您可以通过telnet访问postmaster,那么可能是您提供了错误的凭据或其他内容 - 但错误表明您的客户端代码无法找到远程PostgreSQL。但是,更有可能的是,Java代码使用的配置与您使用telnet成功演示的配置不同。

答案 1 :(得分:1)

我是PostgreSql的新手,但我也有很多次同样的问题,最后我找到了解决方案。

问题在于防火墙阻塞端口(对于Ex:5432),一旦通过防火墙授予访问权限,我就能够连接到数据库服务器。

您必须只将postgreSql中使用的端口添加到防火墙。

之后我的postgreSql与Jdbc一起工作正常。

答案 2 :(得分:0)

postgresql.conf中“listen_addresses”的设置是什么?

SHOW listen_addresses;

你是否在pg_hba.conf和postgresql.conf中的更改后重新加载了配置文件?

SELECT pg_reload_conf();

答案 3 :(得分:0)

我有同样的问题。我在pg_hba.conf中添加了以下条目并且工作了。确保在changin配置文件

之后重新启动postgres
host    all         all         0.0.0.0/0         md5