Почему в Docker Compose не подходит пароль root пользователя для Postgres?

Ссылка скопирована
1 ответ

Подключаюсь к контейнеру 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 -p 5432
    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 postgres
      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?

    • 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)

      Подробно написано здесь

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Елена Вебер Ответ

    Проблема заключается в том, что использование пароля 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

    services: db: image: postgres environment: POSTGRES_USER: myuser POSTGRES_PASSWORD: mysecretpassword

    Таким образом, использование уникального пароля для пользователя базы данных в Docker Compose повысит безопасность ваших данных и защитит их от возможных атак.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно