You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django连接AWS RDS PostgreSQL时使用Ubuntu用户名而非配置的数据库用户

Django连接AWS RDS PostgreSQL身份验证失败问题解决步骤

问题核心原因

你遇到的报错本质是两个配置问题叠加导致的:一是.env配置读取异常,Django拿不到正确的数据库用户名,就 fallback 到当前操作系统的ubuntu用户尝试连接;二是密码中的特殊字符#被错误截断,即使读到用户名也无法通过密码校验。


具体解决方法

1. 修复密码特殊字符的读取问题

python-dotenv库默认会把#识别为注释的起始标识,即使#出现在配置值中间,也会截断后面的内容,导致读取到的密码不完整。

  • 解决方案:打开.env文件,将PASSWORD对应的值用单引号完整包裹,示例:
    PASSWORD='你的完整密码#xxx'
    

2. 确认.env文件被正确加载

如果.env文件没有被正确加载,config()方法读不到配置值,Django就会使用默认的系统用户作为数据库连接用户名:

  • 首先确保你已经安装了依赖库:
    pip install python-dotenv
    
  • 检查settings.py开头是否已经添加了加载.env的代码,示例如下(注意替换为你自己的项目路径逻辑):
    from pathlib import Path
    import os
    from dotenv import load_dotenv
    
    BASE_DIR = Path(__file__).resolve().parent.parent
    # 加载项目根目录下的.env文件
    load_dotenv(os.path.join(BASE_DIR, '.env'))
    
  • 确认.env文件放在项目根目录(和manage.py同级),且运行Django服务的用户拥有该文件的读取权限。

验证配置是否生效

在项目根目录执行以下命令进入Django shell,打印当前读取的数据库配置验证正确性:

python manage.py shell

在shell中执行以下代码:

from django.conf import settings
print("当前读取的数据库用户:", settings.DATABASES['default']['USER'])
print("当前读取的数据库密码:", settings.DATABASES['default']['PASSWORD'])

如果输出的内容和你.env中配置的一致,再重新执行python manage.py runserver即可正常连接数据库。


内容的提问来源于stack exchange,提问作者shyam yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:07