2

在搜索示例ALTERGRANT命令时,我注意到有时superuser会被授予,但login不是。

此外,事实证明,如果您GRANT SELECT对某个角色具有特权但不是 LOGIN,则它们无论如何都无法执行选择查询,因为这取决于登录。

那么nologin superuser或确实nologin角色句号有什么用?角色被用作组时的唯一原因是什么?

4

1 回答 1

2

即使角色无法登录,也可以做两件事:

  • 它可以拥有对象。

  • 它可以具有其他角色作为成员,即它可以充当用户组。

据我所知,超级用户所有者只对声明的函数有影响SECURITY DEFINER。此类函数在函数所有者的上下文中运行,即具有超级用户权限。强大,但也很危险。

作为超级用户角色的成员,您可以通过发出

SET ROLE the_su_role;

您可以返回成为凡人用户

RESET ROLE;

如果您希望能够发出超级用户命令,但又不想让自己一直面临使用超级用户的风险,这将很有用,类似于 UNIX 上的suandsudo命令。

于 2019-03-11T10:20:03.460 回答