psql: FATAL: Идентификационная идентификация не удалась для пользователя «postgres»

Я установил PostgreSQL и pgAdminIII в свой ящик Ubuntu Karmic.

Я могу успешно использовать pgAdminIII (т. Е. Подключиться / войти в систему), однако, когда я пытаюсь войти на сервер с использованием того же имени пользователя / pwd в командной строке (используя psql), я получаю ошибку:

psql: FATAL: Ident authentication failed for user "postgres" 

Кто-нибудь теперь, как решить эту проблему?

Вы установили правильные настройки в pg_hba.conf?

См. https://help.ubuntu.com/stable/serverguide/postgresql.html, как это сделать.

Следующие шаги предназначены для новой установки postgres 9.1 на Ubuntu 12.04. (Работает и для постгеров 9.3.9 на Ubuntu 14.04).

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

 $ sudo -u postgres psql \password Enter password: ... ... 

Выйдите из psql , набрав \q или ctrl+d . Затем мы соединяемся как «postgres». -h localhost часть -h localhost важна : она сообщает клиенту psql что мы хотим подключиться, используя TCP-соединение (которое настроено на использование аутентификации пароля), а не через соединение PEER (которое не заботится о пароле).

 $ psql -U postgres -h localhost 

Отредактируйте файл /etc/postgresql/8.4/main/pg_hba.conf и замените ident или peer либо md5 либо trust , в зависимости от того, хотите ли вы запросить пароль на своем собственном компьютере или нет. Затем перезагрузите файл конфигурации с помощью:

 /etc/init.d/postgresql reload 

Вы получаете эту ошибку, потому что у вас нет аутентификации клиента. На основе сообщения об ошибке вы, вероятно, имеете конфигурацию postgres по умолчанию, которая устанавливает метод проверки подлинности клиента для «IDENT» для всех подключений PostgreSQL.

Вы должны обязательно прочитать раздел 19.1 «Аутентификация клиента» в руководстве PostgreSQL, чтобы лучше понять доступные параметры проверки подлинности (для каждой записи в pg_hba.conf ), но вот соответствующий fragment, который поможет вам решить проблему (из руководства по версии 9.5 ):

доверять

Разрешить соединение безоговорочно. Этот метод позволяет любому, кто может подключиться к серверу базы данных PostgreSQL, войти в систему как любой пользователь PostgreSQL, которого они желают, без необходимости использования пароля или любой другой аутентификации. Подробности см. В разделе 19.3.1.

отклонять

Отклонить соединение безоговорочно. Это полезно для «фильтрации» определенных хостов из группы, например, строка отклонения может заблокировать конкретный хост от подключения, а более поздняя строка позволяет другим хостам в определенной сети подключаться.

md5

Требовать от клиента предоставления пароля с двойным MD5-hashем для аутентификации. Подробности см. В разделе 19.3.2.

пароль

Требовать от клиента предоставления незашифрованного пароля для аутентификации. Поскольку пароль отправляется в текстовом виде по сети, это не должно использоваться в ненадежных сетях. Подробности см. В разделе 19.3.2.

GSS

Используйте GSSAPI для аутентификации пользователя. Это доступно только для соединений TCP / IP. Подробности см. В разделе 19.3.3.

ССПИ

Используйте SSPI для аутентификации пользователя. Это доступно только в Windows. Подробности см. В разделе 19.3.4.

идент

Получите имя пользователя операционной системы клиента, связавшись с сервером идентификации на клиенте и проверьте, соответствует ли оно запрашиваемому имени пользователя базы данных. Идентификационная аутентификация может использоваться только для соединений TCP / IP. Если указано для локальных подключений, вместо этого будет использоваться одноранговая аутентификация. Подробности см. В разделе 19.3.5.

вглядываться

Получите имя пользователя операционной системы клиента из операционной системы и проверьте, соответствует ли оно запрашиваемому имени пользователя базы данных. Это доступно только для локальных подключений. Подробности см. В разделе 19.3.6.

LDAP

Аутентификация с использованием LDAP-сервера. Подробности см. В разделе 19.3.7.

радиус

Аутентификация с использованием сервера RADIUS. Подробнее см. В разделе 19.3.8.

верняк

Аутентификация с использованием сертификатов SSL-клиентов. Подробности см. В разделе 19.3.9.

Пэм

Аутентификация с использованием подключаемых модhive аутентификации (PAM), предоставляемых операционной системой. Подробнее см. В разделе 19.3.10.

