Ошибка при попытке подключения postgres через docker: SQLSTATE 28P01 (ошибка авторизации)

Второй день пытаюсь разобраться с проблемой подключения к БД. При попытке запуска программы выходит ошибка:

[error] failed to connect to user=postgres database=users: 127.0.0.1:5432 (localhost): failed SASL auth: ... (SQLSTATE 28P01)

Прочитала что ошибка связана с авторизацией. Но все данные авторизации (POSTGRES_USER, POSTGRES_PASSWORD) в докер контейнере и в файле .env совпадают.

Подключаю БД через Gorm.

docker-compose.yml:

postgres:
container_name: postgres_go
image: postgres
environment:
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: my_pass
  PGDATA: /data/postgres
  POSTGRES_DB: users
volumes:
  - ./postgres-data:/data/postgres
ports:
  - "5432:5432"

.env:

DSN="host=localhost user=postgres password=my_pass dbname=users port=5432 sslmode=disable"

Кажется что перепробовала всё: удаляла контейнер, отчищала том, пробовала изменять пароли и добавляла connect_timeout

Прошу, помогите люди добрые


Ответы (2 шт):

Автор решения: Kseniya Sinickaya

Похоже из-за перезапусков порт 5432 уже послушивается postgreSql - тогда может быть такая ошибка. Проверьте:

sudo lsof -i :5432

Лучше использовать разные порты для локального и Docker PostgreSQL, чтобы избегать конфликтов:

  - "5433:5432"
→ Ссылка
Автор решения: Maggot

В чем была проблема: при обновлении файла docker-compose я не удаляла сгенерированную папку "postgres-data". Из-за чего, я полагаю, postgres ожидал от меня введение старых конфигурационных данных.

После удаления папки, и полного удаления контейнера в Docker desktop, я запустила docker-compose файл с новыми данными и все заработало!

→ Ссылка