# GRANT
#### 功能描述及注意事项
对角色和用户进行授权操作。
使用GRANT命令进行用户授权包括以下三种场景：
#### 将系统权限(SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN)授权给角色或用户
系统权限又称为用户属性，包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。
表1系统权限 
| 系统权限           | 权限描述        | 是否支持通过GRANT/REVOKE授权或撤销 |
|:---|:---|:---|
| **SYSADMIN** | 支持查看特殊系统表。    | 是                      |
| **CREATEDB**    | 支持创建数据库。     | 否                     |
| **CREATEROLE**  | 支持创建用户与角色。 | 否                     |
| **AUDITADMIN**  | 支持查看审计日志。   | 否                     |
| **LOGIN**     | 支持连接数据库。     | 否                     |
   
系统权限一般在创建或修改角色阶段，通过CREATE/ALTER ROLE语法来指定。
其中，SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。
但系统权限无法通过ROLE和USER的权限被继承，也无法授予PUBLIC。
#### 将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)授权给角色或用户
将数据库对象（表和视图、指定字段、数据库、函数、模式等）的相关权限授予特定角色或用户。
- **不允许对表分区进行GRANT操作**，否则会引起告警。
- 如果要重命名一个对象，用户除了必须是该对象的所有者外，还必须拥有该对象所在模式的CREATE权限。
- **将模式中的表或者视图对象授权给其他用户时，需要将表或视图所属的模式的USAGE权限同时授予该用户，**若没有该权限，则只能看到这些对象的名字，并不能实际进行对象访问。
- GRANT命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。
- **关键字PUBLIC**表示该权限要赋予所有角色，包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组，它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限，再加上PUBLIC的权限。
- 如果声明了WITH GRANT OPTION，则被授权的用户也可以将此权限赋予他人，否则就不能授权给他人。这个选项不能赋予PUBLIC，这是DWS特有的属性。
- DWS会将某些类型的对象上的权限授予PUBLIC。默认情况下，对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC，而以下这些对象的权限会授予PUBLIC：数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型（包括域）的USAGE特权。对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全，建议在同一个事务中创建对象并设置权限，这样其他用户就没有时间窗口使用该对象。另外，这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。
 
#### 将角色或用户的权限授权给其他角色或用户
将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下，每个角色或用户都可视为拥有一个或多个数据库权限的集合。
- 当声明了WITH ADMIN OPTION，被授权的用户可以将该权限再次授予其他角色或用户，以及撤销所有由该角色或用户继承到的权限。
- 当授权的角色或用户发生变更或被撤销时，所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。
- 数据库系统管理员可以给任何角色或用户授予/撤销任何权限。
- 拥有CREATEROLE权限的角色可以赋予或者撤销任何非系统管理员角色的权限。

- **将系统权限授权给角色或用户**
  系统权限又称为用户属性，包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。
  系统权限一般通过CREATE/ALTER ROLE语法来指定。其中，SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承，也无法授予PUBLIC。
  
- **将数据库对象授权给角色或用户**
  将数据库对象（表和视图、指定字段、数据库、函数、模式等）的相关权限授予特定角色或用户。
  GRANT命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。
  关键字PUBLIC表示该权限要赋予所有角色，包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组，它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限，再加上PUBLIC的权限。
  如果声明了WITH GRANT OPTION，则被授权的用户也可以将此权限赋予他人，否则就不能授权给他人。这个选项不能赋予PUBLIC，这是DWS特有的属性。
  DWS会将某些类型的对象上的权限授予PUBLIC。默认情况下，对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC，而以下这些对象的权限会授予PUBLIC：数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型（包括域）的USAGE特权。对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全，建议在同一个事务中创建对象并设置权限，这样其他用户就没有时间窗口使用该对象。另外，这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。
  
- **将角色或用户的权限授权给其他角色或用户**
  将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下，每个角色或用户都可视为拥有一个或多个数据库权限的集合。
  当声明了WITH ADMIN OPTION，被授权的用户可以将该权限再次授予其他角色或用户，以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时，所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。
  数据库系统管理员可以给任何角色或用户授予/撤销任何权限。拥有CREATEROLE权限的角色可以赋予或者撤销任何非系统管理员角色的权限。
  
 
