postgresql - 错误:设置默认权限时在“FROM”处或附近出现语法错误
问题描述
我正在尝试创建一个用户 ,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
。这里的语法(来自文档)是:
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";
推荐阅读
- javascript - 周围层没有按设计覆盖所有盒子,按钮左侧有一个额外的空白?
- python - 如何访问 kwargs.pop 的子集或基于问题类型设置不同表单的另一种方式?
- python - 将数值添加到列表中的特定数字,而不是将数字实际加在一起
- python - 使用 python 的 Shapley 值
- python - 在列表中创建开始和结束日期元组
- azure-traffic-manager - 是否可以根据目标 CPU/某些指标进行加权分配?
- r - 如何通过列中的近似值提取行?
- python-3.x - PyQT5 复选框更改指示器和刻度颜色
- javascript - 在 jquery post done 函数中传递或使用单击的对象
- event-sourcing - 是否可以使用 Prooph 设置事件 created_at 时间?