Peer authentication failed for user “postgres”



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

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

  1. Если вы забыли пароль от пользователя под которым приложение подключается к БД, то сменим его:
ALTER USER ваш_пользователь with password 'новый_пароль';
  1. открываем: /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
  1. Рестартим сервис: sudo service postgresql restart

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

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


Сообщество: AWS

Комментариев(1)


ID: #372   Создан:
Автор: dmitry

pg_dump -h localhost -U postgres -F c -b -v -f mydb.backup mydb

Всего: 1 комментариев на 1 страницах

Ваш комментарий будет анонимным. Чтобы оставить не анонимный комментарий, пожалуйста, зарегистрируйтесь



Сообщества