(Примітка. Не багато цього стосується читачів, які використовують 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
користувача.
Перш ніж спробувати змінити цей пароль, переконайтеся, що це дійсно те, що ви хочете зробити. Яку проблему ви намагаєтеся вирішити тут? Ви намагаєтесь встановити оновлення бази даних чи щось інше, що запитує пароль для користувача postgres
Windows?
Швидше за все, ви просто намагаєтесь увійти до бази даних. Для цього ви використовуєте (на жаль, абсолютно не пов'язаний) пароль, що зберігається в базі даних. Оскільки ви втратили / забули його, вам доведеться скинути його:
- Знайдіть своє
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
обліковий запис, який не потребує пароля, тому ця проблема усувається .