我正在尝试从其他机器中存在的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,但是存在同样的错误。它的解决方案是什么?
答案 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配置文件
之后重新启动postgreshost all all 0.0.0.0/0 md5