Можно ли создать соединение jdbc без пароля (используя postgresql 'trust')? - PullRequest
8 голосов
/ 14 мая 2010

Я использую 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

Ответы [ 3 ]

5 голосов
/ 14 мая 2010

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

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

3 голосов
/ 14 мая 2010

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

Когда вы подключаетесь с помощью клиентской программы 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)
0 голосов
/ 03 марта 2011

GlassFish, по крайней мере, включая версию 3.1, имеет проблему с указанием пустых паролей JDBC .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...