pgadmin3: FATAL: не удалось выполнить аутентификацию пользователя postgres

Я пытаюсь зарегистрировать новый сервер в pgadmin3 со следующими настройками:

Name: postgres
Host: localhost
Username: postgres
Password: <password which works for psql>
Service: empty or postgres

Но он показывает ошибку:

FATAL: Ident authentification failed for user "postgres"

Я перезапустил службу postgresql, но безрезультатно.

Содержимое /var/lib/pgsql/data/pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               ident

РЕДАКТИРОВАТЬ: Инструменты -> Конфигурация сервера -> pg_hba.conf неактивен.


person DSblizzard    schedule 19.09.2012    source источник


Ответы (3)


Похоже, что PgAdmin-III, вероятно, по умолчанию подключается через IPv6, поэтому он использует строку ident, которая соответствует IPv6-адресу для локального хоста, ::1/128.

Если вы хотите использовать аутентификацию по паролю, вы, вероятно, захотите:

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

Я не уверен, почему у вас для строки сокета домена unix установлено значение trust, но, вероятно, это нормально, если это просто машина для разработки, поэтому оставьте ее без изменений. На самом деле гораздо безопаснее иметь его как ident (если вы хотите, чтобы пользователь unix был таким же, как пользователь Pg) или md5 (для аутентификации по паролю на локальных сокетах unix).

Вам нужно будет отредактировать pg_hba.conf непосредственно в текстовом редакторе, если у PgAdmin-III нет прав на его редактирование. Вы можете запустить PgAdmin-III от имени пользователя postgres через sudo, но гораздо безопаснее (и, вероятно, проще) просто использовать nano или аналогичный текстовый редактор командной строки для изменения pg_hba.conf.

Пароль работает для psql, потому что psql, если не указано иное, будет подключаться через сокет домена unix, а у вас установлено значение trust. Вы, вероятно, обнаружите, что можете указать любой пароль для psql, и он все равно будет работать, потому что его никогда не просят ввести пароль, он просто автоматически доверяется.

person Craig Ringer    schedule 19.09.2012

Да, этот тип ошибки встречается у каждого новичка в pgadmin. Я нашел это решение, и оно сработало для меня.

sudo -u postgres psql

Это запросит ваш системный пароль, а затем вы получите приглашение postgres.

а затем в psql введите команду ниже, чтобы изменить пароль.

\password

теперь введите новый пароль и повторите его.

person Jay Modi    schedule 01.10.2014

Этапы отладки учетной записи PostGreSQL (для Linux):

  1. Убедитесь, что он действительно установлен (не только клиент, но и сервер).
  2. Убедитесь, что он запущен.
  3. Убедитесь, что вы знаете, где это находится — обычно в /var/lib/pgsql/data — однако это может быть где угодно — /var/lib/pgsql/unrelated-instance. Проверьте свой процесс postgres, чтобы узнать, какой это каталог (аргумент -D).
  4. Измените файл pg_hba.conf в каталоге из последнего шага. Я понятия не имею, почему этого шага нет в документации postgres.
  5. Конкретная конфигурация описана, например, в Ответ Джея и Крейга Рингеров. Обязательно настройте оба IPV4 и IPV6.
  6. Перезапустите сервер.
  7. Проверьте, работает ли ваша конфигурация. Повторяйте 5-7, пока не сможете успешно войти в систему.
  8. Важно Не останавливайтесь! Теперь вам следует настроить более безопасный пароль — postgres может подойти для быстрой локальной настройки, но вы хотите использовать более безопасный, настраиваемый механизм аутентификации, такой как LDAP, Kerberos или GSSAPI. Кроме того, вы хотите убедиться, что у вас включен SSL.
person smaudet    schedule 18.03.2017