Как установить метод аутентификации моего изображения postgres (9.5-alpine) docker, если он уже был инициализирован? - PullRequest
0 голосов
/ 04 августа 2020

Я использую контейнер postgres в своем проекте, и мне кажется, что я не могу изменить его метод аутентификации на что-либо, кроме «доверия», я думаю, потому что база данных уже инициализирована, но я не вижу как это изменить сейчас. Я следил за docs для изображения о том, как его установить, но, похоже, он ничего не делает после того, как у меня уже есть база данных.

docker -compose. yml :

version: '2.2'

services:

  db:
    image: "postgres:9.5-alpine"
    env_file: .env
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    networks:
      - backend-network

.env

POSTGRES_DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=badpw
POSTGRES_HOST_AUTH_METHOD=md5

Но когда я запускаю свой контейнер с docker-compose up db, я все еще могу подключиться к нему без пароль или неправильный пароль.

Проверяя контейнер с помощью docker-compose exec db sh, я вижу, что он принимает переменные среды, но по-прежнему везде использует метод «доверия»:

/ # echo $POSTGRES_HOST_AUTH_METHOD
md5
/ # cat /var/lib/postgresql/data/pg_hba.conf
# PostgreSQL Client Authentication Configuration File
# ===================================================
#
# Refer to the "Client Authentication" section in the PostgreSQL
#...
# CAUTION: Configuring the system for local "trust" authentication
# allows any local user to connect as any PostgreSQL user, including
# the database superuser.  If you do not trust all your local users,
# use another authentication method.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                trust
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust

# warning trust is enabled for all connections
# see https://www.postgresql.org/docs/12/auth-trust.html
host all all all trust

Не уверен, что эта информация полезна, но вот что я получаю при запуске контейнера:

$ docker-compose up db
Recreating hackerspace_db_1 ... done
Attaching to hackerspace_db_1
db_1           | 
db_1           | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1           | 
db_1           | LOG:  database system was shut down at 2020-08-03 21:52:08 UTC
db_1           | LOG:  MultiXact member wraparound protections are now enabled
db_1           | LOG:  database system is ready to accept connections
db_1           | LOG:  autovacuum launcher started
...