我正在使用 来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;