Postgresql: аутентификация по паролю не удалась для пользователя «postgres»


432

Я установил PostgreSQL 8.4, клиент Postgres и Pgadmin 3. Ошибка аутентификации пользователя "postgres" для консольного клиента и Pgadmin. Я набрал пользователя как «postgres» и пароль «postgres», потому что это работало раньше. Но теперь аутентификация не удалась. Я делал это раньше пару раз без этой проблемы. Что мне делать? А что происходит?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

1
В моем случае соединение не удается, потому что пароль слишком сложный ...
JJD

3
Обязательно прочитайте весь путь вниз по этой странице. Я должен был сделать несколько вещей, чтобы заставить это работать. Сначала ALTERшаг , потом редактирование моего pg_hba.confфайла , затем перезапуск postgres .
elrobis


Также убедитесь, что у вас не запущены два экземпляра Postgres: один в Windows, другой в Docker. Докер не сообщил мне, что порт уже занят. Итак, инструмент подключен к машине Windows Postgres, тогда как в Docker Postcker все было хорошо.
Коппор

Ответы:


751

Если я правильно помню, у пользователя postgresнет пароля БД, установленного в Ubuntu по умолчанию. Это означает, что вы можете войти в эту учетную запись только через учетную запись postgres пользователя ОС .

Предполагая, что у вас есть rootдоступ на поле, вы можете сделать:

sudo -u postgres psql

Если это не удается с database "postgres" does not existsошибкой, то вы, скорее всего, находитесь не на сервере Ubuntu или Debian :-) В этом случае просто добавьте template1в команду:

sudo -u postgres psql template1

Если какая-либо из этих команд завершается с ошибкой, psql: FATAL: password authentication failed for user "postgres"проверьте файл /etc/postgresql/8.4/main/pg_hba.conf: в первой строке без комментариев должна быть строка, подобная этой:

local   all         postgres                          ident

Для более новых версий PostgreSQL на identсамом деле может быть peer. Это тоже нормально.

Внутри psqlоболочки вы можете дать пользователю БД postgres пароль:

ALTER USER postgres PASSWORD 'newPassword';

Вы можете покинуть psqlоболочку, набрав CtrlDили с помощью команды \q.

Теперь вы сможете дать pgAdmin действительный пароль для суперпользователя БД, и он тоже будет счастлив. :-)


Это лучше, спасибо! PSQL работает. Но все еще есть проблемы с pgadmin3 - он спрашивает пароль для пользователя root. (странно для меня) pg_hba.conf, как вы говорите.
I159

Я бы добавил, чтобы затем выйти из консоли, используя '\ q'. Мне понадобилось время, чтобы найти это :)
hakunin

2
Обратите внимание, что для работы pg_hba.conf пользователь postgres должен быть настроен identна первые шаги. Если вы уже установили md5 или что-то еще, вы не сможете выполнить автоматический вход.
Серин,

80
Очень хороший Другим новым пользователям НЕ ЗАБЫВАЙТЕ СЕМИКОЛОН в конце строки ALTER USER.
itols

3
@itsols Вы сказали: «Очень мило. Другим новым пользователям НЕ ЗАБЫВАЙТЕ СЕМИКОЛОН в конце строки ALTER USER» ... Вы только что завершили четырехчасовое испытание !! Я чувствую себя оооочень глупо и благодарен прямо сейчас. :-D
Frozenjim

149

Реакция персонала правильная, но при дальнейшей автоматизации можно сделать:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Выполнено! Вы сохранили пользователя = postgres и пароль = postgres.

Если у вас нет пароля для пользователя postgres ubuntu, выполните:

$ sudo passwd postgres


Будьте осторожны, если ваш пароль содержит интересные символы, такие как '!'
Брайан Петерсон

45

Это было неприятно, большинство из приведенных выше ответов верны, но в них не упоминается, что вам нужно перезапустить службу базы данных, чтобы изменения в файле pg_hba.conf вступили в силу.

поэтому, если вы сделаете изменения, как указано выше:

local all postgres ident

затем перезапустите с правами root (на centos это что-то вроде перезапуска службы сервиса postgresql-9.2), теперь вы сможете получить доступ к базе данных как пользователь postgres

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

Надеюсь, что это добавляет информацию для новых пользователей Postgres


26
На Ubuntu типа: sudo service postgresql restart
Энн Килзер

4
для использования RHEL7sudo systemctl restart postgresql.service
Spechal

1
Как насчет Mac?
Остин

1
Для Mac, закажите этот вопрос на SO stackoverflow.com/questions/7975556/…
Рохит Нандакумар

Спасибо Мигель. Я вручную ввел пароль, и мой pgAdmin не подключался к данным, пока я не перезапустил сервер postgres.
Устин

20

Отредактируйте файл pg_hba.conf, например, с помощью sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Измените все методы аутентификации на trust. Измените пароль Unix для пользователя "postgres". Перезагрузите сервер. Войдите в систему psql -h localhost -U postgresи используйте только что установленный пароль Unix. Если это работает, вы можете переустановить файл pg_hba.conf на значения по умолчанию.


