2014-01-12 5 views
10

Я пытаюсь подключиться к базе данных Postgresql из Java с помощью JDBC Driver и хотел бы использовать pgpass для аутентификации.Поддерживает ли драйвер Postgresql JDBC протокол Pgpass?

Мой сервер Postgresql правильно настроен для аутентификации пароля, и у меня есть локальный файл .pgpass; Я могу подключиться с помощью psql, не указывая пароль пользователя. Однако, когда я пытаюсь открыть соединение в Java, я получаю следующее сообщение об ошибке:

org.postgresql.util.PSQLException: The server requested password-based authentication, but no password was provided. 

Я использую следующий код:

String url = "jdbc:postgresql://localhost/test"; 
Properties props = new Properties(); 
props.setProperty("user","my_user"); 
Connection conn = DriverManager.getConnection(url, props); 

Мой вопрос заключается в то: поддерживает ли драйвер Postgres JDBC pgpass?

Единственный ключ, который я мог найти, находится в SO и, кажется, указывает, что since the driver does not use libpq, then it cannot use pgpass. Кажется, я не могу найти ответа на авторитарную позицию.

ответ

9

Нет, PgJDBC не читает .pgpass.

$ cd projects/pgjdbc 
$ git grep pgpass 
$ 

Ваша программа Java необходимо будет открыть и разобрать .pgpass затем сделать соответствующее согласование для подключения.

Если вы пишете класс для чтения и разбора .pgpass и для соответствия ему для заданного набора параметров подключения, отправьте его для включения в драйвер PgJDBC, где он будет находиться под пакетом org.postgresql.util.

Вы можете найти его проще вместо изменить драйвер JDBC непосредственно, глядя вверх пароль, если он не указан в параметрах соединения после того, как драйвер JDBC уже разобрали URL JDBC в хост, порт и т.д.

Смежные вопросы