Поддерживает ли драйвер Postgresql JDBC аутентификацию Pgpass? - программирование
Подтвердить что ты не робот

Поддерживает ли драйвер Postgresql JDBC аутентификацию Pgpass?

Я пытаюсь подключиться к базе данных Postgresql из Java с помощью JDBC Driver и хотел бы использовать 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 и, кажется, указывает, что поскольку драйвер не использует libpq, тогда он не может использовать pgpass. Кажется, я не могу найти ответ на авторитарную позицию.

4b9b3361

Ответ 1

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

$ cd projects/pgjdbc
$ git grep pgpass
$ 

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

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

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