Sql 使用shell脚本创建了数据库,但不允许用户登录

Sql 使用shell脚本创建了数据库,但不允许用户登录,sql,postgresql,django-rest-framework,psql,Sql,Postgresql,Django Rest Framework,Psql,当我试图启动djangoRESTapi时,我得到一个错误 致命:不允许角色“admin3”登录 每次我尝试使用manage.py时 当前脚本 pg_ctl -D /usr/local/var/postgres stop pg_ctl -D /usr/local/var/postgres start psql -c "DROP DATABASE $sqlProject;" psql -c "DROP ROLE $projectAdmin;" #createdb -E UTF-8 $sqlProje

当我试图启动djangoRESTapi时,我得到一个错误

致命:不允许角色“admin3”登录

每次我尝试使用manage.py时

当前脚本

pg_ctl -D /usr/local/var/postgres stop
pg_ctl -D /usr/local/var/postgres start
psql -c "DROP DATABASE $sqlProject;"
psql -c "DROP ROLE $projectAdmin;"
#createdb -E UTF-8 $sqlProject

psql -c "CREATE DATABASE $sqlProject;"
psql -c "CREATE ROLE $projectAdmin WITH SUPERUSER PASSWORD '$projectPassword';"
psql -c "ALTER ROLE $projectAdmin SET client_encoding TO 'utf8';"
psql -c "ALTER ROLE $projectAdmin SET default_transaction_isolation TO 'read committed';"
psql -c "ALTER ROLE $projectAdmin SET timezone TO 'UTC';"
psql -c "GRANT ALL PRIVILEGES ON DATABASE $sqlProject TO $projectAdmin;"
psql -c "GRANT CONNECT ON DATABASE $sqlProject TO $projectAdmin;"
psql -c "\q"

关于修复有什么想法吗?

我把它作为创建角色,而不是创建用户

这解决了我的问题。

创建用户现在是创建角色的别名。唯一的区别是 当命令拼写为CREATE USER时,登录由 默认值,而当命令拼写为CREATE时,假定为NOLOGIN 角色

因此,您可以使用
创建用户
,或者将
登录
添加到脚本中:

db=# create role canlogin login;
CREATE ROLE
Time: 18.688 ms
db=# \q
MacBook-Air:~ vao$ psql so -U canlogin
Timing is on.
Pager usage is off.
psql (9.6.1)
Type "help" for help.