Passwort für PostgreSQL Windows vergessen

31

Heute Morgen habe ich versucht, eine Verbindung zur PostgreSQL-Datenbank auf meinem Windows 7 Professional-Desktop herzustellen.

Der Standardwert ist 'postgres', aber ich habe wirklich vergessen, welches Passwort ich bei der ursprünglichen Installation verwendet habe.

Ich habe gegoogelt und einen Beitrag zum Zurücksetzen Ihres Passworts gefunden. Ich habe die Schritte befolgt, aber das Endergebnis ist ein bisschen anders als im Beitrag erwähnt. Ich benutzte-

net user postgres postgres

Um das Passwort für meine Datenbank zurückzusetzen, erhalte ich anstelle einer Erfolgsmeldung:

"Systemfehler 5 ist aufgetreten. Zugriff verweigert."

Systemfehler. Wie vermeide ich diesen Fehler und setze das Passwort zurück?

AKIWEB
quelle

Antworten:

33

(Hinweis: Nicht viel davon ist relevant für die Leser PostgreSQL 9.2 oder höher von der EDB Installateure verwenden, die nun stark vereinfacht haben Standard - Installation von der Verwendung NETWORK SERVICE, obwohl Sie können noch configure andere Konten) .


Ich habe net user postgres postgres das Kennwort für meine Datenbank zurückgesetzt, erhalte jedoch keine Erfolgsmeldung"System error 5 has occurred. Access is denied."

Sie haben das Dienstkontokennwort zurückgesetzt (oder versucht, es zurückzusetzen). PostgreSQL wird aus Sicherheitsgründen nicht als Administrator ausgeführt und das Installationsprogramm richtet es im Allgemeinen mit einem "postgres" -Benutzerkonto in PostgreSQL 9.1 und älter 1 ein . Unter Windows können Sie keinen Dienst als Benutzer starten, ohne das Kennwort des Benutzers in der Registrierung zu speichern. Das ist also die Aufgabe des Installationsprogramms.

Wenn Sie das Kennwort für das Windows-Benutzerkonto ändern postgres, kann der PostgreSQL-Dienst nicht mehr gestartet werden. Tun Sie das nicht, Sie müssen die Dienstkonfiguration korrigieren, um das aktualisierte Kennwort zu speichern.

Zum Glück hat Sie ein weiterer Fehler daran gehindert. Es sieht so aus, als würden Sie wahrscheinlich Ihre Eingabeaufforderung ausführen, ohne "Als Administrator ausführen" für ein nicht privilegiertes Windows-Benutzerkonto oder einen Computer mit Benutzerkontensteuerung zu verwenden. Daher wird die Eingabeaufforderung nicht mit den Zugriffsberechtigungen ausgeführt, die zum Ändern des Kennworts für den postgresBenutzer erforderlich sind .

Bevor Sie versuchen, dieses Kennwort zu ändern, stellen Sie sicher, dass es wirklich das ist, was Sie tun möchten. Was ist das Problem, das Sie hier lösen wollen? Versuchen Sie, ein Datenbankupdate oder etwas anderes zu installieren, bei dem Sie nach dem Kennwort für den postgresWindows-Benutzer gefragt werden ?

Höchstwahrscheinlich versuchen Sie nur, sich bei der Datenbank anzumelden. Dafür verwenden Sie das in der Datenbank gespeicherte (leider völlig unabhängige) Passwort selbst. Da Sie es verloren / vergessen haben, müssen Sie es zurücksetzen:

  • Finden Sie Ihre pg_hba.conf, in der Regel inC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Stellen Sie bei Bedarf die Berechtigungen dafür ein, damit Sie sie ändern können. Ihr Benutzerkonto ist möglicherweise erst dazu in der Lage, wenn Sie die Registerkarte "Sicherheit" im Dialogfeld "Eigenschaften" verwenden, um sich diese Berechtigung mithilfe einer Administratorüberschreibung zu erteilen. Alternativ finden Sie Notepad / Notepad ++ in Ihrem Startmenü, klicken Sie mit der rechten Maustaste, wählen Sie "Als Administrator ausführen" und öffnen Sie pg_hba.confdiese über Datei-> Öffnen .
  • Bearbeiten Sie es, um die Zeile "host" für den Benutzer "postgres" auf dem Host "127.0.0.1/32" auf "trust" zu setzen. Sie können die Zeile hinzufügen, wenn sie nicht vorhanden ist. einfach einfügen:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use
    

    vor allen anderen Zeilen. (Sie können Kommentare und Zeilen, die mit beginnen, ignorieren #.)

  • Starten Sie den PostgreSQL-Dienst über die Systemsteuerung "Dienste" neu (start-> run-> services.msc).

  • Stellen Sie eine Verbindung mit psql oder PgAdmin-III her
  • ALTER USER postgres PASSWORD 'postgres'
  • Entfernen Sie die Zeile, die Sie hinzugefügt haben, pg_hba.confoder ändern Sie sie zurück
  • Starten Sie PostgreSQL erneut.

Siehe: Wie setze ich das postgres-Passwort für PostgreSQL unter Windows zurück?


1. 9.2 verwendet jetzt das NETWORKSERVICEKonto, für das kein Kennwort erforderlich ist, sodass dieses Problem behoben ist .

Craig Ringer
quelle
8
Möglicherweise benötigen Sie auch einen IP6-Eintrag: "host all postgres :: 1/128 trust"
Ted Elliott
Habe immer noch Probleme mit PostreSQL 9.6 auf meinem Entwicklungscomputer. Unsicher, warum Leute denken, dass es nicht hilft> 9.2
Tourdown
@ Darwindave Hängt von Ihrer Installation ab. Wenn Sie installiert haben, um das NETWORKSERVICEBenutzerkonto zu verwenden , gibt es kein Kennwort für das Dienstkonto. Wenn Sie installiert haben, um ein dediziertes Dienstkonto postgresoder ein Domänenkonto zu verwenden, kann dies hilfreich sein.
Craig Ringer
Können Sie diese Antwort mit 9.2+ auf den neuesten Stand bringen und beide Methoden für Windows anzeigen?
Evan Carroll
1
@EvanCarroll Wenn Sie verwenden NETWORK SERVICE, muss kein Kennwort zurückgesetzt werden. Wenn Sie unter 9.2+ mit einem anderen Konto installiert haben, gelten dieselben Informationen. Und es gibt keine Änderung an dem Teil, der das Zurücksetzen des Kennworts für das postgres-Superuser-Datenbankkonto betrifft . Es sind also keine Änderungen erforderlich.
Craig Ringer
3

Sie müssen zwischen Ihrem Systembenutzer (Windows) namens "postgres" und dem Datenbankbenutzer mit demselben Namen unterscheiden.

Suchen Sie Ihre pg_hba.conf-Datei - dies steuert den Zugriff auf den PostgreSQL-Server. Sie müssen es als Benutzer mit Administratorrechten bearbeiten. Suchen Sie nach Zeilen, die den Benutzer "postgres" erwähnen, und setzen Sie den Modus vorübergehend auf "trust". Starten Sie postgresql neu und Sie sollten in der Lage sein, eine Verbindung ohne Passwort herzustellen. Setzen Sie das Passwort zurück, stellen Sie die ursprünglichen Einstellungen der Datei wieder her und starten Sie PostgreSQL neu.

Das Handbuch enthält Details zu Authentifizierungsmethoden und zur Datei pg_hba.conf .

Richard Huxton
quelle