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

Django本地连接PostgreSQL出现密码认证失败问题求助

解决Django连接PostgreSQL密码认证失败的问题

这种密码认证失败的坑我之前踩过好几次,咱们一步步排查,应该能找到问题所在:

  • 检查PostgreSQL的认证配置文件(pg_hba.conf)
    这是最常见的诱因!PostgreSQL的本地连接认证规则全靠这个文件控制。

    1. 定位文件位置:
      • Linux系统一般在 /etc/postgresql/<你的PostgreSQL版本>/main/pg_hba.conf
      • Windows系统通常在PostgreSQL安装目录的 data 文件夹下
    2. 找到针对localhost的连接规则,比如类似这样的行:
      host    all             all             127.0.0.1/32            peer
      
      把peer改成md5或者scram-sha-256(PostgreSQL 10+更推荐用scram-sha-256),修改后变成:
      host    all             all             127.0.0.1/32            scram-sha-256
      
    3. 保存文件后,重启PostgreSQL服务:
      • Linux:sudo systemctl restart postgresql
      • Windows:打开服务管理器,找到PostgreSQL服务右键重启
  • 直接用psql测试密码有效性
    先排除密码本身的问题,打开终端执行:

    psql -U admin -d my_local_db -h localhost
    

    输入你的密码mypassword,如果能成功登录数据库,说明密码没问题;如果登录失败,那就是密码设置错了,需要重置:

    1. 切换到PostgreSQL超级用户(比如postgres):
      sudo -u postgres psql
      
    2. 执行重置密码命令:
      ALTER USER admin WITH PASSWORD 'mypassword';
      
    3. 退出psql:\q
  • 检查settings.py的配置细节
    别小看拼写和格式错误:

    • 确保USER是admin,没有大小写失误(PostgreSQL用户名默认不区分大小写,除非创建时用了双引号包裹)
    • 确保PASSWORD用的是英文单/双引号,没有多余空格或中文符号
    • 如果你的PostgreSQL端口不是默认的5432,记得加上'PORT': '你的端口号'字段
  • 确认PostgreSQL服务正在运行
    有时候服务意外停止也会导致类似报错:

    • Linux:执行systemctl status postgresql,查看状态是否为active (running)
    • Windows:打开任务管理器的服务标签,确认PostgreSQL服务处于运行状态
  • 再次确认用户权限
    虽然你说已经授权,但再补一遍命令确保没遗漏:

    1. 用postgres超级用户登录psql,执行:
      GRANT ALL PRIVILEGES ON DATABASE my_local_db TO admin;
      
    2. 如果已经创建了表,还可以执行:
      GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin;
      

按照上面的步骤排查一遍,应该能解决密码认证失败的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:27:01