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 с пустым паролем?

РЕДАКТИРОВАТЬ

Это всего лишь тест, а не рабочий код.

Жером Верстринг
источник
Я не знаю точно, но легко представить, что PgAdmin не поддерживает это.
Питер Айзентраут
ваше приложение Java на том же клиенте, что и pgAdmin?
Джек Дуглас
Подобный вопрос
Джек Дуглас

Ответы:

10

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

Поскольку вы подключаетесь нормально с другого клиента, нет никаких причин, по которым вы не сможете подключиться с pgAdmin, если они находятся на одной рабочей станции - если только какое-то правило брандмауэра на самом клиенте не разрешает одну программу, но не другую.

Если проблема связана с этим клиентом, вам может потребоваться изменить одно или несколько из следующих:

  • pg_hba.conf
host sa all 192.168.0.nnn / 32 trust
  • postgresql.conf
listen_addresses = '*'
  • брандмауэр на вашем сервере postgres, например, iptables:
-A INPUT -s 192.168.0.nnn -m состояние --state NEW -j ПРИНЯТЬ

Но я рекомендую вам не делать ничего из этого. Руководство говорит следующее с уважительной причиной:

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

Вместо этого рассмотрите либо:

  • используя пароль и идентификацию md5
  • туннельный порт 5432 через ssh
Джек Дуглас
источник
31

Я нашел этот ответ в другом месте.

Если ваша БД находится на локальном хосте, попробуйте оставить поле хоста пустым в соединении, а не использовать «localhost» или «127.0.0.1». Это говорит PgAdmin подключиться через локальный сокет unix вместо TCP.

Алекс Джодидио
источник
Давайте добавим, что оригинальный вопрос был о системе Windows.
Дезсо
3
Ах, это было именно так. Оставив хозяину бланк сработал.
basicdays
Вы не можете оставить это поле пустым, это необходимо.
Атлан
Похоже, что оставление поля хоста пустым работает, только если у вас есть роль в pg, названная вашим системным именем пользователя (в Linux). В противном случае, я думаю, нужны пользовательские карты.
A1An
Отлично! С новой установкой PostgreSQL и pgadmin, изменение pg_hba.confсказать trustвместо peerэтой линии - local all postgres trustи оставив хозяин и пароль пустых полей в pgadmin получает все работает! Я бы хотел, чтобы pgadmin добавил флажок для переключения на сокеты, а не для того, чтобы его было сложно обнаружить.
Анупам Джайн