Ale*_*der 5 postgresql permissions
我按照以下步骤操作。
postgres
通过 ( sudo -i -u postgres
)登录的new_user
通过 shell 脚本创建了新用户createuser --interactive
createdb new_db
.现在我想授予new_user
权限,能够对他自己创建的表执行所有默认的 DML 操作(下面的命令取自这个问题),所以我输入:
postgres=# ALTER DEFAULT PRIVILEGES FOR new_user IN SCHEMA
public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO new_user;
Run Code Online (Sandbox Code Playgroud)
但是得到了一个错误:
ERROR: syntax error at or near "new_user"
LINE 1: ALTER DEFAULT PRIVILEGES FOR new_user IN SCHEMA public GRANT...
Run Code Online (Sandbox Code Playgroud)
我不知道为什么这个命令不起作用。
Erw*_*ter 10
缺少一个关键词。肯定是:
ALTER DEFAULT PRIVILEGES FOR ROLE new_user IN SCHEMA public GRANT...
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)ALTER DEFAULT PRIVILEGES [ FOR { ROLE | USER } target_role [, ...] ]
两个 ( { ROLE | USER }
) 中的一个是必需的。
请注意,特定命令一开始没有任何意义,因为(根据文档):
不需要向对象的所有者(通常是创建它的用户)授予权限,因为默认情况下所有者拥有所有权限。
如果您希望为其他用户创建的对象授予权限,例如postgres
,请使用:
而且您可能不想将其限制为特定模式。
ALTER DEFAULT PRIVILEGES FOR ROLE postgres
GRANT ALL ON TABLES TO new_user;
Run Code Online (Sandbox Code Playgroud)
而且您通常还想授予序列权限
ALTER DEFAULT PRIVILEGES FOR ROLE postgres
GRANT ALL ON SEQUENCES TO new_user;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4543 次 |
最近记录: |