Итак … чтобы решить проблему, с которой вы столкнулись, вы можете сделать одно из следующего:

  1. Измените метод (ы) проверки подлинности, определенный в pg_hba.conf на trust , md5 или password (в зависимости от ваших требований безопасности и простоты) для локальных записей соединений, которые вы определили там.

  2. Обновите pg_ident.conf чтобы сопоставить пользователей вашей операционной системы с пользователями PostgreSQL и предоставить им соответствующие права доступа в зависимости от ваших потребностей.

  3. Оставьте параметры IDENT отдельно и создайте пользователей в своей базе данных для каждого пользователя операционной системы, которому вы хотите предоставить доступ. Если пользователь уже прошел аутентификацию ОС и вошел в систему, PostgreSQL не потребует дополнительной проверки подлинности и предоставит доступ к этому пользователю на основе любых привилегий (ролей), назначенных ему в базе данных. Это конфигурация по умолчанию.

Примечание. Расположение pg_hba.conf и pg_ident.conf зависит от ОС.

Просто добавив бит -h localhost все было необходимо для работы

Вы можете установить переменную окружения PGHOST=localhost :

 $ psql -U db_user db_name psql: FATAL: Peer authentication failed for user "db_user" $ export PGHOST=localhost $ psql -U db_user db_name Password for user mfonline: 

Если ни одно из перечисленных выше не работает для вас:

Я сделал довольно много установок Postgres, но сегодня был запутан на RedHat 6.5 (установка Postgres 9.3). Моя типичная конфигурация hba.conf, показанная выше Ароном, не работает. Оказалось, что моя система использует IPV6 и игнорирует конфигурацию IPV4. Добавление строки:

 host all all ::1/128 password 

позволил мне войти в систему успешно.

Я обнаружил, что мне пришлось установить сервер идентификации, который прослушивает порт 113.

 sudo apt-get install pidentd sudo service postgresql restart 

И тут же работал.

Проблема по-прежнему остается в файле pg_hba.conf. Эта строка: вы можете найти этот файл в / etc / postgres / varion / main

 local all postgres peer Should be local all postgres md5 

Это краткое описание обоих вариантов в соответствии с официальными документами PostgreSQL по методам проверки подлинности.

Аутентификация со стороны

Метод одноранговой аутентификации работает путем получения имени пользователя операционной системы клиента из ядра и использования его в качестве разрешенного имени пользователя базы данных (с необязательным сопоставлением имен пользователей). Этот метод поддерживается только локальными подключениями.

Проверка пароля

Методы проверки подлинности на основе пароля – это md5 и пароль. Эти методы работают аналогично, кроме способа передачи пароля по соединению, а именно MD5-hashа и четкого текста соответственно.

Если вас вообще беспокоят пароли «обнюхивания» атак, то предпочтительным является md5. По возможности всегда следует избегать простого пароля. Однако md5 нельзя использовать с функцией db_user_namespace. Если соединение защищено SSL-шифрованием, тогда пароль можно использовать безопасно (хотя проверка подлинности SSL-сертификата может быть лучшим выбором, если он зависит от использования SSL).

После изменения этого файла не забудьте перезагрузить сервер PostgreSQL. Если вы работаете в Linux, это будет sudo service postgresql restart.

Из всех ответов выше ничего не работало для меня. Мне пришлось вручную изменить пароль пользователей в базе данных, и это внезапно сработало.

 psql -U postgres -d postgres -c "alter user produser with password 'produser';" 

Я использовал следующие настройки:

pg_hba.conf

 local all all peer # IPv4 local connections: host all all 127.0.0.1/32 password # IPv6 local connections: host all all ::1/128 password 

Соединение успешно завершено для следующей команды:

 psql -U produser -d dbname -h localhost -W 

мое решение на PostgreSQL 9.3 на Mac OSX в оболочке bash состояло в том, чтобы использовать sudo для входа в папку данных, а затем добавить необходимые строки в файл pg_hba.conf чтобы разрешить всем пользователям доверять и иметь возможность входа в систему. это то, что я сделал:

 # in bash_profile edit PGDATA environmental variable open ~/.bash_profile # append this line to bash_profile export PGDATA="/Library/PostgreSQL/9.3/data" # reload bash_profile source ~/.bash_profile # open pg_hba.conf in vim sudo vi /Library/PostgreSQL/9.3/data/pg_hba.conf # append these two lines to the end of the pg_hba.conf file local all all trust host all all 127.0.0.1/32 trust # can now login as user in bash psql -d  -U  -W 

Хммм …

Если вы можете подключиться к имени пользователя и паролю в pgAdminIII, но вы не можете подключиться к psql эти две программы, вероятно, будут подключаться к базе данных по-разному.

[Если вы подключаетесь к различным базам данных, сначала попробуйте подключиться к одной базе данных. Смотри ниже.]

Из PostgreSQL: Документация: 9.3: psql :

Если вы опустите имя хоста, psql будет подключаться через сокет Unix-домена к серверу на локальном хосте или через TCP / IP в localhost на компьютерах, у которых нет сокетов Unix-домена.

Если вы не используете что-то вроде psql ... -h host_name ... , и вы используете Ubuntu, psql должен подключаться через сокет Unix-домена, поэтому PostgreSQL, вероятно, не настроен для разрешения одного из паролей методы аутентификации для пользователя postgres .

