Django принимает имя пользователя ubuntu для подключения к базе данных вместо пользователя db из settings.py

Я пытаюсь запустить сайт django на машине aws ec2 (ubuntu). Моя база данных postgresql работает на aws RDS

когда я запускаю $python manage.py runserver, он выдает эту ошибку:

django.db.utils.OperationalError: connection to server at "xxxxx.xxxxx.us-east-2.rds.amazonaws.com" (xxx.xx.xx.xxx), port 5432 failed: FATAL:  password authentication failed for user "ubuntu"

в основном django пытается подключить базу данных, используя пользователя ubuntu вместо пользователя postgres в settings.py

my settings.py:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': config('NAME'),
    'USER': config('USER'),
    'PASSWORD':config('PASSWORD'),
    'HOST':config('HOST')
    #'HOST':'localhost'
}

}

.env файл:

SECRET_KEY=xxxx
DEBUG=True
HOST=xxx.xxx.us-east-2.rds.amazonaws.com
NAME=xxxx
USER=postgres
PASSWORD=xxxxxx

мой пароль содержит специальный символ '#'

В дистрибутиве Linux переменная $USER обычно используется для указания имени пользователя, а не базы данных.

Я бы посоветовал использовать $DB_USER или что-то подобное, так:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': config('DB_NAME'),
        'USER': config('DB_USER'),
        'PASSWORD':config('DB_PASSWORD'),
        'HOST':config('DB_HOST')
    }
}

и затем сконфигурировать с помощью:

SECRET_KEY=xxxx
DEBUG=True
DB_HOST=xxx.xxx.us-east-2.rds.amazonaws.com
DB_NAME=xxxx
DB_USER=postgres
DB_PASSWORD=xxxxxx
Вернуться на верх