Ich habe das Passwort vergessen, das ich während der Postgres-Installation eingegeben habe

205

Ich habe das Passwort für den Standardbenutzer von Postgres entweder vergessen oder (während der Installation) falsch eingegeben. Ich kann es anscheinend nicht ausführen und erhalte die folgende Fehlermeldung:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

Gibt es überhaupt eine Möglichkeit, das Passwort zurückzusetzen oder wie erstelle ich einen neuen Benutzer mit Superuser-Berechtigungen?

Ich bin neu bei Postgres und habe es gerade zum ersten Mal installiert. Ich versuche es mit Rails zu verwenden und verwende Mac OS X Lion.

Hilarl
quelle
1
Ich kann die Antworten noch nicht kommentieren, muss es also so machen. Ich habe getan, was SaiyanGirl gesagt hat, aber ich musste immer noch ein Passwort eingeben, das 'postgres' war, um mich anzumelden, dann konnte ich das Passwort zurücksetzen
Pascale

Antworten:

359
  1. Suchen Sie die Datei pg_hba.conf- sie befindet sich beispielsweise in /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Sichern Sie sie

    cp pg_hba.conf pg_hba.conf-backup

  3. Platzieren Sie die folgende Zeile (entweder als erste unkommentierte Zeile oder als einzige):

Für alle unten aufgeführten Vorkommnisse (lokal und Host), außer Replikationsabschnitt, wenn Sie keinen haben, muss dieser wie folgt geändert werden, es sollte keine MD5- oder Peer-Autehication vorhanden sein.

