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