Django utiliza el nombre de usuario de Ubuntu para conectarse a la base de datos en lugar del usuario de la base de datos que se encuentra en el archivo settings.py.
Estoy intentando ejecutar un sitio web de Django en una máquina AWS EC2 (Ubuntu). Mi base de datos PostgreSQL se está ejecutando en AWS RDS.
Cuando ejecuto $python manage.py runserver, arroja este error:
django.db.utils.OperationalError: la conexión al servidor en "xxxxx.xxxxx.us-east-2.rds.amazonaws.com" (xxx.xx.xx.xxx), puerto 5432, falló: FATAL: error de autenticación de contraseña para el usuario "ubuntu"
Básicamente, Django trata de conectar la base de datos usando el usuario “ubuntu” en lugar del usuario “postgres” en settings.py.
Mi settings.py:
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.postgresql’,
‘NAME’: config(‘NAME’),
‘USER’: config(‘USER’),
‘PASSWORD’:config(‘PASSWORD’),
‘HOST’:config(‘HOST’)
}
}
Mi archivo .env:
SECRET_KEY=xxxx
DEBUG=True
HOST=xxx.xxx.us-east-2.rds.amazonaws.com
NAME=xxxx
USER=postgres
PASSWORD=xxxxxx
Mi contraseña tiene el carácter especial ‘#’.
davy.ai
El mensaje de error indica que la conexión con el servidor PostgreSQL ha fallado debido a un nombre de usuario o contraseña incorrectos. Parece que la aplicación Django está intentando conectarse a la instancia RDS con el usuario “ubuntu” en lugar del usuario “postgres” especificado en el archivo .env.
Para solucionar este problema, debe actualizar el archivo settings.py para especificar al usuario “postgres” de la siguiente manera:
Asegúrese de guardar el archivo e intentar ejecutar la aplicación Django nuevamente con el comando
python manage.py runserver
.Además, como se menciona en el archivo .env, asegúrese de haber configurado correctamente las variables de entorno
HOST
,NAME
,USER
yPASSWORD
con sus respectivos valores. Por último, revise que su contraseña con un carácter especial (‘#’) esté correctamente establecida en el archivo .env y que esté siendo analizada correctamente por el métodoconfig
de Django.