Проверка подлинности пароля для пользователя "postgres" в Django не удалась, тогда как в psql она работает
Я прочитал посты SO с похожим сообщением об ошибке, но я думаю, что мой случай немного отличается.
У меня есть удаленный кластер kubernetes с несколькими django
pods.
Если я подключаюсь к одному из этих стручков и ввожу python manage.py runserver
, я получаю следующую ошибку:
django.db.utils.OperationalError: connection to server at "resource-monitor-db-postgresql.resource-monitor-system.svc.cluster.local" (10.152.183.205), port 5432 failed:
FATAL: password authentication failed for user "postgres"
В settings.py:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "postgres",
"USER": "postgres",
"PASSWORD": "mypassword123",
"HOST": "resource-monitor-db-postgresql.resource-monitor-system.svc.cluster.local",
"PORT": "5432",
}
}
Самое странное, что я могу войти в систему под psql
с теми же HOST
и PASSWORD
. То есть, следующая команда успешно входит в систему как пользователь postgres
.
# in the shell of django container
PGPASSWORD="mypassword123" psql --host resource-monitor-db-postgresql.resource-monitor-system.svc.cluster.local -U postgres -d postgres -p 5432
Предполагаю, что эта команда эквивалентна свойству DATABASES
в settings.py
.
Я что-то упускаю? Любая помощь будет принята с благодарностью.
Update
Думаю, стоит упомянуть, что я использовал эти команды для работы с удаленной базой данных locally.
kubectl port-forward --namespace resource-monitor-system svc/resource-monitor-db-postgresql 5432:5432
# now I'm able to connect to remote database through localhost:5432
И в settings.py
:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "postgres",
"USER": "postgres",
"PASSWORD": "mypassword123",
"HOST": "localhost",
"PORT": "5432",
}
}
Приведенные выше настройки работают.