(Примечание: не многое из этого относится к читателям, использующим 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
учетную запись, которая не требует пароля, поэтому эта проблема исчезнет .
NETWORKSERVICE
учетной записи пользователя, пароль учетной записи servce отсутствует. Если вы установили для использования выделенную учетную запись службы, напримерpostgres
или учетную запись домена, то это может помочь.NETWORK SERVICE
, нет пароля для сброса. Если вы установили на 9.2+ с использованием другой учетной записи, применяется та же информация. И нет никаких изменений в части сброса пароля учетной записи базы данных postgres superuser . Так что никаких изменений не требуется.Вы должны различать пользователя вашей системы (Windows) с именем «postgres» и пользователя базы данных с тем же именем.
Найдите свой файл pg_hba.conf - он контролирует доступ к серверу PostgreSQL. Вам нужно будет отредактировать его как пользователь с правами администратора. Найдите строки, в которых упоминается пользователь «postgres», и временно установите режим «доверие». Перезапустите postgresql, и тогда вы сможете подключиться без пароля. Сбросьте пароль, затем восстановите исходные настройки файла и перезапустите PostgreSQL.
Руководство содержит подробную информацию о методах аутентификации и файле pg_hba.conf .
источник
Если кто-то еще сталкивается с этой проблемой, а также с помощью pgAdmin, я предлагаю вам взглянуть на это: http://www.homebrewandtechnology.com/blog/graphicallychangepostgresadminpassword
источник