问题描述
我正在尝试创建一个用户 test
,该用户对数据库 INSERT
仅具有 test2
权限。该数据库由包含 postgres
用户插入的数据的表填充。
用户 test
应该只能将数据插入数据库表中,而不能执行其他操作。它不应能够删除或更改数据库中当前的任何数据。
我尝试使用命令
ALTER DEFAULT PRIVILEGES FOR ROLE test GRANT INSERT ON TABLES FROM "test2";
但是出错了
ERROR: Syntax error at or near "FROM"
LINE 1: ...T PRIVILEGES FOR ROLE test GRANT INSERT ON TABLES FROM "test...
^
我也尝试过单独使用 GRANT 命令,但似乎收到关于关系不存在的错误。
非常感谢您的帮助。
解决方法
您的意思是to
。这里的语法(来自 the docs)是:
ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } target_role [,...] ]
[ IN SCHEMA schema_name [,...] ]
abbreviated_grant_or_revoke
where abbreviated_grant_or_revoke is one of:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON TABLES
TO { [ GROUP ] role_name | PUBLIC } [,...] [ WITH GRANT OPTION ]
所以
ALTER DEFAULT PRIVILEGES FOR ROLE test GRANT INSERT ON TABLES TO "test2";