Was ist der Unterschied zwischen "local" und "localhost" - Verbindung Typen in pg_hba.conf?
Dies ist der relevante Teil meiner pg_hba.conf
:
# 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 ident
# IPv6 local connections:
host all all ::1/128 ident
Den pidentd-Dienst ausgeführt wird.
Wenn ich versuche, melden Sie sich ee1 (ich nehme an, die Standard-Benutzer postgres) :
psql ee1
Heißt es "peer authentication failed for user postgres"
-
Wo habe ich konfiguriert
peer
- Authentifizierung für die "postgres" ? Es istident
. -
Wenn ich ändern Sie die folgende Zeile in
pg_hba.conf
:local all all ident
zu
local all all md5
fragt er mich nach einem Passwort, und ich bin in der Lage, um sich anzumelden. Warum ist es, dass änderungen an der local-connection-Typ, haben Auswirkungen auf den postgres Benutzer?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ident
Authentifizierung bedeutet, dass Ihre OS-Benutzer entspricht DB-Benutzer. Es ist nur Unterstützung für TCP/IP-verbindungen als entsprechenden Eintrag in docs Staaten. Bei Verwendung mit Unix-socket, Peer-Authentifizierung Methode verwendet werden, statt.Bitte beachten Sie auch, dass Standard-Benutzer ist nicht
postgres
, aber den, den Sie derzeit angemeldet ist.local
ist eine Verbindung verwendet wird, in der pg_hba.conf, währendlocalhost
ist die Netzwerk-Adresse für den lokalen loopback und übersetzt, um die IPv4-Adresse127.0.0.1
oder IPv6::1
.Ich zitiere das Handbuch über
pg_hba.conf
:Für die NNE - *
listen_addresses
in postgresql.conflocalhost
dient auch als Einstellung:* NNE: Grand Unified Configuration
Fett-Hervorhebung von mir.
psql
auf der gleichen Maschine), die Einstellungen fürhost
impg_hba.conf
unwirksam sind und die Einstellungen für dielocal
Typ der Verbindung relevant sind. Sie sind automatisch über einen Unix-socket, wenn Sie nicht liefern eine Netzwerk-Adresse in Ihrer Verbindung (und daher lokal verbinden).