自动启用角色
默认情况下,会为新用户分配 PUBLIC 角色,在新会话开始时会自动启用此角色。通常,会创建其他角色并将它们分配给用户,但不会自动启用这些角色。相反,用户必须在每个新会话中使用
SET ROLE
显式启用为他们分配的角色。
您可以通过两种方式自动为用户启用角色:
-
在登录时为单个用户启用角色
-
在登录时为所有用户启用所有角色
为单个用户启用角色
为用户分配角色后,您可以通过使用
ALTER USER...DEFAULT 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)