Почему в Docker Compose не подходит пароль root пользователя для Postgres?
Подключаюсь к контейнеру psql -h localhost -p 5432
Password for user root:
Ввожу postgres
psql: error: connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: password authentication failed for user "root" |
psql: error: connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: password authentication failed for user "root"
version: '3.5' services: postgres: container_name: postgres_container image: postgres environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} PGDATA: /data/postgres volumes: - postgres:/data/postgres ports: - ${POSTGRES_PORT}:${POSTGRES_PORT} healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 1s timeout: 1s retries: 60 networks: - ${NETWORK} restart: always |
version: '3.5' services: postgres: container_name: postgres_container image: postgres environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} PGDATA: /data/postgres volumes: - postgres:/data/postgres ports: - ${POSTGRES_PORT}:${POSTGRES_PORT} healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 1s timeout: 1s retries: 60 networks: - ${NETWORK} restart: always
POSTGRES_DB=postgres POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres POSTGRES_PORT=5432 NETWORK=public |
POSTGRES_DB=postgres POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres POSTGRES_PORT=5432 NETWORK=public
Или окружение
environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} |
environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
Или, если это не root пользователь
Но тогда где указывается пароль для root пользователя?
Дополнительно:
-h localhost
откуда?
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket? |
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket?
Это пароль от суперпользователя postgres, а не рута. Никакого рута внутри Постгреса по умолчанию нет.
psql -U postgres
- А для root как создается или откуда его взять?
- MishaXXL, нет в Постгресе такого понятия,как рут. Дефолтный админский пользователь - это postgres.
Хотите создать пользователя с именем root - пожалуйста. Но уже руками.
- ky0, оно не работает без указания хоста
psql -U postgrespsql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket?
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket?
- MishaXXL, ну, так добавьте хост - вам всё настолько нужно разжёвывать?
Вариант 1
# Шаблон psql -h <hostname> -p <port> -U <username> -d <database> # Подключение psql -h localhost -p 5432 -U postgres -d postgres |
# Шаблон psql -h <hostname> -p <port> -U <username> -d <database> # Подключение psql -h localhost -p 5432 -U postgres -d postgres
Вариант 2
# Шаблон postgresql://<username>:<password>@<hostname>:<port>/<database> # Подключение psql postgresql://postgres:postgres@localhost:5432/postgres |
# Шаблон postgresql://<username>:<password>@<hostname>:<port>/<database> # Подключение psql postgresql://postgres:postgres@localhost:5432/postgres
- Т.е. при создании пользователя в конфиге Docker Compose
POSTGRES_USER является пользователем со всеми привилегиями аналогичными root пользователю?В плане, что я захочу создать новых пользователей и администрировать их привилегии
- MishaXXL ты опять левые ответы выбираешь, а потом опять с аналогичным вопросом, почему у тебя проблема с localhost и docker, на который тебе уже отвечали, сюда прибежишь? или ты элементарные подсказки к командам не способен читать?
- MishaXXL, -h localhost у тебя в самом вопросе, зачем его убрал вызывает недоумение, у тебя просили уточнений, ты нормального ничего не ответил
- MishaXXL, нет, у него привилегии на таблицу POSTGRES_DB. Если не указывать POSTGRES_USER и POSTGRES_DB, то пароль будет применен к пользователю по умолчанию (postgres)
Подробно написано здесь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема заключается в том, что использование пароля root пользователя для Postgres в Docker Compose является не безопасным решением. Причина этого заключается в том, что при использовании пароля root пользователя для базы данных в Docker Compose, он может быть легко скомпрометирован, так как он хранится в открытом тексте в файле docker-compose.yml или в переменных среды.
Кроме того, использование пароля root пользователя для доступа к базе данных также может повлечь за собой проблемы с безопасностью данных. Если злоумышленник получит доступ к паролю root, он сможет получить полный доступ ко всем данным в базе данных.
Для обеспечения безопасности данных и предотвращения возможных атак необходимо использовать уникальные и сложные пароли для каждого сервиса или приложения. Для этого рекомендуется создать отдельного пользователя с ограниченными правами доступа к базе данных и использовать его пароль в Docker Compose.
Пример использования уникального пароля для пользователя Postgres в Docker Compose:
services: db: image: postgres environment: POSTGRES_USER: myuser POSTGRES_PASSWORD: mysecretpassword
Таким образом, использование уникального пароля для пользователя базы данных в Docker Compose повысит безопасность ваших данных и защитит их от возможных атак.