自动启用角色

默认情况下,会为新用户分配 PUBLIC 角色,在新会话开始时会自动启用此角色。通常,会创建其他角色并将它们分配给用户,但不会自动启用这些角色。相反,用户必须在每个新会话中使用 SET ROLE 显式启用为他们分配的角色。

您可以通过两种方式自动为用户启用角色:

  • 在登录时为单个用户启用角色

  • 在登录时为所有用户启用所有角色

为单个用户启用角色

为用户分配角色后,您可以通过使用 ALTER USER...DEFAULT ROLE 修改每个用户的配置文件来为该用户设置一个或多个默认角色。用户默认角色在用户会话开始时自动启用。如果用户通常依赖这些角色的权限来执行日常任务,您应该考虑为用户设置默认角色。

以下示例显示了如何将 regional_manager 设置为用户 LilyCP 的默认角色:

=> \c
You are now connected as user "dbadmin".
=> GRANT regional_manager TO LilyCP;
GRANT ROLE
=> ALTER USER LilyCP DEFAULT ROLE regional_manager;
ALTER USER
=> \c - LilyCP
You are now connected as user "LilyCP".
=> SHOW ENABLED_ROLES;
     name      |     setting
---------------+------------------
 enabled roles | regional_manager
(1 row)

为所有用户启用所有角色

配置参数 EnableAllRolesOnLogin 指定是否在登录时为所有数据库用户启用所有角色。默认情况下,此参数设置为 0。如果设置为 1,Vertica 会在所有用户登录数据库时启用他们的角色。

清除默认角色

您可以使用 ALTER USER...DEFAULT ROLE NONE 清除为用户分配的所有默认角色。例如:

=> ALTER USER fred DEFAULT ROLE NONE;
ALTER USER
=> SELECT user_name, default_roles, all_roles FROM users WHERE user_name = 'fred';
 user_name | default_roles | all_roles
-----------+---------------+-----------
 fred      |               | logreader
(1 row)