it-swarm.com.de

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

Ich habe das Passwort an den Standardbenutzer von Postgres entweder vergessen oder (während der Installation) falsch geschrieben. Ich kann es scheinbar nicht ausführen und erhalte folgende Fehlermeldung:

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

Gibt es sowieso das Passwort zurückzusetzen oder wie erstelle ich einen neuen Benutzer mit Superuser-Berechtigungen? 

Ich bin neu bei Postgres und habe es erstmalig installiert. Ich versuche, es mit Rails zu verwenden, und ich verwende Mac OS X Lion.

150
hilarl
  1. finde die Datei pg_hba.conf - sie kann sich zum Beispiel in /etc/postgresql-9.1/pg_hba.conf befinden.

    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 oder als einzige Zeile):

    local all all trust

  4. starten Sie Ihren PostgreSQL-Server neu (z. B. unter Linux :)

    Sudo /etc/init.d/postgresql restart

    Wenn der Dienst (Daemon) nicht in der Protokolldatei mit der Berichterstellung 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

  5. sie können jetzt wie jeder Benutzer eine Verbindung herstellen. Stellen Sie eine Verbindung mit dem Superuser postgres her (Hinweis, der Name des Superbenutzers kann in Ihrer Installation anders sein. In einigen Systemen heißt er beispielsweise 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. Stellen Sie den alten pg_hba.conf wieder her, da es very gefährlich ist, um in der Nähe zu bleiben

    cp pg_hba.conf-backup pg_hba.conf

  8. starten Sie den Server neu, um mit dem sicheren pg_hba.conf laufen zu können.

    Sudo /etc/init.d/postgresql restart

Weiterführende Literatur über diese pg_hba-Datei: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

301
Arsen7

Vergessen Sie nicht, -h localhost als Befehlszeilenparameter hinzuzufügen, wenn Sie von der Befehlszeile aus eine Verbindung zu Postgres herstellen. Wenn dies nicht der Fall ist, versucht postgres, eine Verbindung mit dem PEER-Authentifizierungsmodus herzustellen.

Das Folgende zeigt ein Zurücksetzen des Kennworts, 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"

Mit -h localhost arbeiten:

# 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=#
74
SaeX

Die pg_hba.conf (C:\Program Files\PostgreSQL\9.3\data) -Datei hat sich seit dem Antworten geändert. In Windows funktionierte das Öffnen der Datei und Ändern der 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

Dann habe ich mich mit pgAdmin III ohne Passwort angemeldet und das postgres'-Passwort des Benutzers geändert, indem ich zu File -> Change Password ging. 

54
SaiyanGirl

Nur ein Hinweis unter Linux Sie können einfach Sudo su - postgres ausführen, um Postgres-Benutzer zu werden, und von dort aus ändern, was mit psql erforderlich ist.

6
Daniel

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

Die Lösung bestand also darin, psql -U postgres und nicht nur psql auszuführen, und dann funktionierte das bei der Installation eingegebene Passwort.

4
Nathan Wailes

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

Net User postgres postgres

und loggen Sie sich in postgres mit postgres/postgres als Benutzer/Passwort ein

1
ivofernandes

Bei der 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 unten aufgeführten Befehlszeileneinstellungen funktionieren nur, wenn Sie auf die Befehlszeile zugreifen können.

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 das Passwort jetzt ändern.

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

    local   all             postgres                                md5
    
  2. Bearbeiten Sie die Zeile und ändern Sie md5 am Ende in trust und speichern Sie die Datei

  3. Laden Sie den Dienst " postgresql " erneut 

    $ Sudo service postgresql reload
    
  4. Dadurch werden die Konfigurationsdateien geladen. Jetzt können Sie den Benutzer postgres ändern, indem Sie sich in der psql-Shell anmelden 

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

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

  7. Laden Sie den Dienst " postgresql " erneut 

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

    $ psql -U postgres -W
    
1
Ray Hunter

Was ich tat, 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 Admin-Anmeldekennwort 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 und öffnen Sie es erneut, und führen Sie den folgenden Befehl aus:

psql -U postgres

Sie gelangen jetzt in die psql-Konsole . Ändern Sie nun das Passwort, indem Sie Folgendes eingeben: 

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

Wenn der Benutzer nicht existiert, verwenden Sie statt ALTERCREATE.

Entfernen Sie schließlich die bestimmte Zeile, die Sie in pg_hba eingefügt haben, und speichern Sie sie. 

1
Inconnu

Die Datei .pgpass im Basisverzeichnis eines Benutzers oder die von PGPASSFILE referenzierte Datei kann Kennwörter enthalten, die verwendet werden sollen, wenn für die Verbindung ein Kennwort erforderlich ist (und ansonsten kein Kennwort angegeben wurde). Unter Microsoft Windows hat die Datei den Namen% APPDATA%\postgresql\pgpass.conf (wobei% APPDATA% auf das Anwendungsdaten-Unterverzeichnis im Benutzerprofil verweist).

Diese Datei sollte Zeilen des folgenden Formats enthalten:

hostname: Port: Datenbank: Benutzername: Passwort

(Sie können der Datei einen Erinnerungskommentar hinzufügen, indem Sie die darüber liegende Zeile kopieren und mit # voranstellen.) Jedes der ersten vier Felder kann ein Literalwert oder * sein, der mit irgendetwas übereinstimmt. Das Kennwortfeld aus der ersten Zeile, das den aktuellen Verbindungsparametern entspricht, wird verwendet. (Geben Sie daher spezifischere Einträge an, wenn Sie Platzhalter verwenden.) Wenn ein Eintrag Folgendes enthalten muss: oder \, entgehen Sie dieses Zeichen mit. Ein Hostname von localhost stimmt mit den Verbindungen TCP (Hostname localhost) und Unix-Domänensockel (pghost empty oder das Standard-Socket-Verzeichnis) überein, die vom lokalen Computer kommen. Auf einem Standby-Server entspricht der Datenbankname der Replikation den zum Master-Server hergestellten Streaming-Replikationsverbindungen. Das Datenbankfeld ist von begrenztem Nutzen, da Benutzer für alle Datenbanken in demselben Cluster dasselbe Kennwort verwenden.

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

0
rahulnikhare

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

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

Öffnen Sie diese Datei mit dem Notizblock, 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 jetzt zu Ihrer SQL-Shell (PSQL) und lassen Sie alles leer.

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

Es wird dieses Mal nicht nach einem Passwort gefragt, und Sie werden angemeldet sein.

Nun führe diese Zeile aus, ALTER USER yourusername WITH SUPERUSER

Nun können Sie die Shell mit\q verlassen

Wechseln Sie erneut in die Datei pg_hba.conf und ändern Sie METHOD erneut von trust in md5 und speichern Sie es.

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

0
Bidhan Majhi