Ошибка при попытке подключения 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 шт):
Похоже из-за перезапусков порт 5432 уже послушивается postgreSql - тогда может быть такая ошибка. Проверьте:
sudo lsof -i :5432
Лучше использовать разные порты для локального и Docker PostgreSQL, чтобы избегать конфликтов:
- "5433:5432"
В чем была проблема: при обновлении файла docker-compose я не удаляла сгенерированную папку "postgres-data". Из-за чего, я полагаю, postgres ожидал от меня введение старых конфигурационных данных.
После удаления папки, и полного удаления контейнера в Docker desktop, я запустила docker-compose файл с новыми данными и все заработало!