(Nota: non molto di questo è rilevante per i lettori che utilizzano PostgreSQL 9.2 o versioni successive dai programmi di installazione EDB, che ora hanno un'installazione predefinita notevolmente semplificata utilizzando il NETWORK SERVICE
, sebbene sia ancora possibile configurare altri account) .
Ho usato net user postgres postgres
per ripristinare la password per il mio database ma invece di un messaggio di successo che sto ricevendo"System error 5 has occurred. Access is denied."
Hai ripristinato (o provato a ripristinare) la password dell'account di servizio. PostgreSQL non funzionerà come amministratore per motivi di sicurezza e il programma di installazione generalmente lo configura con un account utente "postgres" in PostgreSQL 9.1 e versioni precedenti 1 . Su Windows non è possibile avviare un servizio come utente senza salvare la password dell'utente nel registro, quindi è ciò che fa l'installer.
Se si modifica la password per l'account utente di Windows postgres
, il servizio PostgreSQL non può più essere avviato. Quindi non farlo, dovrai correggere la configurazione del servizio per memorizzare la password aggiornata.
Per fortuna penso che un altro errore ti abbia impedito di farlo. Sembra che tu stia probabilmente eseguendo il tuo prompt dei comandi senza utilizzare "Esegui come amministratore" su un account utente Windows senza privilegi o un computer con UAC, quindi non è in esecuzione con le autorizzazioni di accesso richieste per modificare la password per l' postgres
utente.
Prima di provare a cambiare quella password, assicurati che sia davvero quello che vuoi fare. Qual è il problema che stai cercando di risolvere qui? Stai tentando di installare un aggiornamento del database o qualcos'altro che richiede la password per l' postgres
utente di Windows?
Molto probabilmente stai solo cercando di accedere al database. Per questo, usi tu stesso la password (purtroppo completamente non correlata) memorizzata nel database. Dato che l'hai perso / dimenticato, dovrai ripristinarlo:
- Trova il tuo
pg_hba.conf
, di solito inC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
- Se necessario, impostare le autorizzazioni su di esso in modo da poterlo modificare; il tuo account utente potrebbe non essere in grado di farlo fino a quando non utilizzi la scheda di sicurezza nella finestra di dialogo delle proprietà per darti tale diritto utilizzando una sostituzione dell'amministratore. In alternativa, trova notepad / notepad ++ nel menu di avvio, fai clic con il pulsante destro del mouse, scegli "Esegui come amministratore", quindi utilizza File-> Apri per aprire in
pg_hba.conf
quel modo.
Modificarlo per impostare la riga "host" per l'utente "postgres" sull'host "127.0.0.1/32" su "trust". Puoi aggiungere la linea se non c'è; basta inserire:
host all postgres 127.0.0.1/32 trust
host all postgres ::1/128 trust # if IPv6 is in use
prima di qualsiasi altra riga. (Puoi ignorare i commenti, le righe che iniziano con #
).
Riavvia il servizio PostgreSQL dal pannello di controllo dei servizi (start-> run-> services.msc
)
- connettiti usando psql o PgAdmin-III o qualunque cosa tu preferisca
ALTER USER postgres PASSWORD 'postgres'
- rimuovere la riga aggiunta
pg_hba.conf
o modificarla nuovamente
- riavviare PostgreSQL di nuovo.
Vedi: Come posso resettare la password di Postgres per PostgreSQL su Windows?
1. 9.2 ora utilizza l' NETWORKSERVICE
account, che non richiede una password, quindi questo problema scompare .