local  all   all   trust
  1. Starten Sie Ihren PostgreSQL-Server neu (z. B. unter Linux :)

    sudo /etc/init.d/postgresql restart

    Wenn der Dienst (Daemon) nicht mit der Berichterstellung in der Protokolldatei beginnt:

    Lokale Verbindungen werden von diesem Build nicht unterstützt

    du solltest dich ändern

    local all all trust

    zu

    host all all 127.0.0.1/32 trust

  2. Sie können sich jetzt als beliebiger Benutzer verbinden. Stellen Sie eine Verbindung als Superuser her postgres(Hinweis: Der Name des Superusers kann in Ihrer Installation unterschiedlich sein. In einigen Systemen wird er beispielsweise aufgerufen pgsql. )

    psql -U postgres

    oder

    psql -h 127.0.0.1 -U postgres

    (Beachten Sie, dass Sie mit dem ersten Befehl nicht immer mit dem lokalen Host verbunden sind.)

  3. Passwort zurücksetzen ('Mein_Benutzername durch Postgres ersetzen, da Sie den Postgres- Benutzer zurücksetzen )

    ALTER USER my_user_name with password 'my_secure_password';

  4. Stellen Sie das alte wieder her, pg_hba.confda es sehr gefährlich ist, in der Nähe zu bleiben

    cp pg_hba.conf-backup pg_hba.conf

  5. Starten Sie den Server neu, um mit dem Safe ausgeführt zu werden pg_hba.conf

    sudo /etc/init.d/postgresql restart

Weitere Informationen zu dieser pg_hba-Datei: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

Arsen7
quelle
9
Und dann anfangen psql? Ich werde immer noch zur
Eingabe
4
Diese Antwort hat bei mir NICHT funktioniert, nachdem ich Schritt 3 ausgeführt habe, wird der Dienst nicht gestartet, ich weiß nicht, vielleicht ist es das Betriebssystem (W8), es wird einfach nicht.
Scaramouche
3
jemand für Windows?
Mahesha999
2
Beachten Sie, dass die Reihenfolge der Einträge in pg_hba.conf wichtig ist. Wenn Sie am Ende der Datei "local all all trust" hinzufügen, funktioniert dies nicht wie erwartet, da vorherige Datensätze zuerst abgeglichen werden. Setzen Sie das also oben in die Datei, um das zu haben, was Sie erwarten.
Tagar
6
Wenn Sie unter Windows mit diesem Fehler arbeiten, scrollen Sie weiter zur Antwort von @SaiyanGirl. Ändern Sie einfach die METHOD-Spalten der vorhandenen Einträge in "Vertrauen" und ändern Sie sie dann wieder, wenn Sie fertig sind
sean.hudson
99

Vergessen Sie nicht, hinzuzufügen, wenn Sie über die Befehlszeile eine Verbindung zu Postgres herstellen -h localhost als Befehlszeilenparameter . Wenn nicht, versucht postgres, eine Verbindung im PEER-Authentifizierungsmodus herzustellen.

Das Folgende zeigt ein Zurücksetzen des Kennworts, eine fehlgeschlagene Anmeldung mit PEER-Authentifizierung und eine erfolgreiche Anmeldung über eine TCP-Verbindung.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

Versagen:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

Arbeiten mit -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#
SaeX
quelle
7
Vielen Dank für den Tipp bezüglich der Option "-h", der mir geholfen hat.
Bunker
Nicht erforderlich auf Windows cmd.exe
Fabien Haddadi
1
Beste Antwort für Mac
Muhammad Umar
72

Die Datei pg_hba.conf( C:\Program Files\PostgreSQL\9.3\data) hat sich geändert, seit diese Antworten gegeben wurden. Was für mich gearbeitet, in Windows ist die Datei zu öffnen und die Änderung METHODvon md5zu trust:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Dann habe ich mich mit pgAdmin III ohne Passwort angemeldet und das Benutzerkennwort geändert, postgres'indem ich zu gegangen binFile -> Change Password

SaiyanGirl
quelle
Dies funktioniert nicht, da PgAdmin immer noch nach dem aktuellen Passwort fragt ... Ich habe auf "Vertrauen" zurückgesetzt und PgAdmin neu gestartet. Kann immer noch nicht zurückgesetzt werden, ohne das CURRENT-Passwort einzugeben ...
Gen b.
1
Sobald Sie die Methode ändern, die trustSie folgen können diese und Passwort ändern in cmd
Gilad Grün
12

Nur eine Anmerkung, unter Linux können Sie einfach laufen sudo su - postgres, um der Postgres-Benutzer zu werden, und von dort aus ändern, was mit psql erforderlich ist.

Daniel
quelle
3
Sie benötigen noch das Passwort, nachdem Sie psql
Snow
8
  1. Bearbeiten Sie die Datei /etc/postgresql/<version>/main/pg_hba.confund suchen Sie die folgende Zeile:

    local   all             postgres                                md5
  2. Bearbeiten Sie die Zeile und ändern Sie sie md5am Ende in trustund speichern Sie die Datei

  3. Laden Sie den postgresql- Dienst neu

    $ sudo service postgresql reload
  4. Dadurch werden die Konfigurationsdateien geladen. Jetzt können Sie den postgresBenutzer ändern, indem Sie sich bei der psqlShell anmelden

    $ psql -U postgres
  5. Aktualisieren Sie das postgresPasswort des Benutzers

    alter user postgres with password 'secure-passwd-here';
  6. Bearbeiten Sie die Datei /etc/postgresql/<version>/main/pg_hba.confund wechseln Sie trustzurück zu md5und speichern Sie die Datei

  7. Laden Sie den postgresql- Dienst neu

    $ sudo service postgresql reload
  8. Stellen Sie sicher, dass die Kennwortänderung funktioniert

    $ psql -U postgres -W
Ray Hunter
quelle
Ist es so schwer, eine Windows-Lösung anzubieten? Nicht jeder verwendet Linux mit sudo. Wie würde ich es unter Windows machen?
Gen b.
7

Ich hatte gerade dieses Problem unter Windows 10 und das Problem in meinem Fall war, dass ich gerade lief psql und standardmäßig versuchte, mich mit meinem Windows-Benutzernamen ("Nathan") anzumelden, aber es gab keinen PostgreSQL-Benutzer mit diesem Namen. und das hat es mir nicht gesagt.

Die Lösung bestand also darin, psql -U postgresnicht nur zu laufen, sondern psqldas bei der Installation eingegebene Kennwort zu verwenden.

Nathan Wailes
quelle
5

Hinzufügen der Antwort für Windows-Benutzer für die neueste Postgres-Version (> 10),

Gehen Sie zu Ihrem Postgres-Installationsort und suchen Sie nach pg_hba.conf, Sie finden ihn in..\postgres\data\pg_hba.conf

Öffnen Sie diese Datei mit dem Editor und suchen Sie diese Zeile.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Ändern Sie die Methode von md5 in trust,

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# ...

Gehen Sie nun zu Ihrer SQL Shell (PSQL) und lassen Sie alles leer.

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

Diesmal wird nicht nach dem Passwort gefragt, und Sie werden angemeldet.

Führen Sie nun diese Zeile aus, ALTER USER yourusername WITH SUPERUSER

Jetzt können Sie die Shell mit \ q verlassen

Gehen Sie erneut zur Datei pg_hba.conf und ändern Sie METHOD erneut von trust in md5 und speichern Sie sie.

Melden Sie sich jetzt mit Ihrem neuen Benutzer und Passwort an und Sie können \ du auf seine Attribute überprüfen.

Bidhan Majhi
quelle
1

Für die Windows-Installation wird ein Windows-Benutzer erstellt. Und "psql" verwendet diesen Benutzer für die Verbindung zum Port. Wenn Sie das Kennwort des PostgreSQL-Benutzers ändern, wird das Windows-Kennwort nicht geändert. Die folgende Befehlszeile funktioniert nur, wenn Sie Zugriff auf die Befehlszeile haben.

Stattdessen können Sie die Windows-GUI-Anwendung "c: \ Windows \ system32 \ lusrmgr.exe" verwenden. Diese App verwaltet von Windows erstellte Benutzer. So können Sie jetzt das Passwort ändern.

cpunky
quelle
1

Was ich getan habe, um das gleiche Problem zu lösen, war:

Öffnen Sie die Datei pg_hba.conf mit dem gedit-Editor vom Terminal aus:

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

Es wird nach dem Passwort gefragt. Geben Sie Ihr Administrator-Login-Passwort ein. Dadurch wird gedit mit der Datei geöffnet. Fügen Sie die folgende Zeile ein:

host  all   all  127.0.0.1/32  trust

knapp unter -

# Database administrative login by Unix domain socket

Speichern und schließen Sie es. Schließen Sie das Terminal, öffnen Sie es erneut und führen Sie den folgenden Befehl aus:

psql -U postgres

Sie werden nun die psql-Konsole aufrufen. Ändern Sie nun das Passwort, indem Sie Folgendes eingeben:

ALTER USER [your prefered user name] with password '[desired password]';

Wenn es heißt, dass der Benutzer nicht existiert, wird er nicht ALTERverwendet CREATE.

Entfernen Sie zum Schluss die bestimmte Zeile, die Sie in pg_hba eingefügt haben, und speichern Sie sie.

Inconnu
quelle
0

Wenn Sie in Windows sind, können Sie einfach ausführen

net user postgres postgres

und logge dich in postgres mit postgres / postgres als Benutzer / Passwort ein

ivofernandes
quelle
0

Die Datei .pgpass im Home-Verzeichnis eines Benutzers oder die Datei, auf die PGPASSFILE verweist, kann Kennwörter enthalten, die verwendet werden sollen, wenn für die Verbindung ein Kennwort erforderlich ist (und kein anderes Kennwort angegeben wurde). Unter Microsoft Windows heißt die Datei% APPDATA% \ postgresql \ pgpass.conf (wobei% APPDATA% auf das Unterverzeichnis Anwendungsdaten im Benutzerprofil verweist).

Diese Datei sollte Zeilen im folgenden Format enthalten:

Hostname: Port: Datenbank: Benutzername: Passwort

(Sie können der Datei einen Erinnerungskommentar hinzufügen, indem Sie die obige Zeile kopieren und mit # voranstellen.) Jedes der ersten vier Felder kann ein Literalwert oder * sein, der mit einem beliebigen Wert übereinstimmt. Das Kennwortfeld aus der ersten Zeile, das den aktuellen Verbindungsparametern entspricht, wird verwendet. (Setzen Sie daher bei Verwendung von Platzhaltern spezifischere Einträge an die erste Stelle.) Wenn ein Eintrag Folgendes enthalten muss: oder \, maskieren Sie dieses Zeichen mit. Ein Hostname von localhost entspricht sowohl TCP- (Hostname localhost) als auch Unix-Domain-Socket-Verbindungen (pghost leer oder das Standard-Socket-Verzeichnis), die vom lokalen Computer kommen. In einem Standby-Server stimmt ein Datenbankname der Replikation mit Streaming-Replikationsverbindungen überein, die zum Masterserver hergestellt wurden. Das Datenbankfeld ist von begrenztem Nutzen, da Benutzer für alle Datenbanken im selben Cluster dasselbe Kennwort haben.

Auf Unix-Systemen müssen die Berechtigungen für .pgpass keinen Zugriff auf die Welt oder Gruppe zulassen. erreichen Sie dies mit dem Befehl chmod 0600 ~ / .pgpass. Wenn die Berechtigungen weniger streng sind, wird die Datei ignoriert. Unter Microsoft Windows wird davon ausgegangen, dass die Datei in einem sicheren Verzeichnis gespeichert ist, sodass keine besonderen Berechtigungsprüfungen durchgeführt werden.

rahulnikhare
quelle
Dies funktionierte bei mir, wo der Pfad zu C: \ Users \ <Benutzer> \ AppData \ Roaming \ postgresql \ pgpass.conf erweitert wurde. Auch das Aus- und Einschalten des PostgreSQL-Servers schien zu helfen.
Geodaten
0

Wenn Sie postgresql auf Mac OS ausführen, versuchen Sie diese :

  1. Bearbeiten Sie die Datei pg_hba.conf

  2. sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf

  3. Ändern Sie die "md5" -Methode für alle Benutzer in "Vertrauen" am Ende der Datei

  4. Suchen Sie den Namen des Dienstes

  5. ls / Library / LaunchDaemons

  6. Suchen Sie nach postgresql

  7. Beenden Sie den Postgresql-Dienst

  8. sudo launchctl stop com.edb.launchd.postgresql-9.2

  9. Starten Sie den Postgresql-Dienst

  10. sudo launchctl start com.edb.launchd.postgresql-9.2

  11. Starten Sie die psql-Sitzung als Postgres

  12. psql -U postgres

  13. (sollte wegen der Einstellung "Vertrauen" nicht nach dem Passwort fragen)

  14. Setzen Sie das Passwort in der psql-Sitzung durch Eingabe zurück

  15. ALTER USER postgres mit Passwort 'Secure-New-Passwort';

  16. \ q
  17. eingeben

  18. Bearbeiten Sie die Datei pg_hba.conf

  19. Schalten Sie es wieder auf 'md5'

  20. Starten Sie die Dienste erneut

David
quelle
-1

Das hat bei Windows unter mir funktioniert:

Bearbeiten Sie die Datei pg_hba.conf unter C: \ Programme \ PostgreSQL \ 9.3 \ data.

# IPv4 local connections: host all all 127.0.0.1/32 trust

Ändern Sie die Methode von trust in md5 und starten Sie den Postgres-Dienst unter Windows neu.

Danach können Sie sich mit dem Benutzer postgres ohne Passwort mit pgadmin anmelden. Sie können das Passwort über Datei-> Passwort ändern ändern.

Wenn der Benutzer von postgres keine Superuser-Berechtigungen hat, können Sie das Kennwort nicht ändern. Melden Sie sich in diesem Fall mit einem anderen Benutzer (pgsql) mit Superuser-Zugriff an und gewähren Sie anderen Benutzern Berechtigungen, indem Sie mit der rechten Maustaste auf Benutzer klicken und Eigenschaften-> Rollenberechtigungen auswählen.

Chetan
quelle