
Ich hoffe, meinen Postgres-Docker-Dienst vom Remote-Client aus verbinden zu können. So erstelle ich den Container:
sudo docker run --name pg -p 5432:5432 -v pg_data:/var/lib/postgres/data -e POSTGRES_DB=mydb -e POSTGRES_USER=dbowner -e POSTGRES_PASSWORD=MySecretPassword -d postgres -c "listen_addresses='*'"
Ich habe recherchiert und jemand sagte, die Datei pg_hba.conf
müsse bearbeitet werden. Wie soll ich pg_hba.conf bearbeiten? Es gibt keine Konfigurationsparameter zum Einrichten pg_hba.conf
. Gibt es außerdem Unterschiede zwischen host all all all md5
und host all all 0.0.0.0/0 md5
? Welches soll ich verwenden und wie soll ich es in pg_hba.conf
den Docker-Container einfügen?
Hier ist die Ausgabe, netstat
nachdem ich den Container erstellt habe:
$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 :::4000 :::* LISTEN
tcp6 0 0 :::4001 :::* LISTEN
tcp6 0 0 :::6379 :::* LISTEN
Bedeutet das, dass der PostgreSQL-Dienst nur auf IPv6 hört?
Antwort1
Es gibt Fehler in -v option
:
- Du schreibst,
/var/lib/postgres/data
es sollte sein/var/lib/postgresql/data
- Der Hostpfad muss vollständig sein:
/root/pgdata
- Wenn der Host Selinux verwendet, verwenden Sie
-v /root/pgdata:/var/lib/postgresql/data:Z
, andernfalls verwenden Sie:rw
stattdessen
Das hier läuft einwandfrei:
root@testubt:~# docker run --name pg -p 5432:5432 -v /root/pgdata:/var/lib/postgresql/data:Z -e POSTGRES_DB=mydb -e POSTGRES_USER=dbowner -e POSTGRES_PASSWORD=MySecretPassword -d postgres:alpine
root@testubt:~# ss -tnl | grep 5432
LISTEN 0 128 :::5432 :::*
Testen Sie den lokalen Host:
root@testubt:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h localhost
psql (9.5.14, server 10.5)
Type "help" for help.
mydb=# \q
Test von einer anderen Maschine:
alp01:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h testubt
psql (10.5)
Type "help" for help.
mydb=#
Und wenn Sie es bearbeiten möchten, pg_hba.conf
befindet es sich im /root/pgdata
Verzeichnis. Ich dachte, Sie würden es aber nicht brauchen.
Prost :)