Авторизация в PostgreSQL

После обновления версии PostgreSQL и при попытке подключиться к базе стало появляться сообщение

FATAL:  Ident authentication failed for user "..."

с указанием юзернейма активного пользователя. И при этом никакого запроса пароля. И совсем не реагирует на ключи -U или —username.

При этом если переключится на пользователя postgres то зыql запускается без всяких проблем и запроса пароля.

Как оказалось немного поменялась конфигурация и настройки параметров доступа. Об этом чуть подробнее.

Теперь настройки лежат в файле pg_hba.conf в папке рядом с базами данных. На моей системе это каталог /var/lib/pgsql/data. Именно он указан в параметрах у процесса postgres.

Итак о содержимом файла pg_hba.conf. В нем описывается какой метод идентификации использовать. Можно определить метод идентификации для для конкретной базы, конкретного пользователя или же для адреса с которого будет произведенно подключение. В самом файле есть подробная инструкция по структуре правил.

Если кратко, то нас интересуют два метода: «ident» и «md5». Первый обозначает подключение по логину активного пользователя. Второй позволяет использовать пароль, как это было обычно.

Так следующая запись

host all postgres 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5

указывает что для всех пользователей работает доступ ко всем базам с использованием пароля. При этом у пользователя postgres есть возможность подключиться к любой базе просто запустив psql без параметров.

После любых изменений в pg_hba.conf для вступления их в силу нужно перегрузить процесс postgres.

Запись опубликована в рубрике Полезности, Сисадминское с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий