(Uwaga: Niewiele z tego dotyczy czytelników używających PostgreSQL 9.2 lub nowszych z instalatorów EDB, którzy mają teraz znacznie uproszczoną domyślną instalację przy użyciu NETWORK SERVICE
, chociaż nadal można konfigurować inne konta) .
Kiedyś net user postgres postgres
zresetowałem hasło do mojej bazy danych, ale zamiast wiadomości o sukcesie otrzymuję"System error 5 has occurred. Access is denied."
Zresetowałeś (lub próbowałeś zresetować) hasło do konta usługi. PostgreSQL nie działa jako Administrator ze względów bezpieczeństwa, a instalator zazwyczaj konfiguruje go z kontem użytkownika „postgres” w PostgreSQL 9.1 i starszych 1 . W systemie Windows nie można uruchomić usługi jako użytkownik bez zapisania hasła użytkownika w rejestrze, więc to właśnie robi instalator.
Jeśli zmienisz hasło do konta użytkownika Windows postgres
, usługa PostgreSQL nie będzie mogła zostać uruchomiona. Więc nie rób tego, musisz naprawić konfigurację usługi, aby przechowywać zaktualizowane hasło.
Na szczęście myślę, że kolejny błąd uniemożliwił ci to. Wygląda na to, że prawdopodobnie uruchamiasz wiersz polecenia bez użycia opcji „Uruchom jako administrator” na nieuprzywilejowanym koncie użytkownika systemu Windows lub na komputerze z funkcją UAC, więc nie działa z uprawnieniami dostępu wymaganymi do zmiany hasła postgres
użytkownika.
Zanim spróbujesz zmienić to hasło, upewnij się, że to naprawdę to, co chcesz zrobić. Jaki problem próbujesz tutaj rozwiązać? Czy próbujesz zainstalować aktualizację bazy danych lub coś, co prosi o hasło dla postgres
użytkownika systemu Windows?
Najprawdopodobniej próbujesz zalogować się do bazy danych. W tym celu używasz (niestety całkowicie niezwiązanego) hasła zapisanego w bazie danych. Ponieważ go zgubiłeś / zapomniałeś, musisz go zresetować:
- Znajdź swój
pg_hba.conf
, zwykle wC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
- W razie potrzeby ustaw uprawnienia do niego, aby móc je modyfikować; Twoje konto użytkownika może nie być w stanie tego zrobić, dopóki nie użyjesz karty bezpieczeństwa w oknie dialogowym właściwości, aby dać sobie to prawo za pomocą zastąpienia administratora. Alternatywnie, znajdź Notatnik / Notatnik ++ w menu Start, kliknij prawym przyciskiem myszy, wybierz „Uruchom jako administrator”, a następnie użyj Plik-> Otwórz, aby otworzyć w
pg_hba.conf
ten sposób.
Edytuj go, aby ustawić linię „host” dla użytkownika „postgres” na hoście „127.0.0.1/32” na „zaufanie”. Możesz dodać linię, jeśli jej nie ma; wystarczy wstawić:
host all postgres 127.0.0.1/32 trust
host all postgres ::1/128 trust # if IPv6 is in use
przed innymi liniami. (Możesz zignorować komentarze, linie zaczynające się od #
).
Uruchom ponownie usługę PostgreSQL z panelu sterowania usług (start-> uruchom-> services.msc
)
- połącz używając psql lub PgAdmin-III lub cokolwiek innego
ALTER USER postgres PASSWORD 'postgres'
- usuń dodaną linię
pg_hba.conf
lub zmień ją z powrotem
- uruchom ponownie PostgreSQL.
Zobacz: Jak zresetować hasło Postgres do PostgreSQL w systemie Windows?
1. 9.2 używa teraz NETWORKSERVICE
konta, które nie wymaga hasła, więc ten problem znika .