假设我是根用户 X。我有用户 A 和 B。
我如何授予用户 A 权限以使他能够授予用户 B 执行一组特定的功能?
例如,我们有拥有 database_1 的用户 A。用户 A 在此数据库上创建了一些存储函数(例如function_a
和function_b
)。用户 A 应该能够将这些函数的执行权授予用户 B,并且只能授予他。
答案1
默认情况下,对象的所有者对该对象拥有所有特权,但我不记得这些特权是否扩展到允许普通(非超级)用户向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;