Ich habe das Passwort vergessen, das ich bei der Postgres-Installation eingegeben habe

Ich habe das Passwort des Standardbenutzers von Postgres vergessen oder während der Installation falsch eingegeben. Ich kann es anscheinend nicht ausführen und erhalte den folgenden Fehler:

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

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

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

   
    1. finde die Datei pg_hba.conf – sie kann zum Beispiel 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. Platziere die folgende Zeile (entweder als erste unkommentierte Zeile oder als einzige Zeile):

      local all all trust

    4. Starten Sie Ihren PostgreSQL-Server neu (zB unter Linux 🙂

      sudo /etc/init.d/postgresql restart

      Wenn der Dienst (Daemon) nicht in der Protokolldatei meldet:

      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

    5. Sie können sich jetzt wie jeder andere Benutzer verbinden. Verbinden Sie sich als Superuser postgres (beachten Sie, dass der Name des Superusers in Ihrer Installation anders sein kann. In einigen Systemen heißt er zum Beispiel 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)

    6. Passwort zurücksetzen

      ALTER USER my_user_name with password 'my_secure_password';

    7. Stelle die alte pg_hba.conf da es sehr gefährlich ist, in der pg_hba.conf zu bleiben

      cp pg_hba.conf-backup pg_hba.conf

    8. starte den Server neu, um mit der sicheren pg_hba.conf zu laufen

      sudo /etc/init.d/postgresql restart

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

    Wenn Sie sich über die Befehlszeile mit Postgres verbinden, vergessen Sie nicht, -h localhost als Befehlszeilenparameter hinzuzufügen. Wenn nicht, versucht postgres, eine Verbindung über den PEER-Authentifizierungsmodus herzustellen.

    Die folgende Abbildung zeigt ein Zurücksetzen des Passworts, eine fehlgeschlagene Anmeldung mit PEER-Authentifizierung und eine erfolgreiche Anmeldung mit einer 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=# 

    Die pg_hba.conf ( C:\Program Files\PostgreSQL\9.3\data ) hat sich geändert, seit diese Antworten gegeben wurden. Was bei mir in Windows funktionierte, war, die Datei zu öffnen und die METHOD 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 

    Mit pgAdmin III habe ich mich dann ohne Passwort angemeldet und postgres' Passwort des Benutzers postgres' geändert postgres' indem ich zu File -> Change Password gehe

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

    Wenn Sie in Windows sind, können Sie einfach laufen

     net user postgres postgres 

    und Login in Postgres mit Postgres / Postgres als Benutzer / Passwort

    Für die Windows-Installation wird ein Windows-Benutzer erstellt. Und “psql” verwendet diesen Benutzer für die Verbindung mit dem Port. Wenn Sie das Passwort des PostgreSQL-Benutzers ändern, wird das Windows-Passwort 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 Benutzer, die von Windows erstellt wurden. Sie können nun das Passwort ändern.

    1. Bearbeiten Sie die Datei /etc/postgresql//main/pg_hba.conf und suchen Sie folgende Zeile:

       local all postgres md5 
    2. Editiere die Zeile und ändere md5 am Ende, um zu trust und die Datei zu speichern

    3. Laden Sie den postgresql- Dienst neu

       $ sudo service postgresql reload 
    4. Dies lädt die Konfigurationsdateien. Jetzt können Sie den postgres Benutzer ändern, indem Sie sich in der psql Shell postgres

       $ psql -U postgres 
    5. Aktualisieren postgres das Passwort des postgres Benutzers

       alter user postgres with password 'secure-passwd-here'; 
    6. Bearbeiten Sie die Datei /etc/postgresql//main/pg_hba.conf und ändern Sie das trust zurück in md5 und 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 

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

    Öffnen Sie die Datei pg_hba.conf mit gedit editor vom Terminal:

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

    Es wird nach einem Passwort gefragt. Geben Sie Ihr Administrator-Login-Passwort ein. Dies öffnet gedit mit der Datei. 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 und öffnen Sie es erneut und führen Sie folgenden Befehl aus:

     psql -U postgres 

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

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

    Wenn der Benutzer nicht vorhanden ist, verwenden Sie anstelle von ALTER CREATE .

    Zuletzt entferne diese bestimmte Zeile, die du in pg_hba eingefügt hast, und speichere sie.

    Die Datei .pgpass im Basisverzeichnis eines Benutzers oder die Datei, auf die von PGPASSFILE verwiesen wird, kann Kennwörter enthalten, die verwendet werden, wenn die Verbindung ein Kennwort erfordert (und ansonsten kein Kennwort angegeben wurde). Unter Microsoft Windows heißt die Datei% APPDATA% \ postgresql \ pgpass.conf (wobei% APPDATA% auf das Unterverzeichnis “Application Data” im Benutzerprofil verweist).

    Diese Datei sollte Zeilen des folgenden Formats enthalten:

    Hostname: Port: database: Benutzername: Passwort

    (Sie können der Datei einen Erinnerungskommentar hinzufügen, indem Sie die Zeile oben kopieren und mit # voranstellen.) Jedes der ersten vier Felder kann ein Literalwert oder * sein, der mit allem übereinstimmt. Das Passwortfeld aus der ersten Zeile, das den aktuellen Verbindungsparametern entspricht, wird verwendet. (Daher sollten Sie bei Verwendung von Platzhaltern zuerst mehr spezifische Einträge eingeben.) Wenn ein Eintrag Folgendes enthalten soll: oder \, müssen Sie dieses Zeichen mit “. Ein Host-Name von localhost stimmt mit den TCP- (Host-Name localhost) und Unix-Domain-Sockets-Verbindungen (pghost empty oder das Standard-Socket-Verzeichnis) überein, die vom lokalen Rechner kommen. Auf einem Standby-Server stimmt der Replikationsname einer database mit Streaming-Replikationsverbindungen überein, die an den Master-Server gesendet wurden. Das databasefeld ist von begrenztem Nutzen, da Benutzer für alle databaseen im selben Cluster das gleiche Passwort haben.

    Auf Unix-Systemen müssen die Berechtigungen für .pgpass jeden Zugriff auf Welt oder Gruppe verbieten. 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. Daher wird keine spezielle Berechtigungsprüfung durchgeführt.