2013-04-28 207 views
0

我的PC上有一个PostgreSQL数据库。 Postgres服务器在端口5432上运行。当我在另一台PC上输入并键入telnet server.ip 5432时,我设法连接。然而,当我尝试使用Java连接:PostgreSQL拒绝连接

connection = DriverManager.getConnection("Jdbc:postgresql:mydb://server.ip:5432/", "user", "pass"); 

我得到以下错误:Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.谁能告诉我这个问题可能是什么?

UPDATE:

我改变了连接字符串:

connection = DriverManager.getConnection("jdbc:postgresql://server.ip:5432/mydb", "user", "pass"); 

,现在我得到的错误FATAL: no pg_hba.conf entry for host "client.ip", user "user", database "mydb", SSL off

回答

1

您需要config认证文件/etc/postgresql/x.x/main/pg_hba.conf

添加这些行:

# TYPE DATABASE USER ADDRESS     METHOD 
host all  all my.pc.ip/Prefix-netmask md5 

之后重新启动PostgreSQL服务器:

# /etc/init.d/postgresql restart 
+1

嗯。问题是,'my.pc.ip'是服务器的IP地址。但是服务器的配置文件必须包含远程客户端的IP地址。 – 2013-04-28 18:15:27

+0

我在pg_hba.conf中添加了远程客户端IP,它工作正常。谢谢@ A.H。 – user1135357 2013-04-28 19:11:34

2

你的JDBC连接字符串是错误的。该文件说,这些都是允许的格式:

jdbc:postgresql:database 
jdbc:postgresql://host/database 
jdbc:postgresql://host:port/database 

- 因为你的情况:

Jdbc:postgresql:databse://host:port/ 

(也注意到这一点也不准在字符串中的大写字母J