Я использую has_function_privilege
, чтобы проверить, может ли определенный пользователь получить доступ к функции в моей базе данных. Однако, если я использую REVOKE
отозвать доступ, has_function_privilege
по-прежнему возвращает истину:
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)
Я использую PostgreSQL 9.2.3 в Windows 7.
Наверное, потому что public
имеет право на выполнение для вашей функции (по умолчанию).
Попробуй это:
revoke execute on function getid(text,text) from public;
и перепроверьте результат has_function_privilege
.
Для public
чтобы не получать эту привилегию для вновь созданных функций, вы можете изменить значение по умолчанию с помощью:
ALTER default privileges revoke execute on functions from public;