worker@hdlx0420:~> pg_dump -d xydat -U 'xyadmin' --role=xyadmin -w > test.dmp
pg_dump: Fehler: Verbindung zur Datenbank »xydat« fehlgeschlagen: FATAL: Peer-Authentifizierung für Benutzer »xyadmin« fehlgeschlagen
Angemeldet ist worker, mit diesem möchte ich einen Dump der DB xydat deren owner und DB-Chef xyadmin ist erstellen.
Geht das so überhaupt?
An welchen Schrauben muss ich drehen damit es geht?
Alle spielt sich auf localhost ab.
Postgresql Vers. 12
die Datei .pgpass gibt es
localhost:*:xydat:xyadmin:stop
setz mal hoch ein -h localhost dazu, um eine Verbindung via Netzwerk zu erreichen, jetzt geht es via Socket, daher auch Peer-Auth.
worker@hdlx0420:~/Dokumente/ewu/skripte> pg_dump -d xydat -h localhost -U xyadmin --role=xyadmin -w > test.dmp'
pg_dump: Fehler: Verbindung zur Datenbank »xydat« fehlgeschlagen: FATAL: Ident-Authentifizierung für Benutzer »xyadmin« fehlgeschlagen.
Es hat sich was verändert. Liegt das Problem nun in der pg_hba.conf?
setz mal noch den Port dazu, oder ändere die Auth-Methode bei local auf md5.
worker@hdlx0420:~> pg_dump -d xydat -h localhost -U xyadmin -p 5432 -W --role=xyadmin > test.dmp
Passwort:
pg_dump: Fehler: Verbindung zur Datenbank »xydat« fehlgeschlagen: FATAL: Ident-Authentifizierung für Benutzer »xyadmin« fehlgeschlagen
Die pg_hba.conf an der Stelle:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
local all all peer
Ich habe dazu nun keine Idee mehr. Dieser Effekt ist auch nur auf meinen Linuxsytemen zu beobachten. Im Produktivsystem mit Win10 Stationen funktioniert pg_dump mit dem entfernten LFS-Server und PG 11 ohne Probleme.
D. h. muss ich eher im Bereich Linux suchen? Ich hab keinen Plan wie eng Linux und Postgres an der Stelle verzahnt sind. Bin ich als User xyadmin angemeldet funktioniert der
PG_dump -d xydat > sich.dmp
<- so vorzüglich.
Mit -h localhost
versuchst Du eine TCP Verbindung zu erstellen - das ist was anderes als “local”. In der pg_hba.conf werden TCP Verbindungen über “host” in der ersten Spalte konfiguriert. Wenn Du also TCP Verbindung von allen Rechner zulassen möchtest, dann musst Du z.B. das hier hinzufügen:
host all all md5
Hallo,
ich weiß nicht genau wieso aber so es funktioniert nun
worker@hdlx0420:~> pg_dump -d xydat -U xyadmin
.pgpass
localhost:*:xydat:xyadmin:go
pg_hba.conf
# "local" is for Unix domain socket connections only
local all xyadmin md5
local all all trust
local all all peer
So ist das nun konfiguriert.
nur der xyadmin braucht ein kennwort, kommt aus .pgpass, der rest kann wie bisher ohne Kennwort arbeiten.
!! Gilt alles nur für lokales arbeiten auf einem Rechner !!
DANKE für die Hinweise
Weil Du das -h localhost
weggelassen hast. Damit ist es keine TCP Verbindung mehr, sondern eine “local” Verbindung die in Deiner pg_hba.conf
zugelassen ist (im Gegensatz zu TCP Verbindungen)