Postgresql: аутентификация по паролю не удалась для пользователя "postgres" - PullRequest
330 голосов
/ 08 октября 2011

Я установил 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"

Ответы [ 12 ]

612 голосов
/ 08 октября 2011

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

ALTER USER postgres PASSWORD 'newPassword';

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

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

125 голосов
/ 10 декабря 2012

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

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

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

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

$ sudo passwd postgres

36 голосов
/ 05 августа 2013

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

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

local all postgres ident

then restart от имени root (в centos это что-то вроде перезапуска службы service postgresql-9.2) Теперь вы должны иметь доступ к БД как пользователь postgres

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

postgres=# 

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

15 голосов
/ 10 июля 2014

Отредактируйте файл 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 на значения по умолчанию.

11 голосов
/ 13 июня 2013

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

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

# su - postgres

войдите в psql

# psql

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

10 голосов
/ 16 августа 2018

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

  1. Открыть файл pg_hba.conf in /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. Наконец, вы можете войти без пароля, как показано на рисунке Finally you can login without need of a password as shown in the figure

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

10 голосов
/ 08 октября 2011

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

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

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';
4 голосов
/ 20 октября 2016

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

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

sudo -u postgres -c "DROP ROLE superuser;"
0 голосов
/ 02 июля 2018

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

Команда

sudo -u postgres psql

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

Команда

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

0 голосов
/ 30 марта 2018

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

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

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

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

Решено - удаление неиспользуемой версии.

...