2013-04-28 3 views
0

Я hava база данных PostgreSQL на своем ПК. Сервер Postgres работает на порту 5432. Когда я перехожу на другой компьютер и набираю 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

Вам нужно конфиг AUTH файлу /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 удаленного клиента. –

+0

Я добавил IP-адрес удаленного клиента в pg_hba.conf, и он сработал. Спасибо @ A.H. – user1135357

2

строку соединения JDBC неправильно. В документации сказано, это допустимые форматы:

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

но не - как в вашем случае:

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

(также отметить заглавную букву J в строке, которая также не допускается)