Django使用ubuntu用户名来连接数据库,而不是使用settings.py中的db用户



我试图在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

相关内容

最新更新