Всё о web

Для чайников и не только


Peer authentication failed for user “postgres”

Октябрь 21, 2015

При разворачивании проекта на руби возникла ошибка: Peer authentication failed for user “postgres”. После недолгого гугления выяснилось, что приложение пытается подключаться к базе данных, используя логин и пароль, и не обращает внимание на то, что в настройках бд выставлено подключение в положение "peer"- не требующее вводить пароль при подключении, а проверяющее права пользователя операционной системы.

Чтобы это исправить нужно сделать следующее:

1. Если вы забыли пароль от пользователя под которым приложение подключается к БД, то сменим его:

ALTER USER ваш_пользователь with password 'новый_пароль';

2. открываем: /etc/postgresql/9.3/main/pg_hba.conf, находим строчки:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

И меняем параметр peer на md5 во всех строчках:

# Database administrative login by Unix domain socket
local   all             postgres                                md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
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

3. Рестартим сервис: sudo service postgresql restart

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

Также в методе проверки подлинности могут использоваться следующие параметры: "trust", "reject", "md5", "password", "gss", "sspi", "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert".

Самые распространённые: "trust" - авторизовывать всех, "md5"- авторизовывать по передаваемому паролю, "peer"- авторизовывать по правам текущего пользователя системы.



Комментарии

Оставить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *