
Я надеюсь подключить свой Postgres docker service из удаленного клиента. Вот как я создаю контейнер:
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='*'"
Я провожу исследование, и кто-то сказал, что файл pg_hba.conf
нужно редактировать. Как мне редактировать pg_hba.conf? Нет параметров конфигурации для настройки pg_hba.conf
. Также, есть ли какие-либо различия между host all all all md5
и host all all 0.0.0.0/0 md5
? Какой из них мне следует использовать и как его следует поместить pg_hba.conf
в контейнер docker?
Вот вывод netstat
после создания контейнера:
$ 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
Означает ли это, что служба PostgreSQL слушает только IPv6?
решение1
Есть ошибки в -v option
:
- Вы пишете,
/var/lib/postgres/data
что это должно быть/var/lib/postgresql/data
- Путь к хосту должен быть полным:
/root/pgdata
- Если хост использует selinux, то используйте
-v /root/pgdata:/var/lib/postgresql/data:Z
, а если нет, то используйте:rw
вместо этого
Все работает отлично:
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 :::*
Тестовый локальный хост:
root@testubt:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h localhost
psql (9.5.14, server 10.5)
Type "help" for help.
mydb=# \q
Тест с другой машины:
alp01:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h testubt
psql (10.5)
Type "help" for help.
mydb=#
И если вы хотите отредактировать pg_hba.conf
его, он находится в /root/pgdata
каталоге. Я полагал, что вам это не понадобится.
Ваше здоровье :)