授予/撤销function

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

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

尝试这个:

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

并重新检查has_function_privilege的结果。

对于public不能获得新创build的function这个特权,你可以改变默认的:

 ALTER default privileges revoke execute on functions from public;