Учитывая, что я являюсь пользователем root X. У меня есть пользователи A и B.
Как я могу ПРЕДОСТАВИТЬ пользователю A, чтобы он разрешил пользователю B выполнять определенный набор функций?
Например, у нас есть пользователь A, которому принадлежит database_1. Пользователь A создает некоторые сохраненные функции в этой БД (скажем, function_a
и function_b
). Пользователь A должен иметь возможность предоставлять выполнение этих функций пользователю B и только ему.
По умолчанию владелец объекта имеет ВСЕ ПРИВИЛЕГИИ на этот объект, но я не помню конкретно, распространяются ли эти привилегии на разрешение нормальному (не супер) пользователю GRANT
разрешения на этот объект другим пользователям.
В любом случае вы должны иметь возможность предоставить эту возможность пользователю, добавив WITH GRANT OPTION
пункт к GRANT
заявление. (Я отсылаю вас к документы для получения полной информации.)
Например, в вашем гипотетическом сценарии в качестве суперпользователя X
, вы можете сделать что-то вроде этого:
GRANT ALL PRIVILEGES ON DATABASE database_1 TO A WITH GRANT OPTION;
Пользователь A
тогда будет власть GRANT
разрешения на объекты в database_1
другим пользователям. Продолжая гипотетический пример, пользователь A
может дать определенные разрешения пользователю B
, как это:
GRANT EXECUTE ON FUNCTION function_a(), function_b() TO B;