PgAdmin III - Як підключитися до бази даних, коли пароль порожній?


21

На моєму ПК я встановив PostgreSQL 9.1 (Win 7). У мене є невеликий додаток Java, що успішно підключається до нього за допомогою login=saта password="". З'єднання працює.

Однак від самого PgAdmin III він відмовляється. Я отримав:

Error connecting to the server: fe_sendauth: no password supplied

Як підключитися до своєї бази даних з PgAdmin III з порожнім паролем?

EDIT

Це просто тест, а не виробничий код.


Я точно не знаю, але легко уявити, що PgAdmin цього не підтримує.
Peter Eisentraut

ваша програма Java на тому ж клієнті, що і pgAdmin?
Джек Дуглас

Відповіді:


10

Я можу підключитися до свого екземпляра postgres від pgAdmin III без пароля для будь-якого користувача, включаючи суперпользователей, таких як postgres.

Оскільки ви підключаєте нормально з іншого клієнта, немає ніяких причин вам не бути в змозі підключитися з pgAdmin, якщо вони знаходяться на одній робочій станції, якщо тільки якесь правило брандмауера для самого клієнта не дозволяє одній програмі, а не іншому.

Якщо проблема стосується цього клієнта, можливо, вам доведеться змінити один або декілька з:

  • pg_hba.conf
хост sa всі 192.168.0.nnn / 32 довіри
  • postgresql.conf
liste_addresses = '*'
  • брандмауер вашого сервера postgres, наприклад iptables:
-A ВХОД -s 192.168.0.nnn -m стан - держава НОВО -j ПРИЙМАНО

Але я рекомендую вам нічого цього не робити. У посібнику з поважної причини написано наступне:

автентифікація довіри підходить лише для TCP / IP-з'єднань, якщо ви довіряєте кожному користувачеві на кожній машині, якій дозволено підключатися до сервера за допомогою рядків pg_hba.conf, які задають довіру. Рідко доцільно використовувати довіру для будь-яких з'єднань TCP / IP, окрім тих, що є у localhost (127.0.0.1).

Замість цього розгляньте будь-яке:

  • використовуючи ідентифікацію пароля та md5
  • тунельний порт 5432 над сш

31

Цю відповідь я знайшов деінде.

Якщо ваша БД знаходиться на локальному хості, спробуйте залишити поле хосту порожнім у з’єднанні, на відміну від використання "localhost" або "127.0.0.1 ″. Це повідомляє PgAdmin підключатися через локальний сокет Unix замість TCP.


Додамо, що оригінальне питання стосувалося системи Windows.
dezso

3
Ах, саме це було. Залишаючи хост порожнім.
основні дні

Ви не можете залишити це поле порожнім, воно обов'язково.
Атлан

Схоже, залишити поле хоста порожнім працює лише у тому випадку, якщо у вас є роль у pg, названому вашим системним іменем користувача (в Linux). Інакше я думаю, потрібні карти користувачів.
a1an

Ідеально! З новою установкою postgresql та pgadmin, змінившись pg_hba.confна те, щоб сказати trustзамість peerцього рядка, - local all postgres trustі залишивши поля хосту та пароля порожніми в pgadmin, все працює! Я б хотів, щоб pgadmin додав прапорець для переходу на сокети замість цього важкого для виявлення інтерфейсу користувача.
Анупам Джайн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.