Вы можете проверить это, запустив:

sudo -u postgres psql

Если это работает, ваш сервер, вероятно, настроен на использование одноранговой аутентификации для локальных подключений пользователем postgres , то есть запрашивает ОС для вашего имени пользователя, чтобы подтвердить, что вы являетесь postgres .

Так что это, вероятно, ваш файл pg_hba.conf

Полный путь к файлу будет выглядеть как /etc/postgresql/9.3/main/pg_hba.conf . Вы можете просмотреть его, например, sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more .

Если вы упускаете имя хоста в вашей команде psql , вы должны иметь возможность подключиться, если вы добавите следующую запись в свой файл pg_hba.conf :

 # Connection type Database User IP addresses Method local all postgres md5 

[Прокомментированные строки в файле pg_hba.conf начинаются с # .]

Если вы включаете имя хоста в команду psql , добавьте эту запись:

 # Connection type Database User IP addresses Method host all postgres 127.0.0.1/32 md5 

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

Подробнее о pg_hba.conf

Из PostgreSQL: Документация: 9.3: Файл pg_hba.conf [смелый акцент мой]:

Для выполнения аутентификации используется первая запись с подходящим типом соединения , адресом клиента , запрошенной базой данных и именем пользователя. Нет «провалов» или «резервных копий»: если одна запись выбрана и аутентификация не удалась, последующие записи не рассматриваются. Если запись не соответствует, доступ запрещен.

Обратите внимание, что записи не сопоставляются с методом проверки подлинности. Итак, если ваш файл pg_hba.conf содержит следующую запись:

 # Connection type Database User IP addresses Method local all postgres peer 

Тогда вы не сможете подключиться через:

psql -u postgres

Если одна из этих записей не находится в вашем файле pg_hba.conf выше предыдущей записи:

 # Connection type Database User IP addresses Method local all postgres md5 local all postgres password # Unencrypted! local all all md5 local all all password # Unencrypted! 

Если вы все это сделали и все еще не работают, проверьте срок действия этого пользователя:

Ошибка аутентификации паролей Postgres

Я потратил больше времени на решение этой ошибки, которую я хочу признать.

Я думаю, что порядок настройки аутентификации в pg_hba.conf имеет значение в вашем случае. Файл конфигурации по умолчанию включает несколько строк в установке vanilla. Эти значения по умолчанию могут соответствовать условиям попыток аутентификации, что приводит к сбою в аутентификации. Он выходит из строя независимо от дополнительной конфигурации, добавленной в конце файла .conf.

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

 LOG: could not connect to Ident server at address "127.0.0.1", port 113: Connection refused FATAL: Ident authentication failed for user "acme" DETAIL: Connection matched pg_hba.conf line 82: "host all all 127.0.0.1/32 ident" 

Оказывается, эта строка по умолчанию вызывает отклонение.

 host all all 127.0.0.1/32 ident 

попробуйте прокомментировать это.

Один взломать это – отредактировать pg_hba.conf

 sudo vi /etc/postgresql/9.3/main/pg_hba.conf 

Временно

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

На этом вы закончили. Для обеспечения безопасности, затем

 sudo -u postgres psql template1 ALTER USER postgres with encrypted password 'your_password'; 

затем вернитесь и установите pg_hba.conf обратно

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

У меня была аналогичная проблема, и я исправил ее в pg_hba.conf при удалении всех методов идентификатора даже для адреса IP6 (несмотря на то, что у меня только IP4 на машине).

 host all all 127.0.0.1/32 password host all all ::1/128 password #for pgAdmin running at local network host all all 192.168.0.0/24 md5 

В моем случае, решение здесь: (для людей, которым это касается) login to postgres:

 sudo -i -u postgres psql ALTER USER postgres WITH PASSWORD 'postgres'; # type your password here 

С уважением

Для fedora26 и postgres9.6

Сначала зарегистрируйтесь как пользователь root
затем введите в psql следующие команды:
$ su postgres
затем введите $ psql

в psql найти местоположение hba_file ==> означает pg_hba.conf

postgres = # show hba_file;

hba_file

/etc/postgresql/9.6/main/pg_hba.conf
(1 ряд)

в файле pg_hba.conf изменить доступ пользователя к этому

хост все все 127.0.0.1/32 md5

После этого я получил то же самое: установка PostgreSQL для разработки Rails в Ubuntu 12.04

Я попробовал другие ответы, но все, что мне нужно было сделать, это: «config / database.yml»

 development: adapter: postgresql encoding: unicode database: (appname)_development pool: 5 username: (username you granted appname database priviledges to) password: 

Если вы используете его в CentOS, вам может потребоваться перезагрузить postgres после принятия вышеуказанных решений:

 systemctl restart postgresql-9.3.service 

Это сработало для меня: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#

 local all postgres trust local all myapp_usr trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: #host all all ::1/128 trust 
Interesting Posts
Давайте будем гением компьютера.