2014-09-03 2 views
22

Я пытаюсь подключиться к базе данных PostgreSQL, находящейся в удаленном месте с использованием шаблона Spring JDBC. Я получаюorg.postgresql.util.PSQLException: FATAL: нет записи pg_hba.conf для хоста

org.postgresql.util.PSQLException: FATAL: нет записи pg_hba.conf для хозяев "139.126.243.71", пользователь "гостя", база данных "masterdb", SSL от ошибок

У меня нет доступа к файлу pg_hba.conf удаленного места.

Это конфигурация, которую я дал в моей весенней servlet.xml

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://100.64.35.52":5432/masterdb"/> 
    <property name="username" value="root"/> 
    <property name="password" value="root"/> 
</bean> 

Можем ли мы решить эту проблему путем предоставления каких-либо свойств?

+2

На догадке, SSL, вероятно, обязательный. Попробуйте добавить '? Ssl = true' в URI JDBC. –

+0

Я попытался добавить? Ssl = true к URI JDBC, но он по-прежнему показывает ту же ошибку. org.postgresql.util.PSQLException: FATAL: нет записи pg_hba.conf для хоста «139.126.243.71», пользователя «гость», базы данных «masterdb», SSL на –

+2

. Если pg_hba.conf предотвращает подключение к этой базе данных с вашего IP-адреса, вы ничего не можете сделать, кроме как попросить администратора изменить pg_hba.conf. Вы пытались подключиться к простой программе psql? – nagylzs

ответ

17

Вы должны применить изменения раздувом для подключения:

в "C: \ Program Files (x86 Maby) \ PostgreSQL (ваша версия) \" данные

в файле "postgresql.conf":

проверьте «listen_addresses» be = '*' (по умолчанию его localhost в некоторых версиях postgres), если это не так, вы должны изменить его на '*'. это причина для прослушивания всех адресов.

в файле "pg_hba.conf":

добавить новую строку:

host all all 0.0.0.0/0 md5 

(использование выше строки лучше) или

host guest masterdb 139.126.243.71 md5 

И filnally это очень важно что режим ssl включен. для этого добавьте команду удар в конце вашего URL:

?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory 

В Условия Bean в качестве

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://100.64.35.52":5432/masterdb?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory"/> 
    <property name="username" value="root"/> 
    <property name="password" value="root"/> 
</bean> 
+1

Я вообще не изменил файл pg_hba.conf. Просто добавьте? Ssl = true & sslfactory = org.postgresql.ssl.NonValidatingFactory работает для меня. –

+0

Только что изменил pg_hba.conf и перезапустил postgresql. Это сработало для меня. –

33

Похоже, что сервер БД не разрешает SSL отключения связи, Вы должны включить его. Изменение URL из jdbc:postgresql://100.64.35.52":5432/masterdb в jdbc:postgresql://100.64.35.52":5432/masterdb?sslmode=require

Проверить режим Подробной информации о режиме Ssl на http://www.postgresql.org/docs/9.1/static/libpq-ssl.html

+2

Исправлено это для подключения к экземпляру postgres heroku. –

+0

Работает как очарование @ Приходите! Исправлено для подключения к postgres героку! –

+0

Исправлена ​​проблема с подключением при попытке подключиться к удаленному ящику поставщика с помощью клиента SQuirreL, и я НЕ мог вносить изменения в их конфигурацию сервера БД. Спасибо за сообщение, хотя ему было почти 1 год. Цените помощь! – Melinda

0

Смотрите мой ответ here, в основном пришлось поставить пользователь/PWD в URL-адрес собственности

url="jdbc:postgresql://server:port/mydb?user=fred&amp;password=secret" 
Смежные вопросы