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

Django takes ubuntu username to connect database instead of db user from settings.py

我正在尝试 运行 aws ec2 机器上的 django 网站 (ubuntu)。我的 postgresql 数据库 运行ning on aws RDS

当我 运行 $python manage.py 运行 服务器时,它抛出这个错误:

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 用户而不是 settings.py

中的 postgres 用户连接数据库

我的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('<strong>DB_NAME</strong>'),
        'USER': config('<strong>DB_USER</strong>'),
        'PASSWORD':config('<strong>DB_PASSWORD</strong>'),
        'HOST':config('<strong>DB_HOST</strong>')
    }
}

然后配置:

SECRET_KEY=xxxx
DEBUG=True
<strong>DB_HOST</strong>=xxx.xxx.us-east-2.rds.amazonaws.com
<strong>DB_NAME</strong>=xxxx
<strong>DB_USER</strong>=postgres
<strong>DB_PASSWORD</strong>=xxxxxx