pg_dump Fehler: FATAL: Peer authentication failed for user

Hallo zusammen,

ich habe ein Problem mit der im Betreff stehenden Fehlermeldung.

Trotz stundenlangem Suchen hier und in anderen Foren und nachdem ich Google lange ohne Lösung befragt habe, seid ihr meine Letzte Hoffnung. :wink:

Ich habe bei mir folgendes installiert:
Ubuntu 13.10 (ich weiß, uralt)
Postgresql 9.1
Apache 2.x

Ich nutze Postgresql zusammen mit Kivitendo (lx-office) das Programm läuft problemlos, aber ich kann meine Datenbanken nicht sichern, weshalb ich auch schon lange mit der alten Ubuntu-Version arbeite.

Ich habe schon viel an den conf-dateien rumprobiert. Aber alle gefunden Lösungsvorschläge brachten keine Lösung für mein Problem:

Wenn ich also im Terminal den pg_dump-Befehl eingebe

pg_dump -U postgres buchung14 > si14.sql

erhalte ich folgende Meldung:

pg_dump: [archiver (db)] connection to database "buchung14" failed: FATAL:  Peer authentication failed for user "postgres"

Meine pg_hbda.conf sieht derzeit so aus:

# Database administrative login by Unix domain socket
local   all             postgres                                ident

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

Ich habe es bei “method” schon mit ident, password, md5, trust probiert. Alles ohne Erfolg.

Auszüge aus den Log-Dateien:

Apache error.log

[Wed Jan 28 10:17:08.049341 2015] [mpm_worker:notice] [pid 1540:tid 140237463754624] AH00295: caught SIGTERM, shutting down
[Wed Jan 28 10:17:14.258498 2015] [mpm_worker:notice] [pid 5366:tid 140045724346240] AH00292: Apache/2.4.6 (Ubuntu) mod_fcgid/2.3.9 configured -- resuming normal operations
[Wed Jan 28 10:17:14.258633 2015] [core:notice] [pid 5366:tid 140045724346240] AH00094: Command line: '/usr/sbin/apache2'

Postgresql main.log

2015-01-28 10:33:19 CET LOG:  provided user name (postgres) and authenticated user name (user) do not match
2015-01-28 10:33:19 CET FATAL:  Peer authentication failed for user "postgres"

Gerade das in der main.log verstehe ich nicht. Ich habe im Terminal alle möglichen Sachen unter “user name” probiert, auch “user”. Hat aber nichts bewirkt.

Ich hoffe, ich habe nichts vergessen und ihr könnt mir weiterhelfen.

Vielen Dank schon jetzt einmal…

Mach den Dump entweder als User postgres (erst root werden, dann su - postgres), oder setze die lokale Anmeldung passend. Du hast vermutlich nur die hhost-based - Methode geändert.

“provided user name (postgres) and authenticated user name (user) do not match” - Du arbeitest als ROOT mit der entsprechenden User-IP, meldest Dich aber als postgres an. Es geht hier um den aktuellen Systemuser, IDENT macht genau diese Prüfung.

Danke, das hat funktioniert.

Wie ändere ich diese entsprechend, um nicht als root sichern zu müssen, also wo finde ich das und was muß ich dort eingeben?

Das ist der Teil der pg_hba.conf:

# Database administrative login by Unix domain socket
local   all             postgres                                ident

Wenn Du als User postgres am System angemeldet bist, kannst Du Dich über Unix-Socket anmelden, bei ident ohne Passwort oder so.

Ok. So stehts es bei mir drin (s. o.) Ich habe sonst im Terminal beim prompt “user@user-…” den dump ausführen können, das hatte den Vorteil, daß ich die Datei anschließend schnell und für mich einfach über die grafische Oberfläche auf einen USB-Stick kopieren konnte. Das funktionierte früher immer einwandfrei, seitdem ich auf Kivitendo (also so ungefähr lx-office 3) wechselte nicht mehr. Kann man das irgendwie wieder hinbiegen?

Du schriebst: “Ich habe es bei “method” schon mit ident, password, md5, trust probiert. Alles ohne Erfolg.”, daher dachte ich, Du kannst mit $EDITOR die pg_hba.conf bearbeiten und einen Reload machen.

Damit meinte ich, ich habe die alle nach und nach probiert. “ident” steht derzeit so wie von dir vorgeschlagen in der conf-Datei. Ich habe ja oben den entsprechenden Text eingefügt. Geändert habe ich die Datei immer mit Gedit oder Kwrite, aber das sollte nach meinem Verständnis egal sein. :wink: “sudo gedit usw.”

Ich habe nach jeder Änderung den Apache neu gestartet, so wie es in der Installionsanleitung von Kivitendo beschrieben war. Zuletzt sogar den ganzen Rechner.

Was bitte hat die PostgreSQL-Config-Datei pg_hba.conf mit dem Webserver Apache zu tun? Warum hast Du Deinen Mailserver nicht neu gestartet? Oder mal durchgelüftet?

So war es in der Anleitung beschrieben. Von $EDITOR habe ich noch nichts gehört. Aber nach dem Systemneustart sollte das mit dem Reload doch erledigt sein oder nicht?

Entweder falsch interpretiert oder aber die Anleitung ist für die Tonne. Wenn die Deckenlampe defekt ist fährt man nicht mit dem Auto zur Tanke es zu waschen, in der Hoffnung, daß dann die Lampe wieder geht.

Von $EDITOR habe ich noch nichts gehört.


kretschmer@tux:~$ echo $EDITOR
vim



Aber nach dem Systemneustart sollte das mit dem Reload doch erledigt sein oder nicht?

Ja. So wie man auch mit 1kg Dynamit die Mücke im Schlafzimmer töten kann.


Sorry, soll nicht sarkastisch sein.