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