2013-04-28 206 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