1
Если вы застряли полностью, это единственный гарантированный метод. Измените все методы на доверительные, перезапустите db, затем от имени root:, sudo su - postgresзатем установите / исправьте / отмените пароль для postgres db (и в оболочке, если необходимо), затем восстановите для безопасных методов md5или identметодов и перезапустите снова, чтобы значения остались прежними. Кстати, на Cent / RedHat 9.4 файл находится по адресу:/var/lib/pgsql/9.4/data/pg_hba.conf
PapaK

17

Для тех, кто использует его впервые и не имеет никакой информации относительно пароля, они могут выполнить следующие шаги (при условии, что вы находитесь в Ubuntu):

  1. Откройте файл pg_hba.conf в/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2. Изменить нижнюю строку

     local   all             postgres                                peer

    в

     local   all             postgres                                trust
  2. Перезагрузите сервер

      sudo service postgresql restart
  3. Наконец, вы можете войти без пароля, как показано на рисункеНаконец, вы можете войти без пароля, как показано на рисунке

Ссылка здесь для получения дополнительной информации


12

Если вы пытаетесь войти в оболочку postgres как пользователь postgres, вы можете использовать следующие команды.

переключиться на пользователя postgres

# su - postgres

войти в PSQL

# psql

надеюсь, это поможет


3
su - postgresзапрашивает пароль на posgresql 9.5 на Ubuntu 16.04
Прашант Чандра

3
su - postgresэто команда, которую предлагает официальная документация Fedora , но я тоже получаю запрос пароля. Чтобы обойти , что я последовал за этот Postgres форум электронной почты , которая использует ту же команду , как общепринятом ответ здесь: sudo -u postgres psql. Не забудьте инициализировать и запустить сервер базы данных.
icc97

11

Старайтесь не использовать параметр -W и оставьте пароль пустым. Иногда пользователь создается без пароля.

Если это не сработает, сбросьте пароль. Есть несколько способов сделать это, но это работает на многих системах:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

7

Как правило: вы никогда не должны устанавливать пароль для пользователя POSTGRES .

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

sudo -u postgres -c "DROP ROLE superuser;"

1
В чем причина этого правила?
Гершом

2
Таким образом, вы никогда не сможете обвинить всех своих суперпользователей.
ardilgulez

1
Как установка пароля для postgres может привести к компрометации всех суперпользователей?
Гершом

4
установка пароля не приводит к компрометации всех суперпользователей, но не установка пароля гарантирует, что вы никогда не скомпрометируете всех суперпользователей. причина в том, что, если вы не установите пароль, любая попытка входа в систему с паролем для пользователя postgres будет отклонена, тогда как вы все равно можете использовать его самостоятельно по доверию.
ardilgulez

7

Как только вы попали в оболочку postgres, введите эту команду

postgres=# \password postgres

После ввода этой команды вам будет предложено установить пароль, просто установите пароль и попробуйте.


3

Когда вы устанавливаете postgresql, пароль для пользователя postgres не устанавливается, вы должны явно установить его в Unix с помощью команды:

sudo passwd postgres

Он спросит ваш пароль sudo, а затем запросит новый пароль пользователя postgres. Источник


0

Я просто хотел добавить, что вы также должны проверить, не истек ли ваш пароль.

См. Сбой аутентификации с помощью пароля Postgres .


1
Пожалуйста, добавьте некоторые детали и краткое изложение того, что эта ссылка предоставляет в случае, если в будущем ссылка больше не существует. В противном случае это может быть помечено как некачественный ответ / ответ только по ссылке.
Таннер

Я бы прочитал это: meta.stackexchange.com/questions/8231/…
Таннер

0

Вот несколько комбинаций, в которые я попытался войти:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

0

У меня была аналогичная проблема. Ubuntu оставили мне войти в консоль с любым паролем суперпользователя. За исключением случаев, когда я соединился с -h localhost в командной строке psql.

Я тоже заметил, что "localhost: 8080 / MyJSPSiteLogIn" - показал: Fatal: ошибка аутентификации с пользователем "user".

pg_hba.conf был в порядке.

Я отметил, что в одном и том же сервисе работали две версии postgres.

Решено - удаление inutil версии.


0

Я сталкивался с подобной проблемой. При доступе к любой базе данных я получал запрос ниже после обновления пароля «аутентификация по паролю не удалась для пользователя« postgres »» в PGAdmin


Решение:

  1. Завершить работу сервера postgres
  2. Перезапустите pgadmin
  3. pgadmin попросит пароль.
  4. Пожалуйста, введите текущий пароль указанного пользователя

Надеюсь, это решит вашу проблему

введите описание изображения здесь


-1

Я надеюсь, что это поможет вам не так много времени. Вы можете изменить пароль Postgres SQL с помощью команды ниже.

команда

sudo -u postgres psql

И затем вы можете обновить пароль

команда

Изменить пароль пользователя postgres 'YOUR_NEW_PASSWORD';


1
Ваш ответ просто содержит информацию, которая уже была добавлена: stackoverflow.com/a/7696398/8283469
L. Guthardt
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.