Postgresql: Kennwortauthentifizierung für Benutzer "postgres" fehlgeschlagen


431

Ich habe PostgreSQL 8.4, Postgres-Client und Pgadmin 3 installiert. Die Authentifizierung für den Benutzer "postgres" ist sowohl für den Konsolen-Client als auch für Pgadmin fehlgeschlagen. Ich habe Benutzer als "postgres" und Passwort "postgres" eingegeben, weil es vorher funktioniert hat. Aber jetzt ist die Authentifizierung fehlgeschlagen. Ich habe es vorher ein paar Mal ohne dieses Problem gemacht. Was sollte ich tun? Und was passiert?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

1
In meinem Fall schlägt die Verbindung fehl, weil das Passwort zu komplex ist ...
JJD

3
Lesen Sie diese Seite unbedingt durch. Ich musste verschiedene Dinge tun, um dies zum Laufen zu bringen. Zuerst der ALTERSchritt , dann meine pg_hba.confDatei bearbeiten und dann postgres neu starten .
Elrobis


Stellen Sie außerdem sicher, dass nicht zwei Postgres-Instanzen ausgeführt werden: eine unter Windows und eine in Docker. Docker hat mir nicht gemeldet, dass der Port bereits belegt ist. Das Tool war also mit dem Windows-Computer Postgres verbunden, während in den Docker-Postgern alles in Ordnung war.
Koppor

Antworten:


749

Wenn ich mich richtig erinnere, hat der Benutzer standardmäßig postgreskein DB- Passwort unter Ubuntu festgelegt. Das bedeutet, dass Sie sich nur mit dem postgres Benutzerkonto des Betriebssystems bei diesem Konto anmelden können .

Angenommen, Sie haben rootZugriff auf die Box, die Sie ausführen können:

sudo -u postgres psql

Wenn dies mit einem database "postgres" does not existsFehler fehlschlägt , befinden Sie sich höchstwahrscheinlich nicht auf einem Ubuntu- oder Debian-Server :-) In diesem Fall fügen Sie einfach template1den Befehl hinzu:

sudo -u postgres psql template1

Wenn einer dieser Befehle mit einem Fehler fehlschlägt, psql: FATAL: password authentication failed for user "postgres"überprüfen Sie die Datei /etc/postgresql/8.4/main/pg_hba.conf: Es muss eine Zeile wie diese als erste Zeile ohne Kommentar vorhanden sein:

local   all         postgres                          ident

Für neuere Versionen von PostgreSQL identkönnte das tatsächlich sein peer. Das ist auch in Ordnung.

Innerhalb der psqlShell können Sie dem DB-Benutzer postgres ein Passwort geben:

ALTER USER postgres PASSWORD 'newPassword';

Sie können die psqlShell durch Eingabe CtrlDoder mit dem Befehl verlassen \q.

Jetzt sollten Sie in der Lage sein, pgAdmin ein gültiges Passwort für den DB-Superuser zu geben, und es wird auch glücklich sein. :-)


Das ist besser, danke! psql funktioniert. Habe aber immer noch Probleme mit pgadmin3 - es hat mich nach einem Passwort für meinen System-Root-Benutzer gefragt. (seltsam für mich) pg_hba.conf genau wie du sagst.
I159

Ich würde hinzufügen, um dann die Konsole mit '\ q' zu beenden. Ich habe eine Weile
gebraucht

2
Beachten Sie, dass für pg_hba.conf der Benutzer postgres festgelegt sein muss ident, damit die ersten Schritte funktionieren. Wenn Sie es bereits auf md5 oder etwas anderes eingestellt haben, können Sie sich nicht automatisch anmelden.
Cerin

80
Sehr schön. Für andere neue Benutzer VERGESSEN SIE DAS SEMIKOLON NICHT am Ende der Zeile ALTER USER.
Itsols

3
@itsols Du hast gesagt: "Sehr nett. Für andere neue Benutzer, VERGESSEN SIE DAS SEMIKOLON NICHT am Ende der ALTER USER-Zeile" ... Sie haben gerade eine vierstündige Tortur beendet !! Ich fühle mich gerade sooooo dumm und dankbar. :-D
Frozenjim

146

Die Reaktion der Mitarbeiter ist korrekt, aber wenn Sie weiter automatisieren möchten, können Sie Folgendes tun:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Erledigt! Sie haben User = postgres und password = postgres gespeichert.

