Я установил PostgreSQL и pgAdminIII на свою коробку Ubuntu Karmic.
Я могу успешно использовать pgAdminIII (т.е. подключиться / войти в систему), однако, когда я пытаюсь войти на сервер, используя то же имя пользователя / pwd в командной строке (используя psql), я получаю сообщение об ошибке:
psql: FATAL: Ident authentication failed for user "postgres"
Кто-нибудь сейчас как решить эту проблему?
postgresql
morpheous
источник
источник
Ответы:
Вы установили правильные настройки в pg_hba.conf?
См. Https://help.ubuntu.com/stable/serverguide/postgresql.html, как это сделать.
источник
Следующие шаги работают для новой установки postgres 9.1 на Ubuntu 12.04. (Работал для postgres 9.3.9 и в Ubuntu 14.04.)
По умолчанию postgres создает пользователя с именем «postgres». Мы авторизируемся как она и дадим ей пароль.
Выйдите из системы
psql
, набрав\q
илиctrl+d
. Затем мы подключаемся как «postgres». Эта-h localhost
часть важна : она сообщаетpsql
клиенту, что мы хотим подключиться через TCP-соединение (которое настроено на использование аутентификации по паролю), а не через соединение PEER (которое не заботится о пароле).источник
PGHOST=localhost
вам не нужно указывать-h
опцию каждый раз. Это также работает с другимиpg_*
командами, такими какpg_dump
.Редактировать этот файл
/etc/postgresql/8.4/main/pg_hba.conf
и заменитьident
илиpeer
либоmd5
илиtrust
, в зависимости от того, хотите ли вы его запрашивают пароль на свой компьютер или нет. Затем перезагрузите файл конфигурации с помощью:источник
restart
сработало только для меня, а неreload
--- после изменения/etc/postgresql/9.5/main/pg_hba.conf
(измененияpeer
наtrust
).Вы получаете эту ошибку, потому что вы не проходите аутентификацию клиента. Исходя из сообщения об ошибке, у вас, вероятно, есть конфигурация postgres по умолчанию, которая устанавливает метод аутентификации клиента «IDENT» для всех соединений PostgreSQL.
Вы должны обязательно прочитать раздел 19.1 «Аутентификация клиента» в руководстве по PostgreSQL, чтобы лучше понять доступные параметры аутентификации (для каждой записи в pg_hba.conf ), но здесь приведен соответствующий фрагмент, который поможет вам решить проблему (из руководства по версии 9.5) ):
Итак ... чтобы решить проблему, с которой вы столкнулись, вы можете выполнить одно из следующих действий:
Измените методы проверки подлинности, определенные в вашем
pg_hba.conf
файлеtrust
, наmd5
, илиpassword
(в зависимости от ваших требований безопасности и простоты) для локальных записей подключения, которые вы там определили.Обновление
pg_ident.conf
для сопоставления пользователей вашей операционной системы с пользователями PostgreSQL и предоставления им соответствующих прав доступа, в зависимости от ваших потребностей.Оставьте параметры IDENT в покое и создайте пользователей в своей базе данных для каждого пользователя операционной системы, которому вы хотите предоставить доступ. Если пользователь уже прошел аутентификацию в ОС и вошел в систему, PostgreSQL не потребует дополнительной аутентификации и предоставит доступ этому пользователю на основе любых привилегий (ролей), назначенных ему в базе данных. Это конфигурация по умолчанию.
Примечание. Расположение
pg_hba.conf
иpg_ident.conf
зависит от ОС.источник
/etc/postgresql/9.6/main/pg_hba.conf
.Простое добавление
-h localhost
бита - это все, что мне нужно для работыисточник
this_computer = 'http://localhost'
Вы можете установить переменную среды
PGHOST=localhost
:источник
В случае, если ничего из вышеперечисленного не работает для вас:
я выполнил довольно много установок Postgres, но сегодня был сбит с толку в системе RedHat 6.5 (установка Postgres 9.3). Моя типичная конфигурация hba.conf, которую Aron показывает выше, не работает. Оказалось, что моя система использует IPV6 и игнорирует конфигурацию IPV4. Добавление строки:
позволил мне войти в систему успешно.
источник
Из всех приведенных выше ответов у меня ничего не получалось. Мне пришлось вручную изменить пароль пользователя в базе данных, и он неожиданно сработал.
Я использовал следующие настройки:
pg_hba.conf
Наконец, соединение успешно выполнено для следующей команды:
источник
Я обнаружил, что мне нужно было установить сервер идентификации, который прослушивает порт 113.
А потом идент работал.
источник
Хм ...
Если вы можете подключиться с помощью имени пользователя и пароля в pgAdminIII, но не можете подключиться,
psql
тогда эти две программы, вероятно, подключаются к базе данных по-разному.[Если вы подключаетесь к разным базам данных, сначала попробуйте подключиться к одной и той же базе данных. См. ниже.]
Из PostgreSQL: Документация: 9.3: psql :
Если у вас нет чего-то подобного
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
.Если вы опускаете имя хоста в своей
psql
команде, вы сможете подключиться, если добавите следующую запись в файл pg_hba.conf :[Комментируемые строки в файле pg_hba.conf начинаются с
#
.]Если будут в том числе имени хоста в
psql
команде, добавьте эту запись вместо:Вам нужно поставить запись, прежде чем любые другие записи будут сопоставлены для вашего подключения через
psql
. Если вы сомневаетесь в том, куда его поместить, просто поместите его перед первой строкой без комментариев.Подробнее о pg_hba.conf
Из PostgreSQL: Документация: 9.3: Файл pg_hba.conf [жирный акцент мой]:
Обратите внимание, что записи не совпадают по методу аутентификации. Итак, если ваш файл pg_hba.conf содержит следующую запись:
Тогда вы не сможете подключиться через:
psql -u postgres
Если одна из этих записей не находится в вашем pg_hba.conf файл выше прежнего входа:
источник
В моем случае решение здесь: (для заинтересованных лиц) войдите в postgres:
С уважением
источник
Проблема все еще в вашем файле pg_hba.conf. Эта строка: Вы можете найти этот файл в / etc / postgres / varion / main
Это краткое описание обеих опций в соответствии с официальными документами PostgreSQL по методам аутентификации.
Одноранговая аутентификация
Метод одноранговой аутентификации работает путем получения имени пользователя операционной системы клиента из ядра и использования его в качестве разрешенного имени пользователя базы данных (с необязательным отображением имени пользователя). Этот метод поддерживается только для локальных подключений.
Аутентификация по паролю
Методы аутентификации на основе пароля - это md5 и пароль. Эти методы работают аналогично, за исключением того, что пароль передается по соединению, а именно, MD5-хэшированный и открытый текст соответственно.
Если вас вообще беспокоят атаки с «перехватом» пароля, тогда md5 предпочтительнее. Простой пароль всегда следует избегать, если это возможно. Однако md5 нельзя использовать с функцией db_user_namespace. Если соединение защищено шифрованием SSL, пароль можно использовать безопасно (хотя аутентификация SSL-сертификата может быть лучшим выбором, если вы используете SSL).
После изменения этого файла не забудьте перезапустить ваш сервер PostgreSQL. Если вы работаете в Linux, это было бы
sudo service postgresql restart.
источник
Для fedora26 и postgres9.6
Сначала войдите в систему как пользователь root, затем войдите в psql с помощью следующих команд
тогда
в
psql
поиске местоположения hba_file ==> означаетpg_hba.conf
в файле
pg_hba.conf
изменить доступ пользователя к этомуисточник
Мое решение на PostgreSQL 9.3 на Mac OSX в оболочке bash состояло в том,
sudo
чтобы перейти в папку с данными, а затем добавить необходимые строки вpg_hba.conf
файл, чтобы все пользователи могли быть доверенными и иметь возможность войти в систему. Это то, что я сделал :источник
Если вы сделали все это, и это все еще не работает, проверьте срок действия для этого пользователя:
Проверка подлинности пароля Postgres не удалась
источник
Я потратил больше времени на решение этой ошибки, которую я хочу признать.
Я думаю, что порядок настройки аутентификации в pg_hba.conf уместен в вашем случае. Конфигурационный файл по умолчанию содержит несколько строк в стандартной установке. Эти значения по умолчанию могут соответствовать условиям ваших попыток аутентификации, что приводит к невозможности аутентификации. Сбой происходит независимо от дополнительной конфигурации, добавленной в конец файла .conf.
Чтобы проверить, какая строка конфигурации используется, обязательно посмотрите на файл журнала по умолчанию для сообщений. Вы можете увидеть что-то вроде этого
Оказывается, эта строка по умолчанию вызывает отклонение.
попробуйте это закомментировать.
источник
Один из способов сделать это - отредактировать pg_hba.conf.
Временно
На данный момент вы сделали. Для безопасности, тогда иди и
затем вернитесь и установите pg_hba.conf обратно
источник
У меня была похожая проблема, и я исправил ее в pg_hba.conf при удалении всех методов идентификатора даже для IP6-адреса (несмотря на то, что у меня только IP4 на машине).
источник
После этого у меня возникла такая же проблема: Настройка PostgreSQL для разработки Rails в Ubuntu 12.04
Я попробовал другие ответы, но все, что мне нужно было сделать, это: "config / database.yml"
источник
Если вы используете его в CentOS, вам может потребоваться перезагрузить postgres после принятия вышеуказанных решений:
источник
postgresql
systemctl status | grep postgres
Мне пришлось переустановить pdAdmin, чтобы решить эту проблему
источник
Для Windows, если вы не хотите редактировать pb_gba.conf, т.е. оставляете метод на MD5 (по умолчанию), создайте нового пользователя, запустив этот запрос в инструменте Query в PGadmin.
тогда в cmd
где dbname - это ваша база данных в postgresql
источник
Это сработало для меня: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#
источник