PostrgreSQL 权限授予

PostrgreSQL 权限授予

假设我是根用户 X。我有用户 A 和 B。

我如何授予用户 A 权限以使他能够授予用户 B 执行一组特定的功能?

例如,我们有拥有 database_1 的用户 A。用户 A 在此数据库上创建了一些存储函数(例如function_afunction_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;

相关内容