Wenn Sie kein Passwort für den Benutzer postgres ubuntu haben, gehen Sie wie folgt vor:

$ sudo passwd postgres


Vorsicht, wenn Ihr Passwort interessante Zeichen wie '!' Enthält.
Brian Peterson

45

Dies war frustrierend. Die meisten der oben genannten Antworten sind korrekt, es wird jedoch nicht erwähnt, dass Sie den Datenbankdienst neu starten müssen, bevor die Änderungen in der Datei pg_hba.conf wirksam werden.

Wenn Sie also die oben genannten Änderungen vornehmen:

local all postgres ident

dann starten Sie als root (auf CentOS seine etwas wie Service Service postgresql-9.2 Neustart) jetzt sollten Sie die db , wenn der Benutzer Postgres zugreifen können

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

Hoffe, dies fügt Informationen für neue Postgres-Benutzer hinzu


25
Auf Ubuntu Typ: sudo service postgresql restart
Ann Kilzer

4
für RHEL7 verwendensudo systemctl restart postgresql.service
Spechal

1
Was ist mit auf dem Mac?
AustinT

1
Für Mac, überprüfen
Sie

Danke Miguel. Ich habe das Kennwort manuell geändert und mein pgAdmin hat keine Verbindung zur Datenbank hergestellt, bis ich den Postgres-Server neu gestartet habe.
Ustin

20

Bearbeiten Sie die Datei pg_hba.conf, z. B. mit sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Ändern Sie alle Authentifizierungsmethoden in trust. Ändern Sie das Unix-Passwort für den Benutzer "postgres". Starten Sie den Server neu. Melden Sie sich mit psql -h localhost -U postgresdem gerade festgelegten Unix-Passwort an und verwenden Sie es. Wenn es funktioniert, können Sie die Datei pg_hba.conf auf die Standardwerte zurücksetzen.


1
Wenn Sie völlig stecken bleiben, ist dies die einzige garantierte Methode. Ändern Sie alle Methoden in "Vertrauen", starten Sie db neu und dann als root : sudo su - postgres, das nächste Kennwort für postgres db (und ggf. in der Shell), stellen Sie es auf "Sichere md5oder identMethoden" wieder her und starten Sie es erneut, damit die Werte erhalten bleiben. Auf Cent / RedHat 9.4 befindet sich die Datei /var/lib/pgsql/9.4/data/pg_hba.conf
übrigens unter

17

Für diejenigen, die es zum ersten Mal verwenden und keine Informationen über das Passwort haben, können sie die folgenden Schritte ausführen (vorausgesetzt, Sie sind auf Ubuntu):

  1. Öffnen Sie die Datei pg_hba.conf in/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2. Bearbeiten Sie die folgende Zeile

     local   all             postgres                                peer

    zu

     local   all             postgres                                trust
  2. Starten Sie den Server neu

      sudo service postgresql restart
  3. Schließlich können Sie sich wie in der Abbildung gezeigt ohne Passwort anmeldenSchließlich können Sie sich wie in der Abbildung gezeigt ohne Passwort anmelden

Weitere Informationen finden Sie hier


12

Wenn Sie versuchen, die Postgres-Shell als Postgres-Benutzer anzumelden, können Sie die folgenden Befehle verwenden.

Wechseln Sie zu Postgres User

# su - postgres

Login bei psql

# psql

Ich hoffe, das hilft


3
su - postgresfragt nach einem Passwort für posgresql 9.5 unter Ubuntu 16.04
Prashanth Chandra

3
su - postgresist der Befehl, den die offizielle Fedora- Dokumentation vorschlägt , aber auch ich erhalte eine Passwortabfrage. Um das zu umgehen , bin ich dieser Postgres-Forum-E-Mail gefolgt , die denselben Befehl wie die hier akzeptierte Antwort verwendet : sudo -u postgres psql. Vergessen Sie nicht, den Datenbankserver zu starten und zu starten.
icc97

11

Versuchen Sie, den Parameter -W nicht zu verwenden, und lassen Sie das Passwort leer. Manchmal wird der Benutzer ohne Kennwort erstellt.

Wenn das nicht funktioniert, setzen Sie das Passwort zurück. Es gibt verschiedene Möglichkeiten, dies funktioniert jedoch auf vielen Systemen:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

7

Als Faustregel gilt: SIE SOLLTEN NIEMALS EIN PASSWORT FÜR DEN POSTGRES-BENUTZER EINSTELLEN .

