postgresql: ошибка одноранговой аутентификации с md5

При настройке моей установки postgresql я определил, что пользователь, пытающийся войти в систему с паролем, не относящийся к соответствующему пользователю ОС, не проходит аутентификацию со следующим сообщением:

$ psql -d postgres confluence -W
psql: FATAL:  Peer authentication failed for user "confluence"

Несколько быстрых поисков в Google подсказали мне обновить файл pg_hba.conf. Поскольку я работаю в CentOS 6.5 и использую postgresql 9.3, файл находился по адресу /var/lib/pgsql/data/pg_hba.conf.

Первоначально файл содержал:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident

Содержимое файла теперь такое:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all   confluence                              md5
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

(Я подозреваю, что md5 для всех из них немного избыточен, так как теоретически я сейчас имею дело только с подключениями к доменным сокетам, но я хотел бы охватить все свои базы.)

Я ожидал, что перезапуск postgresql поможет, поэтому я выполнил:

sudo /etc/init.d/postgresql-9.3 restart

Который сообщил успешно. К сожалению, поведение попыток входа не изменилось.

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

Кто-нибудь думает о том, чего здесь не хватает?

Редактировать:

В попытке убедиться, что файл вообще рассматривается, я изменил метод всех всех подключений на «доверие», и с перезапуском службы, как указано выше, я получаю следующее:

$ psql -d postgres confluence
psql: FATAL: Peer authentication failed for user "confluence"

person jsparks    schedule 27.05.2014    source источник
comment
На Postgres сервере точно есть пользователь с именем confluence?   -  person khampson    schedule 27.05.2014
comment
Спасибо, Кен, точно был. Я вкратце упомянул об этом, упомянув, что я могу войти в систему под соответствующим пользователем ОС. Похоже, я сейчас в деле.   -  person jsparks    schedule 28.05.2014


Ответы (1)


Если вы используете Centos 6.5 и установили пакеты RPM, предоставленные репозиторием Postgresql yum, вы обнаружите, что файл pg_hba.conf на самом деле находится в /var/lib/pgsql/9.3/data/, а не /var/lib/pgsql/data/.

Как вы уже, наверное, подозревали, вы модифицировали файл, который система вообще не читает.

В более старых RPM-пакетах postgresql каталог данных postgresql помещался в каталог /var/lib/pgsql/data, но в какой-то момент (9.0?) они переместили его по пути, зависящему от версии, что упрощает запуск инструмента pg_upgrade для миграции. от одной версии к другой. Скорее всего, каталог, с которым вы играли, был оставлен одной из этих старых версий.

person harmic    schedule 27.05.2014
comment
Большое спасибо! Ты спасатель! :D - person jsparks; 28.05.2014