Назад | Перейти на главную страницу

GRANT / REVOKE для функций

Я использую 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;