Wenn Sie einen Superuser-Zugriff von pgAdmin benötigen, erstellen Sie einen anderen Superuser. Auf diese Weise können Sie, wenn die Anmeldeinformationen für diesen Superuser kompromittiert sind, jederzeit in den eigentlichen Datenbankhost ssh und den Superuser manuell mit löschen

sudo -u postgres -c "DROP ROLE superuser;"

1
Was ist der Grund für diese Faustregel?
Gershom

2
Damit Sie niemals alle Ihre Superuser kompromittieren lassen können.
Ardilgulez

1
Wie kann das Festlegen eines Passworts für Postgres dazu führen, dass alle Superuser kompromittiert werden?
Gershom

4
Das Festlegen eines Kennworts führt nicht dazu, dass alle Superuser kompromittiert werden. Wenn Sie das Kennwort jedoch nicht festlegen, wird garantiert, dass niemals alle Superuser kompromittiert werden. Der Grund dafür ist: Wenn Sie das Kennwort nicht festlegen, wird jeder Kennwortanmeldeversuch für den Postgres-Benutzer abgelehnt, während Sie es weiterhin selbst vertrauenswürdig verwenden können.
Ardilgulez

7

Geben Sie diesen Befehl ein, sobald Sie sich in Ihrer Postgres-Shell befinden

postgres=# \password postgres

Nachdem Sie diesen Befehl eingegeben haben, werden Sie aufgefordert, Ihr Passwort festzulegen. Legen Sie einfach das Passwort fest und versuchen Sie es dann.


3

Wenn Sie postgresql installieren, ist für den Benutzer postgres kein Kennwort festgelegt. Sie müssen es explizit unter Unix mithilfe des folgenden Befehls festlegen:

sudo passwd postgres

Sie werden nach Ihrem sudo-Passwort gefragt und dann nach einem neuen Postgres-Benutzerpasswort gefragt. Quelle


0

Ich wollte nur hinzufügen, dass Sie auch überprüfen sollten, ob Ihr Passwort abgelaufen ist.

Weitere Informationen finden Sie unter Fehlschlagen der Postgres-Kennwortauthentifizierung .


1
Bitte fügen Sie einige Details und eine Zusammenfassung dessen hinzu, was dieser Link bietet, falls der Link in Zukunft nicht mehr existiert. Andernfalls wird dies wahrscheinlich als Antwort von geringer Qualität / nur Link gekennzeichnet.
Tanner


0

Hier sind einige Kombinationen, die ich versucht habe, mich anzumelden:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

0

Ich hatte ein ähnliches Problem. Ubuntu ließ mich in der Konsole mit einem beliebigen Passwort für den Superuser anmelden. Außer wenn ich mit -h localhost im Befehl psql line verbunden bin.

Ich habe auch festgestellt, dass "localhost: 8080 / MyJSPSiteLogIn" - angezeigt wurde: Schwerwiegend: Authentifizierungsfehler mit Benutzer "Benutzer".

pg_hba.conf war ok.

Ich habe festgestellt, dass zwei Versionen von Postgres im selben Dienst ausgeführt werden.

Gelöst - Deinstallation der Inutil-Version.


0

Ich hatte ein ähnliches Problem. Beim Zugriff auf eine Datenbank wurde nach dem Aktualisieren des Kennworts "Kennwortauthentifizierung für Benutzer" postgres "in PGAdmin fehlgeschlagen" angezeigt


Lösung:

  1. Fahren Sie den Postgres-Server herunter
  2. Führen Sie pgadmin erneut aus
  3. pgadmin fragt nach dem Passwort.
  4. Bitte geben Sie das aktuelle Passwort des genannten Benutzers ein

Hoffe, es wird Ihr Problem lösen

Geben Sie hier die Bildbeschreibung ein


-1

Ich hoffe, das wird Ihnen in Kürze helfen. Sie können das Passwort von postgres sql mit dem folgenden Befehl ändern.

Befehl

sudo -u postgres psql

Und als nächstes können Sie das Passwort aktualisieren

Befehl

Ändern Sie das Postgres-Passwort des Benutzers 'YOUR_NEW_PASSWORD'.


1
Ihre Antwort enthält nur Informationen, die bereits hinzugefügt wurden: stackoverflow.com/a/7696398/8283469
L. Guthardt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.