Ale*_*der 5 postgresql permissions
我按照以下步骤操作。
postgres通过 ( sudo -i -u postgres)登录的new_user通过 shell 脚本创建了新用户createuser --interactivecreatedb 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 次 |
| 最近记录: |