Я пытаюсь установить POSTGRES_USER & POSTGRES_PASSWORD с конфигурацией docker postgres, используя pg_hba.conf
и postgresql.conf
файлы:
docker run --name pg \
-e POSTGRES_USER=myUser \
-e POSTGRES_PASSWORD=myPassword \
-e POSTGRES_DB=myDb \
-v $PWD/pg_hba.conf:/etc/postgresql/pg_hba.conf \
-v $PWD/postgresql.conf:/etc/postgresql/postgresql.conf \
--network data-talk \
-d postgres \
-c config_file=/etc/postgresql/postgresql.conf \
-c hba_file=/etc/postgresql/pg_hba.conf
pg_hba.conf
# "local" is for Unix domain socket connections only
local all all scram-sha-256
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 172.19.0.0/16 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all scram-sha-256
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
postgresql.conf
listen_addresses = '*'
password_encryption = 'scram-sha-256' # md5 or scram-sha-256
Отсюда https://hub.docker.com/_/postgres
Примечание 1: Образ PostgreSQL устанавливает локальную аутентификацию trust
поэтому вы можете заметить, что при подключении с localhost
(внутри того же контейнера) пароль не требуется. Однако при подключении с другого хоста / контейнера потребуется пароль.
Я хочу запрашивать пароль для любого / каждого подключения, включая локальное. Заменив pg_hba.conf
, я думал, что смогу выполнить этот запрос. Я использую 172.19.0.0/16
, поскольку это su bnet для сети docker.
Когда я запускаю указанную выше команду docker, я проверяю журналы, чтобы найти это psql: error: could not connect to server: FATAL: password authentication failed for user “myUser”
.
Есть идеи, как заставить это работать? Я также пробовал
docker run --name pg \
-e POSTGRES_PASSWORD=password \
-v $PWD/pg_hba.conf:/etc/postgresql/pg_hba.conf \
-v $PWD/postgresql.conf:/etc/postgresql/postgresql.conf \
--network data-talk \
-d postgres \
-c config_file=/etc/postgresql/postgresql.conf \
-c hba_file=/etc/postgresql/pg_hba.conf
, который работает до завершения, но при попытке войти локально возникают ошибки:
$ docker exec -it pg sh
psql -U postgres
Password for user postgres:
psql: error: could not connect to server: FATAL: password authentication failed for user "postgres"