Password PostgreSQL di Windows dimenticata


31

Questa mattina ho provato a collegare il database PostgreSQL sul mio desktop di Windows 7 Professional.

Il valore predefinito è 'postgres', ma sicuramente ho dimenticato la password che ho usato quando l'ho installata originariamente.

Ho cercato su Google e ho trovato un post relativo al ripristino della password. Ho seguito i passaggi, ma il risultato finale è leggermente diverso da quello menzionato nel post. Ero solito-

net user postgres postgres

per reimpostare la password per il mio database ma invece di un messaggio di successo sto ricevendo:

"Si è verificato un errore di sistema 5. Accesso negato."

errore di sistema. Come evitare questo errore e reimpostare la password?

Risposte:


33

(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' postgresutente.

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' postgresutente 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.confquel 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.confo modificarla nuovamente
  • riavviare PostgreSQL di nuovo.

Vedi: Come posso resettare la password di Postgres per PostgreSQL su Windows?


1. 9.2 ora utilizza l' NETWORKSERVICEaccount, che non richiede una password, quindi questo problema scompare .


8
Potresti anche aver bisogno di una voce ip6: "host all postgres :: 1/128 trust"
Ted Elliott

Mi ha ancora risolto i problemi con PostreSQL 9.6 sulla mia macchina di sviluppo. Non so perché la gente pensi che non aiuta> 9.2
tourdownunder

@darwindave Dipende dalla tua installazione. Se hai installato per utilizzare l' NETWORKSERVICEaccount utente, non è disponibile la password dell'account servce. Se hai installato per utilizzare un account di servizio dedicato come postgreso un account di dominio, può aiutarti.
Craig Ringer,

Puoi aggiornare questa risposta anche con 9.2+ mostrando entrambi i metodi per Windows?
Evan Carroll

1
@EvanCarroll Se stai usando NETWORK SERVICEnon c'è password per reimpostare. Se hai installato su 9.2+ usando un altro account, si applicano le stesse informazioni. E non vi è alcuna modifica alla parte relativa al ripristino della password dell'account del database superuser di postgres . Quindi non c'è davvero alcun cambiamento necessario.
Craig Ringer

3

È necessario distinguere tra l'utente di sistema (Windows) chiamato "postgres" e l'utente del database con lo stesso nome.

Trova il tuo file pg_hba.conf - questo controlla l'accesso al server PostgreSQL. Dovrai modificarlo come utente con diritti di amministratore. Cerca le righe che menzionano "postgres" dell'utente e imposta temporaneamente la modalità su "trust". Riavvia postgresql e quindi dovresti essere in grado di connetterti senza password. Ripristina la password, quindi ripristina il file alle impostazioni originali e riavvia PostgreSQL.

Il manuale contiene dettagli sui metodi di autenticazione e sul file pg_hba.conf .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.