首页 > 解决方案 > 错误:设置默认权限时在“FROM”处或附近出现语法错误

问题描述

我正在尝试创建一个用户 ,test它只INSERT对数据库具有权限,test2postgres该数据库由用户插入数据的表填充。

用户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 命令,但似乎收到有关不存在关系的错误。

将不胜感激任何帮助。

标签: postgresqlprivileges

解决方案


看起来你的意思是to。这里的语法(来自文档)是:

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";

推荐阅读