Забутий пароль Windows PostgreSQL


31

Сьогодні вранці я намагався підключити базу даних PostgreSQL на робочому столі Windows 7 Professional.

Значенням за замовчуванням є "postgres", але досить впевнений, я забув, який пароль я використовував, коли його спочатку встановив.

Я переглянув Google і знайшов публікацію, пов’язану зі скиданням вашого пароля. Я дотримувався кроків, але кінцевий результат трохи інший, ніж згадується у публікації. Я використав-

net user postgres postgres

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

"Виникла помилка системи 5. Доступ заборонено."

системна помилка. Як уникнути цієї помилки та скинути пароль?

Відповіді:


33

(Примітка. Не багато цього стосується читачів, які використовують PostgreSQL 9.2 або вище від встановників EDB, у яких тепер значно спрощена установка за замовчуванням за допомогою NETWORK SERVICE, хоча ви все ще можете налаштувати інші облікові записи) .


Я використовував net user postgres postgres для скидання пароля для своєї бази даних, але замість повідомлення про успіх я отримую"System error 5 has occurred. Access is denied."

Ви скинули (або намагалися скинути) пароль облікового запису служби. PostgreSQL не запускається як адміністратор з міркувань безпеки, і інсталятор, як правило, налаштовує його за допомогою "postgres" облікового запису користувача в PostgreSQL 9.1 і старшій версії 1 . У Windows ви не можете запустити послугу як користувач, не зберігаючи пароль користувача в реєстрі, тому це робить інсталятор.

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

На щастя, я думаю, що ще одна помилка завадила тобі це зробити. Схоже, ви, ймовірно, запускаєте командний рядок, не використовуючи "Запустити як адміністратор" в непривілейованому обліковому записі користувача Windows або на машині з UAC, тому він не працює з правами доступу, необхідними для зміни пароля для postgresкористувача.

Перш ніж спробувати змінити цей пароль, переконайтеся, що це дійсно те, що ви хочете зробити. Яку проблему ви намагаєтеся вирішити тут? Ви намагаєтесь встановити оновлення бази даних чи щось інше, що запитує пароль для користувача postgresWindows?

Швидше за все, ви просто намагаєтесь увійти до бази даних. Для цього ви використовуєте (на жаль, абсолютно не пов'язаний) пароль, що зберігається в базі даних. Оскільки ви втратили / забули його, вам доведеться скинути його:

  • Знайдіть своє pg_hba.conf, як правило, вC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • При необхідності встановіть на нього дозволи, щоб ви могли їх змінити; ваш обліковий запис користувача може не зробити цього, доки ви не скористаєтеся вкладкою безпеки в діалоговому вікні властивостей, щоб надати собі це право за допомогою адміністративного замінення. Крім того, знайдіть блокнот / блокнот ++ у своєму пусковому меню, клацніть правою кнопкою миші, виберіть "Запустити як адміністратор", а потім скористайтеся пунктом меню Файл-> Відкрити pg_hba.conf.
  • Відредагуйте його, щоб встановити рядок "хост" для користувача "postgres" на хості "127.0.0.1/32" на "довіряти". Ви можете додати рядок, якщо його немає; просто вставити:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use
    

    перед будь-якими іншими рядками. (Ви можете ігнорувати коментарі, рядки, починаючи з #).

  • Перезапустіть службу PostgreSQL з панелі керування Служби (пуск-> запуск-> services.msc)

  • підключіться за допомогою psql або PgAdmin-III або будь-якого іншого
  • ALTER USER postgres PASSWORD 'postgres'
  • видаліть рядок, який ви додали, pg_hba.confабо змініть його назад
  • перезапустіть PostgreSQL ще раз.

Див.: Як скинути пароль postgres для PostgreSQL для Windows?


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


8
Також вам може знадобитися запис ip6: "розмістити всі поштові адреси :: 1/128 тресту"
Тед Елліотт

Все-таки вирвав мене з проблем з postreSQL 9.6 на моїй машині розробки. Не
знаєте,

@darwindave Залежить від вашого встановлення. Якщо ви встановили для використання NETWORKSERVICEоблікового запису користувача, немає пароля облікового запису servce. Якщо ви встановили використовувати спеціальний обліковий запис служби типу, наприклад, postgresабо обліковий запис домену, це може допомогти.
Крейг Рінгер

Чи можете ви довести цю відповідь до того, що 9.2+ також показують обидва методи для Windows?
Еван Керролл

1
@EvanCarroll Якщо ви не використовуєте NETWORK SERVICEпароль для скидання. Якщо ви встановили 9.2+ з іншим обліковим записом, застосовується та сама інформація. І немає жодних змін у частині скидання пароля облікового запису бази даних postgres . Тож насправді ніяких змін не потрібно.
Крейг Рінгер

3

Вам потрібно розрізняти користувача системи (Windows), який називається "postgres", та користувача бази даних з тим же ім'ям.

Знайдіть файл pg_hba.conf - це керує доступом до сервера PostgreSQL. Вам потрібно буде відредагувати його як користувача з правами адміністратора. Шукайте рядки, в яких згадуються користувацькі "postgres", і тимчасово встановіть режим "довіряти". Перезапустіть postgresql, і тоді ви зможете підключитися без пароля. Скиньте пароль, а потім відновіть файл до його початкових налаштувань та перезапустіть PostgreSQL.

Посібник містить детальну інформацію про методи аутентифікації та файл pg_hba.conf .


0

Якщо хтось інший стикається з цією проблемою, використовуючи також pgAdmin, пропоную поглянути на це: http://www.homebrewandtechnology.com/blog/graphicallychangepostgresadminpassword


3
Ви можете додати важливі пункти статті, на яку ви посилаєтесь, безпосередньо до своєї публікації, інакше ця відповідь стане марною, коли (не, якщо ) посилання стане невдалим.
мустаччо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.