Die Postgres-Kennwortauthentifizierung schlägt fehl

36

Ich habe PostgreSQL 9.1 und pgadmin3 auf Ubuntu Server 13.10 installiert.

Ich habe postgresql.conf konfiguriert mit: listen_addresses = '*'

auch habe ich die ph_hba.conf durch veränderte peerverbindungen auf konfiguriert md5

Außerdem habe ich das Passwort von postgres zurückgesetzt durch: sudo password postgres

dann den Dienst mit neu gestartet sudo /etc/init.d/postgresql restart

Danach habe ich versucht, eine Verbindung zur Standard-PostgreSQL-Vorlagendatenbank herzustellen:

sudo -u postgres psql template1

aber die Anmeldung ist mit dieser Fehlermeldung fehlgeschlagen:

psql: FATAL:  password authentication failed for user "postgres"

dann habe ich versucht mich über das pgadmin einzuloggen, was mir den gleichen fehler bescherte.

Ich habe hier gelesen, dass es sich möglicherweise um einen Fehler mit dem Ablaufdatum des Passworts handelt. PostgreSQL-Benutzer können nach dem Ändern des Passworts keine Verbindung zum Server herstellen

aber ich konnte es nicht lösen, weil ich mich nicht mit psql anmelden kann. Kennt jemand jetzt, wie man dieses Problem löst?

BEARBEITEN

ph_hba Datei:

Hier

Bildschirmfoto:

Bildbeschreibung hier eingeben

Shadin
quelle
6
Es irritiert mich sehr, dass Sie diesen Beitrag geklont haben. Ich habe gerade eine Antwort darauf geschrieben, nur um festzustellen, dass Sie auch eine identische Frage an stackoverflow.com gestellt haben, die bereits eine akzeptierte Antwort hatte. Kopieren und fügen Sie keine Antworten zwischen Websites ein, da Sie die Zeit aller verschwenden und das Auffinden von Informationen erschweren. Wenn Sie darauf bestehen, stellen Sie Verbindungen zwischen ihnen her.
Craig Ringer

Antworten:

66

Sie verwechseln das Kennwort für den Unix-Benutzer "postgres" mit dem Datenbankkennwort für den Datenbankbenutzer "postgres". Das ist nicht dasselbe.

Sie haben sich ausgesperrt, weil Sie die md5Authentifizierung für den Datenbankbenutzer aktiviert haben, postgresohne ein Kennwort für den Datenbankbenutzer festzulegen postgres.

Fügen Sie eine neue Zeile an den Anfang von pg_hba.conf:

local    postgres     postgres     peer

Starten Sie PostgreSQL neu und laden Sie es erneut.

sudo -u postgres psql

Von der resultierenden Eingabeaufforderung:

ALTER USER postgres PASSWORD 'my_postgres_password';

Entfernen Sie dann die Zeile, die Sie hinzugefügt haben, pg_hba.confund starten Sie Pg erneut. Sie können jetzt das oben festgelegte Passwort verwenden, um als postgresBenutzer eine Verbindung zu PostgreSQL herzustellen.

Weitere Informationen finden Sie im Kapitel "Clientauthentifizierung" des Benutzerhandbuchs und in den Dokumenten zupg_hba.conf .

Craig Ringer
quelle
1
Testen einer neuen pg9.6.6 in einem UBUNTU-Server 16 LTS .... Und ich war von all diesen "Anfängerproblemen" überrascht. Kommen Sie hier mit der Lösung an ... Gehen Sie Schritt für Schritt vor ... Die große Überraschung: funktioniert nicht! psql -W postgresql://postgres:postgres@localhostes wurde wieder dasselbe produziert "FATAL: Passwort-Authentifizierung für Benutzer 'postgres' fehlgeschlagen"
Peter Krauss
Lösung: Alle Linien Vertrauen funktioniert ...
Peter Krauss
Ich verwende ssh ... Nachdem ich alle nacheinander auf md5 zurückgesetzt habe (local, local, host ...), konnte sich nur die Zeile "host all 127.0.0.1/32 trust" nicht ändern, sondern wurde beibehalten mit " Vertrauen". Neue Frage: Warum?
Peter Krauss
Die pg_hba.confDatei gehört dem Systembenutzer postgres. Ich kenne nur das Datenbankkennwort des Datenbankbenutzers postgres. Die Frage ist also, wie ich diese Conf-Datei bearbeite, ohne ihren Besitz zu ändern.
Shailen
Kannst du bitte sagen, wofür die Leitung local postgres postgres peerwirklich gebraucht wurde pg_hba.conf? Alles funktioniert gut ohne es
MaxCore
3

Versuchen Sie, das Kennwort der Datenbankvorlage1 folgendermaßen zu ändern:

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1
pfugazza
quelle
Gab mir den gleichen Fehler, aber mit Benutzer "root" anstelle von Benutzer "postgres"
Shadin
Können Sie erklären, warum dies hilfreich sein kann?
xliiv
2

in deiner pg_hba.conf

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

Wenn es nicht funktioniert, versuche es mit

host    all         all         your_ip/32         trust

Starten Sie dann Ihre Datenbank neu, es wird gut funktionieren. Wenn Sie Vertrauen schaffen, dann besteht keine Notwendigkeit für ein Passwort, wenn Sie MD5 machen, dann werden Sie nach dem Passwort gefragt.

smn_onrocks
quelle
3
Verwenden Sie diesen Ansatz nirgendwo, Sie sollten den Benutzerzugriff auf Ihre Daten immer einschränken
Most Wanted
es sei denn, Sie betreiben einen CTF-Server.
Pathfinder