SYSMONITOR

除了作为 DBADMIN 用户维护 Vertica 以外,组织的数据库管理员可能还有许多责任。在本例中,DBADMIN 可能希望将一些 Vertica 管理任务委托给其他 Vertica 用户。

DBADMIN 可以将任务委托给 SYSMONITOR 角色,为其授予对系统表的访问权限,而不必授予完整的 DBADMIN 访问权限。

SYSMONITOR 角色提供以下权限。

  • 查看所有标记为可监控的系统表。通过发出以下语句,您可以查看所有可监控表的列表:

    => select * from system_tables where is_monitorable='t';

  • 如果在将 SYSMONITOR 授予用户或角色时包含 WITH ADMIN OPTION,则该用户或角色可以将 SYSMONITOR 权限授予其他用户和角色。

授予 SYSMONITOR 角色

若要为用户或角色授予 SYSMONITOR 角色,您必须是以下身份之一:

  • DBADMIN 用户

  • 已分配有 SYSMONITOR 且具有 ADMIN OPTION 的用户

使用 GRANT(角色) SQL 语句为用户分配 SYSMONITOR 角色。以下示例将展示如何为 user1 授予 SYSMONITOR 角色,并通过使用 WITH ADMIN OPTION 参数包含管理权限。ADMIN OPTION 将为 SYSMONITOR 角色授予管理权限。 => GRANT SYSMONITOR TO user1 WITH ADMIN OPTION; 以下示例将展示如何为 user1 撤销 SYSMONITOR 角色的 ADMIN OPTION 权限。 => REVOKE ADMIN OPTION for SYSMONITOR FROM user1; 使用 CASCADE 为所有分配有 SYSMONITOR 角色的用户撤销 ADMIN OPTION 权限。 => REVOKE ADMIN OPTION for SYSMONITOR FROM PUBLIC CASCADE;

示例

以下示例将展示如何:

  • 创建用户

  • 创建角色

  • 为新角色授予 SYSMONITOR 权限

  • 为用户授予角色

=> CREATE USER user1; => CREATE ROLE monitor; => GRANT SYSMONITOR to monitor; => GRANT monitor to user1;

分配 SYSMONITOR 权限

以下示例将使用“授予 SYSMONITOR 角色”示例中创建的用户和角色来说明如何:

  • 创建名为 personal_data 的表

  • 以 user1 身份登录

  • 为 user1 授予 monitor 角色。(您已在“授予 SYSMONITOR 角色”示例中为 monitor 授予了 SYSMONITOR 权限。)

  • 以 user1 身份运行 SELECT 语句

操作结果取决于已授予 user1 的权限。 => CREATE TABLE personal_data (SSN varchar (256));=> \c -user1;user1=> SET ROLE monitor;user1=> SELECT COUNT(*) FROM TABLES;COUNT ------- 1 (1 row) 由于您已分配了 SYSMONITOR 角色,因此 user1 可以看到 Tables 系统表中行的数量。在这个简单的示例中,数据库中只有一个表 (personal_data),因此 SELECT COUNT 返回一行。在实际情况中,SYSMONITOR 角色将看到数据库中的所有表。

检查 SYSMONITOR 能否访问表

使用下列命令检查分配有 SYSMONITOR 角色的用户是否可以访问系统表: => select table_name, is_monitorable from system_tables where table_name='<table_name>'; 示例

以下示例将检查 SYSMONITOR 是否可以访问 current_session 系统表: => select table_name,is_monitorable from system_tables where table_name='current_session';table_name | is_monitorable -------------------------------- current_session | t Is_monitorable 列中的 t 表示 SYSMONITOR 可以访问 current_session 系统表。