【发布时间】:2017-06-01 12:23:40
【问题描述】:
我有一个角色为viewer的数据库:
CREATE ROLE viewer WITH NOSUPERUSER NOCREATEDB NOCREATEROLE;
还有称为 i 的数据库模式(对于 ininterface)。 schemai中有插入函数,即:
SELECT * FROM i.insert_machine(1,2,3);
在表 data.machine 中插入新行。还有一些非插入功能,例如i.error_table(integer) 应该允许用户查看器执行。资助选项是:
GRANT USAGE ON SCHEMA i TO viewer;
GRANT SELECT ON ALL TABLES IN SCHEMA i TO viewer;
我想禁止用户查看器调用这些 insert_* 方法。我该怎么做?如果我同时尝试:
REVOKE ALL ON FUNCTION i.insert_machine(int, int, int) FROM viewer;
REVOKE EXECUTE ON FUNCTION i.insert_machine(int, int, int) FROM viewer;
我仍然能够运行此方法并获得结果。
【问题讨论】:
标签: postgresql sql-grant