我试图在aws ec2机器(ubuntu(上运行django网站。我的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试图在settings.py 中使用ubuntu用户而不是postgres用户连接数据库
我的设置.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