VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

权限赋予

对角色和用户进行授权操作。

使用GRANT命令进行用户授权包括以下三种场景:

  • 将系统权限授权给角色或用户

系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。

  • 将数据库对象授权给角色或用户

将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户;

  • 将角色或用户的权限授权给其他角色或用户

将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。

语法格式

  • 将表或视图的权限赋予指定的用户或角色

    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
      [, ...] | ALL [ PRIVILEGES ] }
      ON { [ TABLE ] table_name [, ...]
           | ALL TABLES IN SCHEMA schema_name [, ...] }
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将表中字段的权限赋予指定的用户或角色

    GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
      [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
      ON [ TABLE ] table_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将数据库的权限赋予指定的用户或角色

    GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
      ON DATABASE database_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将域的权限赋予给指定的用户或角色

    GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON DOMAIN domain_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将外部数据源的权限赋予给指定的用户或角色

    GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON FOREIGN DATA WRAPPER fdw_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将外部服务器的权限赋予给指定的用户或角色

    GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON FOREIGN SERVER server_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将函数的权限赋予给指定的用户或角色

    GRANT { EXECUTE | ALL [ PRIVILEGES ] }
      ON { { FUNCTION | PROCEDURE | ROUTINE } routine_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
           | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将过程语言的权限赋予给指定的用户或角色

    GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON LANGUAGE lang_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将模式的权限赋予指定的用户或角色

    GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
      ON SCHEMA schema_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    

说明:将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的USAGE权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。

  • 将表空间的权限赋予指定的用户或角色

    GRANT { CREATE | ALL [ PRIVILEGES ] }
      ON TABLESPACE tablespace_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将类型的权限赋予指定的用户或角色

    GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON TYPE type_name [, ...]
      TO role_specification [, ...] [ WITH GRANT OPTION ]
    
  • 将角色的权限赋予其他用户或角色的语法

    GRANT role_name [, ...] TO role_name [, ...] [ WITH ADMIN OPTION ]
    

示例

将对象权限授权给用户或者角色

  • 将模式tpcd的使用权限和表tpcd.reason的所有权限授权给用户joe,授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限

    CREATE USER joe PASSWORD 'Bigdata@123'; 
    create schema tpcd;
    Create table tpcd.reason
    (
    r_reason_sk char(20),
    r_reason_id integer,
    r_reason_desc char(20)
    );
      
    GRANT USAGE ON SCHEMA tpcd TO joe; 
    GRANT ALL PRIVILEGES ON tpcd.reason TO joe;
    
  • 将tpcd.reason表中r_reason_sk、r_reason_id、r_reason_desc列的查询权限,r_reason_desc的更新权限授权给joe

    GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcd.reason TO joe;
    
  • 授权成功后,用户joe对tpcds.reason表中r_reason_sk,r_reason_id的查询权限会立即生效。如果joe用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对joe用户进行授权

    GRANT select (r_reason_sk, r_reason_id) ON tpcd.reason TO joe WITH GRANT OPTION;
    
  • 将数据库postgres的连接权限授权给用户joe,并给予其在Vastbase E100中创建schema的权限,而且允许joe将此权限授权给其他用户

    GRANT create,connect on database atlasdb TO joe WITH GRANT OPTION;
    
  • 创建角色tpcd_manager,将模式tpcd的访问权限授权给角色tpcd_manager,并授予该角色在tpcd下创建对象的权限,不允许该角色中的用户将权限授权给其他人

    CREATE ROLE tpcd_manager PASSWORD 'Bigdata@123'; 
    GRANT USAGE,CREATE ON SCHEMA tpcd TO tpcd_manager;
    
  • 将用户或者角色的权限授权给其他用户或角色

    • 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人

      CREATE ROLE manager PASSWORD 'Bigdata@123'; 
      GRANT joe TO manager WITH ADMIN OPTION;
      
    • 创建用户senior_manager,将用户manager的权限授权给该用户

      CREATE ROLE senior_manager PASSWORD 'Bigdata@123'; 
      GRANT manager TO senior_manager;
      
    • 撤销权限,并清理用户

      REVOKE manager FROM senior_manager; 
      DROP USER manager;
      
  • 撤销上述授予的权限,并清理角色和用户

    REVOKE ALL PRIVILEGES ON tpcd.reason FROM joe; 
    REVOKE ALL PRIVILEGES ON SCHEMA tpcd FROM joe; 
    REVOKE USAGE,CREATE ON SCHEMA tpcd FROM tpcd_manager; 
    DROP ROLE tpcd_manager; 
    DROP ROLE senior_manager; 
    DROP USER joe CASCADE;