Ich möchte, dass ein PostgreSQL-Benutzer (Super-Benutzer) entweder mit den Authentifizierungsmethoden "Peer" oder "md5" authentifiziert wird, wobei in beiden Fällen vorzugsweise lokale Unix-Domain-Sockets verwendet werden. Das Problem ist, dass die Reihenfolge der Einträge in pg_hba.conf wichtig ist und die erste Übereinstimmung angewendet wird.
Was ich habe:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
Was ich möchte (ungültige Syntax):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
Im Folgenden finden Sie einige Details zu der Umgebung, in der wir dies verwenden möchten:
Auf diesem speziellen Server sind alle Datenbanken relativ klein (jeweils <10 MB Daten) und rein schreibgeschützt. Sie werden jede Nacht vom Harold-Superuser gelöscht und neu erstellt. harold ist auch ein systemkonto, so dass "peer" gut für kennwortlose cronjobs usw. geeignet ist. Dann gibt es eine webschnittstelle, die auf die datenbanken zugreift: diese verwendet die md5-authentifizierung (systembenutzer ist der webserver, pg benutzername, kennwort und db name werden von bereitgestellt) die Besucher). Jetzt möchte ich den Harold-Benutzer auch über das Webinterface einloggen lassen. Dies schlägt aufgrund der Einstellung "Peer" für Harold fehl.
Die aktuelle Problemumgehung besteht darin, das Webinterface über TCP verbinden zu lassen
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
zusätzlich zu den lokalen Einträgen im ersten Beispiel. Das funktioniert, aber ich würde auch hier lieber lokale Sockets verwenden - für die Leistung und aufgrund des Bauchgefühls, dass es das Richtige zu sein scheint.
Ist das möglich? Gibt es bessere Workarounds für uns?