#### 权限分类
表2GRANT的权限分类 
| 参数                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|
| SELECT                  | 允许对指定的表、视图、序列执行SELECT语句。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| INSERT                    | 允许对指定的表执行INSERT语句。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| UPDATE                   | 允许对声明的表中任意字段执行UPDATE语句。SELECT... FOR UPDATE和SELECT... FOR SHARE除了需要SELECT权限外，还需要UPDATE权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| DELETE                  | 允许执行DELETE语句删除指定表中的数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| TRUNCATE                 | 允许执行TRUNCATE语句删除指定表中的所有记录。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| REFERENCES               | 创建一个外键约束，必须拥有参考表和被参考表的REFERENCES权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| TRIGGER                  | 创建一个触发器，必须拥有表或视图的TRIGGER权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ANALYZE \| ANALYSE      | 对表执行ANALYZE \| ANALYSE操作来收集表的统计信息，必须拥有表的ANALYZE \| ANALYSE权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| CREATE                   | - 对于数据库，允许在数据库里创建新的模式。  - 对于模式，允许在模式中创建新的对象。如果要重命名一个对象，用户除了必须是该对象的所有者外，还必须拥有该对象所在模式的CREATE权限。  - 对于子集群，允许在子集群中创建表对象。                                                                                                                                            |
| CONNECT                   | 允许用户连接到指定的数据库。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| TEMPORARY \| TEMP       | 允许在使用指定数据库时创建临时表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| EXECUTE                  | 允许使用指定的函数，以及利用这些函数实现的操作符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| USAGE                     | - 对于过程语言，允许用户在创建函数的时候指定过程语言。  - 对于模式，USAGE允许访问包含在指定模式中的对象，若没有该权限，则只能看到这些对象的名字。  - 对于序列，USAGE允许使用nextval函数。  - 对于子集群， 对包含在指定模式中的对象有访问权限时，USAGE允许访问指定子集群下的表对象。   |
| COMPUTE                | 针对计算子集群，允许用户在具有compute权限的计算子集群上进行弹性计算。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ALTER                   | 允许修改表、模式或函数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| DROP                    | 允许删除表、模式或函数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| VACUUM                   | 允许对表执行VACUUM。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ALL PRIVILEGES           | 一次赋予指定用户/角色所有可赋予的权限。只有系统管理员有权执行GRANT ALL PRIVILEGES。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| WITH GRANT OPTION  | 如果声明了WITH GRANT OPTION，则被授权的用户也可以将此权限赋予他人，否则就不能授权给他人。这个选项不能赋予PUBLIC。 - NODE GROUP不支持WITH GRANT OPTION功能。  - 使用WITH GRANT OPTION时需确保[security_enable_options](https://support.huaweicloud.com/devg-911-dws/dws_04_0940.html)参数值中设置了grant_with_grant_option。                                                 |
| WITH ADMIN OPTION       | 指定权限是否允许转授。如果声明了WITH ADMIN OPTION，角色的成员又可以将角色的成员身份授予其他人。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 语法格式
- 将**表或视图的访问权限** 赋予指定的用户或角色。不允许对表分区进行GRANT操作，对表分区进行GRANT操作会引起告警。
  ```
  GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | ANALYZE | ANALYSE | VACUUM | ALTER | DROP } [, ...] 
        | ALL [ PRIVILEGES ] }
      ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
      TO { [ GROUP ] role_name | PUBLIC } [, ...] 
      [ WITH GRANT OPTION ];
  ```
  ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/caution_3.0-zh-cn.png)
  避免对同一张表或视图（包括ON TABLE和ON ALL TABLES IN SCHEMA）执行并发GRANT/REVOKE操作，或者对同一张表或视图同时执行GRANT/REVOKE操作和DDL操作，否则会出现类似报错"tuple concurrently updated."。
  
- 将**表中字段的访问权限** 赋予指定的用户或角色。
  ```
  GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )} [, ...] 
        | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
      ON [ TABLE ] table_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将**模式的访问权限** 赋予指定的用户或角色。
  ```
  GRANT { { CREATE | USAGE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] }
      ON SCHEMA schema_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/caution_3.0-zh-cn.png)
  将模式中的表或者视图对象授权给其他用户时，需要将表或视图所属的模式的USAGE权限同时授予该用户，若没有该权限，则只能看到这些对象的名字，并不能实际进行对象访问。
  
- 将**数据库的访问权限** 赋予指定的用户或角色。
  ```
  GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...]
        | ALL [ PRIVILEGES ] }
      ON DATABASE database_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将**角色的权限** 赋予其他用户或角色的语法。
  ```
  GRANT role_name [, ...]
     TO role_name [, ...]
     [ WITH ADMIN OPTION ];
  ```
  
- 将**所有权限** 赋予指定的角色。
  ```
  GRANT ALL { PRIVILEGES | PRIVILEGE }
     TO role_name;
  ```
  
- 将域的访问权限赋予指定的用户或角色。
  ```
  GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON DOMAIN domain_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
  当前版本暂时不支持赋予域的访问权限。
  
