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

252

Я установил PostgreSQL 8.4, Postgres client и 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 комментарий
Теги:
pgadmin

9 ответов

500
Лучший ответ

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

Предполагая, что у вас есть 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 вы можете указать пользователю DB postgres:

ALTER USER postgres PASSWORD 'newPassword';

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

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

  • 0
    Это лучше, спасибо тебе! PSQL работает. Но все еще есть проблемы с pgadmin3 - он спросил меня пароль для моего пользователя root системы. (странно для меня) pg_hba.conf, как вы говорите.
  • 0
    Я бы добавил, чтобы затем выйти из консоли, используя '\ q'. Мне понадобилось время, чтобы найти это :)
Показать ещё 11 комментариев
95

Ответ персонала верен, но если вы хотите продолжить автоматизацию, выполните:

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

Готово! Вы сохранили User = postgres и password = postgres.

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

$ sudo passwd postgres

  • 0
    Эта команда не выполняется, поскольку вы не проходите порт.
25

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

так что если вы сделаете что-то вроде выше

local all postgres ident

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

$PSQL psql (9.2.4) Введите "help" для справки.

postgres = #

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

  • 19
    По типу Ubuntu: sudo service postgresql restart
  • 3
    для RHEL7 используйте sudo systemctl restart postgresql.service
Показать ещё 2 комментария
10

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

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

# su - postgres

Войти в psql

# psql

Надеюсь, что поможет

  • 3
    su - postgres запрашивает пароль на posgresql 9.5 на Ubuntu 16.04
  • 2
    su - postgres - это команда, которую предлагает официальная документация Fedora, но я тоже получаю запрос пароля. Чтобы обойти это, я следил за этим письмом на форуме postgres, которое использует ту же команду, что и принятый ответ: sudo -u postgres psql . Не забудьте инициализировать и запустить сервер базы данных.
8

Отредактируйте файл 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
6

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

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

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

Как правило: ВЫ ДОЛЖНЫ НИКОГДА НЕ УСТАНОВИТЬ ПАРОЛЬ ДЛЯ ПОЛЬЗОВАТЕЛЯ ПОСТРООВ.

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

sudo -u postgres -c "DROP ROLE superuser;"
  • 0
    В чем причина этого правила?
  • 0
    Таким образом, вы никогда не сможете обвинить всех своих суперпользователей.
Показать ещё 2 комментария
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

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

См. Ошибка аутентификации паролей Postgres для получения более подробной информации.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню