(Примечание: не многое из этого относится к читателям, использующим 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
- Если необходимо, установите разрешения для него, чтобы вы могли изменить его; Ваша учетная запись пользователя может быть не в состоянии сделать это, пока вы не используете вкладку безопасности в диалоговом окне свойств, чтобы предоставить себе это право с помощью переопределения администратора. Кроме того, найдите notepad / notepad ++ в меню «Пуск», щелкните правой кнопкой мыши, выберите «Запуск от имени администратора», затем используйте File-> Open, чтобы открыть
pg_hba.conf
этот путь.
Отредактируйте его, чтобы установить строку "host" для пользователя "postgres" на хосте "127.0.0.1/32" в значение "trust". Вы можете добавить строку, если ее там нет; просто вставьте:
host all postgres 127.0.0.1/32 trust
host all postgres ::1/128 trust # if IPv6 is in use
перед любыми другими строчками. (Вы можете игнорировать комментарии, строки начинающиеся с #
).
Перезапустите службу PostgreSQL из панели управления службами (start-> run-> services.msc
)
- подключиться с помощью psql или PgAdmin-III или что угодно
ALTER USER postgres PASSWORD 'postgres'
- удалите добавленную вами строку
pg_hba.conf
или измените ее обратно
- перезапустите PostgreSQL снова.
Смотрите: Как мне сбросить пароль postgres для PostgreSQL в Windows?
1. 9.2 теперь использует NETWORKSERVICE
учетную запись, которая не требует пароля, поэтому эта проблема исчезнет .