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

使用Shell脚本创建数据库后,Django REST API角色登录失败求助

解决PostgreSQL角色无法登录导致Django REST API启动报错的问题

你遇到的FATAL: role "admin3" is not permitted to log in错误,核心原因是你创建的PostgreSQL角色缺少登录权限。

问题根源

PostgreSQL中,CREATE ROLE命令默认是不带LOGIN属性的——这个属性是角色用来登录数据库的必要条件。你的脚本里用CREATE ROLE创建了admin3角色,但没有显式添加LOGIN权限,所以Django尝试用这个角色连接数据库时会被拒绝。

解决方案

你可以通过两种方式修复:

1. 修改脚本中的角色创建命令

把原来的角色创建语句:

psql -c "CREATE ROLE $projectAdmin WITH SUPERUSER PASSWORD '$projectPassword';"

替换成下面任意一种:

  • 显式添加LOGIN属性:
    psql -c "CREATE ROLE $projectAdmin WITH LOGIN SUPERUSER PASSWORD '$projectPassword';"
    
  • 或者直接用CREATE USER命令(它默认包含LOGIN属性,和带LOGIN的CREATE ROLE等价):
    psql -c "CREATE USER $projectAdmin WITH SUPERUSER PASSWORD '$projectPassword';"
    

2. 给已存在的角色添加登录权限

如果已经执行过原脚本创建了admin3角色,不需要删除重建,直接执行这条命令添加权限即可:

psql -c "ALTER ROLE $projectAdmin WITH LOGIN;"

额外检查

执行完修复操作后,记得确认Django项目settings.py中的数据库配置是否正确:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你的数据库名',
        'USER': 'admin3',
        'PASSWORD': '你的密码',
        'HOST': 'localhost', # 或你的数据库地址
        'PORT': '5432',
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:01