函数上的 GRANT/REVOKE

函数上的 GRANT/REVOKE

我正在使用 来has_function_privilege检查某个用户是否可以访问我的数据库中的某个函数。但是,如果我使用REVOKE来撤销访问权限,has_function_privilege仍然返回 true:

db=> revoke execute on function getid(text,text)  from user1;
REVOKE
db=> select has_function_privilege('user1', 'getid(text, text)', 'execute');
 has_function_privilege 
------------------------
 t
(1 row)

我在 Windows 7 上使用 PostgreSQL 9.2.3。

答案1

这可能是因为public您的函数具有执行权限(这是默认的)。

尝试这个:

revoke execute on function getid(text,text)  from public;

并重新检查的结果has_function_privilege

为了public不在新创建的函数上获得此权限,你可以使用以下命令更改默认值:

ALTER default privileges revoke execute on functions from public;

相关内容