psql: фатально: ошибка аутентификации Ident для пользователя " postgres"

Я установил PostgreSQL и pgAdminIII на мой кармический ящик Ubuntu.

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

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

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

21 ответов


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

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


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

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

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

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

$ 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), но вот соответствующий фрагмент, чтобы помочь с проблемой, которую вы имеете (из версия 9.5 руководство):

доверие

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

отклонение

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

MD5 в

требовать от клиента предоставления двойного MD5-хэшированного пароля для идентификация. См. раздел 19.3.2 для деталей.

пароль

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

gss

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

sspi

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

идент

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

peer

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

в LDAP

аутентификация с помощью сервера LDAP. См. раздел 19.3.7 для деталей.

радиус

аутентификация с помощью сервера RADIUS. См. раздел 19.3.8 для деталей.

cert

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

Пэм

аутентификация с помощью подключаемых модулей аутентификации (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

и затем ident работал.


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

local   all             postgres                                peer
Should be

local   all             postgres                                md5

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

аутентификация однорангового

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

аутентификация по паролю

методы аутентификации на основе паролей-md5 и password. Эти методы работают аналогично, за исключением способа отправки пароля через соединение, а именно MD5-хэшированного и четкого текста соответственно.

Если вы вообще обеспокоены атаками "обнюхивания" пароля, то 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 файл, чтобы позволить всем пользователям доверять и иметь возможность войти в систему. Вот что я сделал:--4-->

# 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 <db_name> -U <user_name> -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

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

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

полный путь к файлу будет что-то как /и т. д./в PostgreSQL/9.3/главная/файле pg_hba.conf. Вы можете просмотреть его, например 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 файл начинается с #.]

если вы are включая имя хоста в вашем добавить запись вместо этого:

# 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 back to

# 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

в моем случае, решение здесь: (для тех, кто обеспокоен) войти в postgres:

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

в отношении


для fedora26 и postgres9.6

во-первых, войдите как пользователь root
затем введите в psql следующие команды
$Су Постгреса
затем введите $psql в

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

postgres=# показать hba_file;

hba_file

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

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

хоста все 127.0.0.1/32 MD5 в


У меня было то же самое issuse после этого:настройка PostgreSQL для разработки Rails в Ubuntu 12.04

я попробовал другие ответы, но все, что мне нужно было сделать, это:"конфигурация базы данных/.в формате 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