Postgresql: не вдалося встановити автентифікацію пароля для користувача "postgres"


431

Я встановив 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 все було добре.
коппор

Відповіді:


750

Якщо я добре пам'ятаю, користувач за замовчуванням 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оболонку, ввівши CtrlDабо за допомогою команди \q.

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


Краще, дякую! psql - це твори. Але все ще є проблеми з pgadmin3 - він запитав мене паролем для мого користувача root системи. (дивно для мене) pg_hba.conf, як ти кажеш.
I159

Я додам, щоб потім вийти з консолі за допомогою '\ q'. Зайняв мене час, щоб знайти це :)
hakunin

2
Зауважте, що pg_hba.conf повинен встановити користувач postgres, щоб identперші кроки працювали. Якщо ви вже встановили його на md5 або щось інше, ви не зможете автоматично увійти в систему.
Серін

80
Дуже приємний. Іншим новим користувачам НЕ ЗАБУДУЙТЕ СЕМИКОЛОН наприкінці лінії ALTER USER.
itsols

3
@itsols Ви сказали: "Дуже приємно. Іншим новим користувачам НЕ ЗАБУДУЙТЕ СЕМИКОЛОН наприкінці лінії ПОЛЬШЕ ПОЛЬЗОВАТЕЛЯ" ... Ви щойно закінчили випробування на чотири години !! Я зараз відчуваю себе так дурно і вдячно. :-D
заморожений

148

Відповідь персоналу правильна, але якщо ви хочете додатково автоматизувати, можна зробити:

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

Готово! Ви зберегли User = postgres та password = postgres.

Якщо у вас немає пароля для User postgres ubuntu:

$ sudo passwd postgres


Будьте уважні, якщо ваш пароль містить цікаві символи типу "!"
Брайан Петерсон

45

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

тож якщо ви внесете зміни, як зазначено вище:

local all postgres ident

потім перезавантажте як root (на centos - це щось на кшталт служби postgresql-9.2 перезапуск), тепер ви повинні мати можливість отримати доступ до db як користувальницькі postgres

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

postgres=# 

Сподіваємось, це додає інформацію для нових користувачів postgres


26
Про тип ubuntu: sudo service postgresql restart
Ann Kilzer

4
для використання RHEL7sudo systemctl restart postgresql.service
Spechal

1
А як щодо mac?
AustinT

1
Для макінтоша, перевірка цього питання на SO stackoverflow.com/questions/7975556 / ...
Rohith Nandakumar

Дякую Мігелю. Я змінив пароль вручну, і мій 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
Prashanth Chandra

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

Як правило: ВИ НІКОЛИ НЕ БУДЕте встановлювати ПАРОЛЬ ДЛЯ ПОСЛУГОК .

Якщо вам потрібен суперпопулярний доступ від pgAdmin, зробіть інший суперпользователь. Таким чином, якщо облікові дані для цього суперрусера порушені, ви завжди можете перейти до фактичного хоста бази даних та вручну видалити суперпользователя за допомогою

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

1
У чому причина цього правила?
Гершом

2
Так що ви ніколи не зможете присвоїти всі свої суперподозрівники.
ardilgulez

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

4
встановлення пароля не призводить до того, що будуть порушені всі суперпользователи, але не встановлення пароля гарантує, що ви ніколи не будете порушені з усіма суперпользователями. Причина полягає в тому, що якщо ви не встановите пароль, будь-яка спроба входу в паролі користувачеві postgres буде відхилена, тоді як ви все одно можете користуватися ним самостійно довірою.
ardilgulez

7

Після того, як ви перебуваєте в оболонці постгрес, введіть цю команду

postgres=# \password postgres

Після введення цієї команди вам буде запропоновано встановити свій пароль, просто встановіть пароль та спробуйте.


3

При встановленні postgresql не встановлюється пароль для користувальницьких postgres, ви повинні явно встановити його в Unix, використовуючи команду:

sudo passwd postgres

Він запитає ваш пароль sudo, а потім запропонує вам новий пароль користувача postgres. Джерело


0

Я просто хотів додати, що ви також повинні перевірити, чи термін дії вашого пароля минув.

Подробиці див. У розділі " Postgres" .


1
Будь ласка, додайте детальну інформацію та резюме того, що це посилання надає, якщо в майбутньому посилання більше не існує. В іншому випадку це, ймовірно, буде позначено як відповідь лише низької якості / посилання.
Таннер


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.

Вирішено - видалення інутильної версії.


0

Я зіткнувся з подібним питанням. Під час доступу до будь-якої бази даних я потрапив нижче підказки після оновлення пароля "не вдалося встановити автентифікацію пароля для" postgres "" у PGAdmin


Рішення:

  1. Вимкніть сервер postgres
  2. Повторно запустіть pgadmin
  3. pgadmin запитає пароль.
  4. Введіть поточний пароль згаданого користувача

Сподіваємось, це вирішить вашу проблему

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


-1

Я сподіваюся, що це допоможе вам недовго. Ви можете змінити пароль postgres sql за допомогою команди нижче.

Командування

sudo -u postgres psql

А далі ви можете оновити пароль

Командування

Змінити пароль користувача після пошти "YOUR_NEW_PASSWORD";


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