Допустим, вы видите это сообщение:
FATAL: Ident authentication failed for user "..."
Каковы причины этого сообщения об ошибке?
Это означает, что Postgres пытается аутентифицировать пользователя с использованием протокола Ident и не может. Идентификационная аутентификация работает так:
pg_hba.conf
файл (в /etc/postgres-something/main
) определяет Ident как протокол для подключения к базе данных db
для пользователей, подключающихся с определенных хостовВозможные причины и решения:
sudo apt-get install oidentd
).Идентификационный сервер есть, но есть нет роли базы данных соответствует имени, с которым вы пытаетесь подключиться ('foo' в приведенном выше примере). Так что создайте его, подключившись как-нибудь к базе данных с правами суперпользователя, и выполните CREATE ROLE foo
. Или добавьте запись в /etc/postgresql/.../main/pg_ident.conf
(или /var/lib/pgsql/12/data
или где угодно).
Может быть, имя пользователя оболочки не совпадает роль базы данных. Вы может проверить это подключившись к серверу Ident во время соединения и передав правильные номера портов.
Может ты действительно хочешь подключиться с паролем, а не Идент. Отредактируйте pg_hba.conf
файл соответствующим образом. Например, измените:
host all all 127.0.0.1/32 ident
к
host all all 127.0.0.1/32 md5
Не уверен в причинах, но это исправило для меня:
в pg_hba.conf
изменить на это:
разместить все все 127.0.0.1/32 md5
Точная ошибка: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
В CentOS добавьте следующую строку в /var/lib/pgsql/9.3/data/pg_hba.conf
:
host all all 127.0.0.1/32 trust
И закомментируйте другие записи.
Конечно, этот параметр не безопасно, но если вы просто возитесь с виртуальной машиной разработки, как я, то, вероятно, все в порядке ...
Если вы еще не пробовали это сделать, просмотрите свой файл pg_hba.conf. Он будет называться примерно так /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); вам, возможно, придется использовать find / -name pg_hba.conf, чтобы найти его.
Внизу файла измените значения METHOD на trust для локального тестирования (полную информацию см. В документации postgres). Перезагрузите машину, чтобы убедиться, что все запущено чисто и новые параметры прочитаны.
Надеюсь, это излечит ваши беды. Он решил мои проблемы на Fedora 20 с PostgreSQL 9.3.
Для Centos 7 изменить pg_hba.conf ниже:
# 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 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 ident
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication all peer
#host replication all 127.0.0.1/32 ident
#host replication all ::1/128 ident