超级用户 nologin 角色?

Superuser nologin roles?

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

此外,事实证明,如果您 GRANT SELECT 拥有某个角色的特权,但 没有 LOGIN,他们将无法执行 select无论如何查询,因为它取决于登录。

那么 nologin superuser 或者 nologin 有什么用角色句号?角色作为组使用的唯一原因是什么?

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

  • 它可以拥有对象。

  • 它可以有其他角色作为成员,即它可以作为一个用户组。

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

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

临时承担超级用户权限
SET ROLE the_su_role;

您可以return成为普通用户

RESET ROLE;

如果您希望能够发出超级用户命令,但又不想让自己暴露在一直使用超级用户的风险中,这可能很有用,类似于 susudo UNIX 上的命令。