创建了一个带有 shell 脚本的数据库,但不允许用户登录



当我尝试启动我的 djangoRESTapi 时,我收到一个错误,说

FATAL: role "admin3" is not permitted to log in

每次我尝试使用 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"

关于修复的任何想法?

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

这解决了我的问题。

https://www.postgresql.org/docs/current/static/sql-createuser.html

创建

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

因此,当您发现自己时,请使用create user,或将login添加到脚本中:

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.

最新更新