Warum schlägt pg_dump 'trust'-Authentifizierung unter root fehl und funktioniert unter einem anderen Benutzer?

1

Ich habe den Befehl pg_dump in cron, der unter dem Benutzer postgres auf PostgreSQL zugreift und kein Kennwort angibt.

pg_dump --username=postgres ...

Ich habe in der Datei pg_hba.conf festgelegt, dass Benutzer postgres für alle Datenbanken von localhost als vertrauenswürdig eingestuft werden soll.

local all postgres trust

Wenn ich den Befehl unter normalem Benutzer ausführe, funktioniert er.
Wenn ich es unter root (sudo -i) ausführe, ist ein Passwort erforderlich, und die crontab-Task kann sich nicht authentifizieren.

Könnte mir jemand erklären, was hier passiert?

Haftungsausschluss: Ich bin Linux n00b.

Jaroslav Záruba
quelle

Antworten:

3

Dieser Typ ist mein Held: http://archives.postgresql.org/pgsql-admin/2011-03/msg00228.php

Die Option "--host = localhost" gibt an, dass Sie eine TCP / IP-Verbindung verwenden (so   die "host lines" von pg_hba.conf), daher wird nach md5-authentifizierung gefragt.   Daher das Passwort.

Wenn ein Benutzer nicht nach einem Kennwort gefragt wird, hat dieser Benutzer möglicherweise ein Kennwort   Eine .pgpass-Datei, die pg_dump mitteilt, welches Passwort verwendet werden soll.

Mit anderen Worten die --Wirt switch (den ich nicht erwähnte) war der Grund, warum meine 'lokalen' Zeilen in pg_hba.conf für diesen Befehl irrelevant waren.

Jaroslav Záruba
quelle
2
Vielen Dank, dass Sie zurückgekommen sind, um die Antwort zu posten. Es war sehr nützlich für mich
Angel Blanco