it-swarm.com.de

Können listen_addresses wirklich auf eine Liste gesetzt werden?

Ich habe eine VM mit der IP-Adresse 192.168.0.192, auf der postgreSQL ausgeführt wird.

Wenn ich spezifiziere

listen_addresses = '*'

dann kann ich mich von einem anderen VM bei 192.168.0.191 und von localhost) verbinden.

Aber ich kann nicht scheinen benutze eine Liste, um zu sagen postgreSQL, um diese beiden Adressen zu verwenden. Wenn ich listen_addresses in eine Liste ändere:

listen_addresses = '192.168.0.191, localhost'

dann kann ich von 192.168.0.191 keine Verbindung mehr herstellen.

Ich stelle fest, dass fast alle Beispiele in stackexchange listen_addresses auf '*' setzen. Liegt das daran, dass das Listenformular nicht funktioniert?

34
zabouti

Ja, listen_addresses Kann auf eine Liste von Adressen gesetzt werden auf dem lokalen Host, an die zum Binden gebunden werden soll.

In Ihrem Beispiel:

listen_addresses = '192.168.0.191, localhost'

Wenn der lokale Computer die IP 192.168.0.192 Hat, sollten Sie diese IP angeben, nicht die IP des Remote-Hosts 192.168.0.191. PostgreSQL kann nicht an die IP-Adresse eines Remote-Hosts gebunden werden.

Sie sagen nicht "Wer darf eine Verbindung herstellen?", Sondern "Auf welchen Schnittstellen soll PostgreSQL Verbindungen akzeptieren?". Das Bit "Wer darf eine Verbindung herstellen" ist das nächste und wird in pg_hba.conf Konfiguriert.

Also: Versuchen Sie '192.168.0.192, localhost'. Oder einfach nur *, Da Sie wahrscheinlich tatsächlich alle Netzwerkschnittstellen abhören möchten.

48
Craig Ringer

Ich habe festgestellt, dass anstelle von localhost127.0.0.1 Sein muss, wenn Sie auch andere Adressen angeben.

Wenn ich also die Docker-Host-IP-Adresse sowie localhost, aber nicht die externe IP-Adresse abhöre, funktioniert dies nicht (ich erhalte eine Verbindung, die in meinen Docker-Containern abgelehnt wurde):

listen_addresses = '172.17.0.1, localhost'

Aber das tut:

listen_addresses = '172.17.0.1, 127.0.0.1'
3
VirtualWolf

Der Eintrag 0.0.0.0 ermöglicht das Abhören aller IPv4-Adressen und :: das Abhören aller IPv6-Adressen. Wenn die Liste leer ist, überwacht der Server überhaupt keine IP-Schnittstelle. In diesem Fall können nur Unix-Domain-Sockets verwendet werden, um eine Verbindung herzustellen.

1
walid redwan