- 将外部数据源的访问权限赋予给指定的用户或角色。
  ```
  GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON FOREIGN DATA WRAPPER fdw_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将外部服务器的访问权限赋予给指定的用户或角色。
  ```
  GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON FOREIGN SERVER server_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将函数的访问权限赋予给指定的用户或角色。
  ```
  GRANT { { EXECUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] }
      ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
         | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将过程语言的访问权限赋予给指定的用户或角色。
  ```
  GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON LANGUAGE lang_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
  当前版本暂时不支持过程语言。
  
- 将大对象的访问权限赋予指定的用户或角色。
  ```
  GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
      ON LARGE OBJECT loid [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
  当前版本暂时不支持大对象。
  
- 将序列的访问权限赋予指定的用户或角色。
  ```
  GRANT { { SELECT | UPDATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
      ON { SEQUENCE sequence_name [, ...] 
           | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将子集群的访问权限赋予指定的用户或角色。普通用户不能执行针对Node Group的GRANT/REVOKE操作。
  ```
  GRANT { CREATE | USAGE | COMPUTE | ALL [ PRIVILEGES ] }
      ON NODE GROUP group_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  
- 将类型的访问权限赋予指定的用户或角色。
  ```
  GRANT { USAGE | ALL [ PRIVILEGES ] }
      ON TYPE type_name [, ...]
      TO { [ GROUP ] role_name | PUBLIC } [, ...]
      [ WITH GRANT OPTION ];
  ```
  ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
  当前版本暂时不支持赋予类型的访问权限。
  
 
 #### 参数说明
表3GRANT的参数说明 
| 参数              | 描述                                                                                                                                                                             | 取值范围                                                                                                                                                       |
|:---|:---|:---|
| role_name      | 已存在用户名称，可通过[PG_USER](https://support.huaweicloud.com/devg-911-dws/dws_04_0791.html)视图查询用户列表。                                                                                  | 字符串，要符合标识符命名规范。最多为63个字符。                                                                                                                                   |
| table_name     | 已存在表名称，可通过[PG_TABLES](https://support.huaweicloud.com/devg-911-dws/dws_04_0784.html)查询表名称。                                                                                     | 字符串，长度不超过63个字符，以字母或下划线开头，可包含字母、数字、下划线、$、#。                                                                                                                 |
| column_name    | 已存在字段名称 ，可通过以下语句查询表字段名称。 ``` SELECT * FROM PG_GET_TABLEDEF('table name'); ``` 。 | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。    |
| schema_name    | 已存在模式名称，可通过[PG_NAMESPACE](https://support.huaweicloud.com/devg-911-dws/dws_04_0600.html)系统表查询模式名称。                                                                           | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。     |
| database_name   | 已存在数据库名称，可通过[PG_DATABASE](https://support.huaweicloud.com/devg-911-dws/dws_04_0582.html)系统表查询数据库名称。                                                                           | 字符串，要符合标识符的命名规范：数据库名称是由大小写英文字母、数字、_和$组合而成，并且不能以数字和$开头。                                                                                  |
| function_name  | 已存在函数名称，可通过[PG_PROC](https://support.huaweicloud.com/devg-911-dws/dws_04_0608.html)系统表查询函数名称。                                                                                | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。  |
| sequence_name | 已存在序列名称，可通过PG_SEQUENCES系统视图（仅9.1.0及以上集群支持）查询序列名称。                                                                                                                            | 字符串，仅可以使用小写字母（a\~z）、 大写字母（A\~Z），数字和特殊字符"#"，"_"，"$"的组合。                                                                                                    |
| domain_name    | 已存在域类型名称。                                                                                                                                                                    | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。   |
| fdw_name        | 已存在外部数据包名称。                                                                                                                                                                  | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。  |
| lang_name       | 已存在语言名称。                                                                                                                                                                      | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。 |
| type_name        | 已存在类型名称。                                                                                                                                                                       | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。   |
| group_name       | 已存在的子集群名称。                                                                                                                                                                      | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。     |
| argmode          | 函数的参数模式。                                                                                                                                                                     | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。      |
| arg_name        | 函数的参数名称。                                                                                                                                                                     | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。   |
| arg_type        | 函数的参数类型。                                                                                                                                                                       | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。   |
| loid             | 包含本页的大对象的标识符。                                                                                                                                                                  | 字符串，要符合标识符命名规范。详情请参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。 |
   
#### 示例
- **将系统权限授权给用户或者角色。**
  - 将sysadmin所有可用权限授权给joe用户：
    ```
    GRANT ALL PRIVILEGES TO joe;
    ```
    授权成功后，用户joe会拥有sysadmin的所有权限。
    
   
- **将对象权限授权给用户或者角色** 。
  - 将表tpcds.reason的SELECT权限授权给用户joe：
    ```
    GRANT SELECT ON TABLE tpcds.reason TO joe;
    ```
    
  
  - 将表tpcds.reason的所有权限授权给用户kim：
    ```
    GRANT ALL PRIVILEGES ON tpcds.reason TO kim;
    ```
    授权成功后，kim用户就拥有了tpcds.reason表的所有权限，包括增删改查等权限。
    
  
  - 将模式tpcds的使用权限授权给用户joe：
    ```
    GRANT USAGE ON SCHEMA tpcds TO joe;
    ```
    授权成功后，joe用户就拥有了模式schema的USAGE权限，允许访问包含在指定模式schema中的对象。
    
  
  - 将tpcds.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 tpcds.reason TO joe;
    ```
    授权成功后，用户joe对tpcds.reason表中r_reason_sk，r_reason_id的查询权限会立即生效。
    ```
    GRANT select (r_reason_sk, r_reason_id) ON tpcds.reason TO joe ;
    ```
    
  
  - 将函数func_add_sql的EXECUTE权限授权给用户joe。
    ```
    CREATE FUNCTION func_add_sql(f1 integer,f2 integer) RETURNS integer
        AS 'select $1 + $2;'
        LANGUAGE SQL
        IMMUTABLE
        RETURNS NULL ON NULL INPUT;
    GRANT EXECUTE ON FUNCTION func_add_sql(integer, integer) TO joe;
    ```
    
  
  - 将序列serial的UPDATE权限授权给joe用户。
    ```
    GRANT UPDATE ON SEQUENCE serial TO joe;
    ```
    
  
  - 将数据库gaussdb的连接权限授权给用户joe，并给予其在gaussdb中创建schema的权限：
    ```
    GRANT create,connect on database gaussdb TO joe ;
    ```
    
  
  - 将模式tpcds的访问权限授权给角色tpcds_manager，并授予该角色在tpcds下创建对象的权限，不允许该角色中的用户将权限授权给其他人：
    ```
    GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager;
    ```
    
   
- **将用户或者角色的权限授权给其他用户或角色。**
  - 将用户joe的权限授权给用户manager，并允许该角色将权限授权给其他人：
    ```
    GRANT joe TO manager WITH ADMIN OPTION;
    ```
    
  
  - 将用户manager的权限授权给senior_manager用户：
    ```
    GRANT manager TO senior_manager;
    ```
    
   
 
#### 相关链接
[REVOKE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0253.html)，[ALTER DEFAULT PRIVILEGES](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0244.html)
#### 常见问题
- [如何给DWS指定用户赋予某张表的权限](https://support.huaweicloud.com/dws_faq/dws_03_0197.html)
- [如何给DWS指定用户赋予某个SCHEMA的权限](https://support.huaweicloud.com/dws_faq/dws_03_0196.html)
- [如何创建DWS数据库只读用户](https://support.huaweicloud.com/dws_faq/dws_03_0198.html)
- [如何查看DWS某个用户有哪些表的权限](https://support.huaweicloud.com/dws_faq/dws_03_0201.html)
- [将Schema中的表的查询权限赋给其他用户，赋权后仍无法查询Schema中的表](https://support.huaweicloud.com/trouble-dws/dws_09_0042.html)
- [某张表执行过grant select on table t1 to public，如何针对某用户回收权限](https://support.huaweicloud.com/trouble-dws/dws_09_0093.html)
- [普通用户创建或删除GDS/OBS外表语句时报错，提示没有权限或权限不足](https://support.huaweicloud.com/trouble-dws/dws_09_0005.html)
- [赋予用户schema的all权限后建表仍然报错ERROR: current user does not have privilege to role tom](https://support.huaweicloud.com/trouble-dws/dws_09_0094.html)
- [执行语句过程中报错：无权限操作](https://support.huaweicloud.com/trouble-dws/dws_09_0091.html)
 
