Действительно ли возможно создать соединение JDBC без пароля (использующий postgresql 'доверие')?

Я использую jdbc для соединения с postgresql базой данных в JAVA-приложении (на самом деле, приложение записано в Groovy). У меня есть postgresql, настроенный для использования 'доверительного' метода аутентификации. Действительно ли возможно открыть соединение JDBC, не указывая пароль? Когда я пытаюсь использовать нормального конструктора с пустым паролем, он перестал работать с

Exception in thread "Thread-2" org.postgresql.util.PSQLException: FATAL: password authentication failed for user "myuser"

Даже при том, что из командной строки это хорошо работает

psql -U myuser mydatabase
Welcome to psql 8.3.5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
      \h for help with SQL commands
      \? for help with psql commands
      \g or terminate with semicolon to execute query
      \q to quit
8
задан mojones 14 May 2010 в 09:11
поделиться

2 ответа

Да, вы можете.

Обратите внимание, что драйвер Postres JDBC всегда использует IP сокеты (host в pg_hba.conf), даже если база данных находится на локальной машине, тогда psql может использовать локальные сокеты (local в pg_hba.conf). Поэтому, если psql работает с trust аутентификацией, а JDBC - нет, вам, вероятно, следует настроить trust аутентификацию для IP-сокетов, см. документацию.

5
ответ дан 5 December 2019 в 20:14
поделиться

Уже отвечали, но:

Когда вы подключаетесь с помощью клиентской программы psql и не указываете хост (-h), по умолчанию используется локальный сокет (по крайней мере, в Linux). В JDBC вместо этого используется TCP/IP сокет. Затем, чтобы проверить проблему с соединением, вы должны вызвать psql с теми же настройками, которые вы используете в JDBC, включая хост.

Например

 psql -U myuser -h 127.0.0.1 mydatabase    # uses TCP/IP

Что не то же самое, что

 psql -U myuser mydatabase      # uses local socket (non TCP/IP)
3
ответ дан 5 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: