Поддерживает ли драйвер 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. Кажется, я не могу найти ответ на авторитарную позицию.
Ответы
Ответ 1
Нет, PgJDBC не читает .pgpass
.
$ cd projects/pgjdbc
$ git grep pgpass
$
Ваша программа Java должна будет открыть и проанализировать .pgpass
, затем выполнить соответствующее сопоставление для соединения.
Если вы пишете класс для чтения и разбора .pgpass
и чтобы он соответствовал ему для заданного набора параметров подключения, отправьте его для включения в драйвер PgJDBC, где он будет находиться под пакетом org.postgresql.util
.
Вам может быть проще вместо этого напрямую модифицировать драйвер JDBC, глядя на пароль, если ни один из них не указан в параметрах соединения после того, как драйвер JDBC уже проанализировал URL JDBC на хост, порт и т.д.