# 修改数据库对象权限 - UpdateDatabaseAuthority
#### 功能介绍
修改数据库对象权限。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-dws/dws_02_0062.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-dws/dws_02_0056.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                                 | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 别名                     | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | dws:cluster:updateDatabaseAuthority | Write | cluster \*  | - g:ResourceTag/\<tag-key\>   - g:EnterpriseProjectId    | dws:dbAuthority:update | -      |
     
  
 
#### URI
POST /v1/{project_id}/clusters/{cluster_id}/db-manager/authority
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释**： 项目ID。获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-dws/dws_02_0011.html)。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。  |
| cluster_id | 是    | String | **参数解释**： 集群ID。获取方法请参见[获取集群ID](https://support.huaweicloud.com/api-dws/dws_02_00068.html)。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。 |
   
#### 请求参数
表2请求Body参数 
| 参数          | 是否必选 | 参数类型                                                                                                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| type        | 是    | String                                                                                                | **参数解释**： 对象类型。 **取值范围**： - DATABASE：数据库。   - SCHEMA：模式。   - TABLE：表。   - VIEW：视图。   - COLUMN：列。   - FUNCTION：函数。   - SEQUENCE：序列。   - NODEGROUP：节点组。   - ROLE：角色。    |
| is_grant    | 是    | Boolean                                                                                               | **参数解释**： 是否授权操作。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| grant_list  | 否    | Array of [Grant] objects   | **参数解释**： 授权列表。 **约束限制**： is_grant为true时必填。列表项最大值为100。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| revoke_list | 否    | Array of [Revoke] objects | **参数解释**： 撤销权限列表。 **约束限制**： is_grant为false时必填。列表项最大值为100。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| role_list   | 是    | Array of strings                                                                                      | **参数解释**： 被授权角色列表。 **约束限制**： 列表项取值\[0,100\]。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| object_list | 是    | Array of strings                                                                                      | **参数解释**： 权限所属对象列表。 **约束限制**： 列表项取值\[0,2000\]。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| all_object  | 否    | Boolean                                                                                               | **参数解释**： schema下所有数据库对象权限。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| cascade     | 否    | Boolean                                                                                               | **参数解释**： 撤销权限是否级联撤销。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| database    | 是    | String                                                                                                | **参数解释**： 数据库名称。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| schema      | 否    | String                                                                                                | **参数解释**： 模式名称。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| table       | 否    | String                                                                                                | **参数解释**： 表名。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
 表3Grant 
| 参数         | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| permission | 是    | String  | **参数解释**： 权限名称，根据不同数据库对象类型，拥有权限不同。 **取值范围**： - database：CREATE \| CONNECT \| TEMPORARY \| TEMP ALL PRIVILEGES   - schema：CREATE \| USAGE \| ALTER \| DROP ALL PRIVILEGES   - table：SELECT \| INSERT \| UPDATE \| DELETE \| TRUNCATE \| REFERENCES \| TRIGGER \| ANALYZE \| ANALYSE \| VACUUM \| ALTER \| DROP ALL PRIVILEGES   - view：SELECT \| INSERT \| UPDATE \| DELETE \| TRUNCATE \| REFERENCES \| TRIGGER \| ANALYZE \| ANALYSE \| VACUUM \| ALTER \| DROP ALL PRIVILEGES   - column：SELECT \| INSERT \| UPDATE \| REFERENCES ALL PRIVILEGES   - function：EXECUTE ALL PRIVILEGES   - sequence：SELECT \| UPDATE \| USAGE ALL PRIVILEGES   - nodegroup：CREATE \| USAGE \| COMPUTE ALL PRIVILEGES   - role：role_name（角色名称）    **默认取值**： 不涉及。 |
| grant_with | 是    | Boolean | **参数解释**： 是否包含授权选项。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表4Revoke 
| 参数          | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| permission  | 是    | String  | **参数解释**： 权限名称，根据不同数据库对象类型，拥有权限不同。 **取值范围**： - database：CREATE \| CONNECT \| TEMPORARY \| TEMP ALL PRIVILEGES   - schema：CREATE \| USAGE \| ALTER \| DROP ALL PRIVILEGES   - table：SELECT \| INSERT \| UPDATE \| DELETE \| TRUNCATE \| REFERENCES \| TRIGGER \| ANALYZE \| ANALYSE \| VACUUM \| ALTER \| DROP ALL PRIVILEGES   - view：SELECT \| INSERT \| UPDATE \| DELETE \| TRUNCATE \| REFERENCES \| TRIGGER \| ANALYZE \| ANALYSE \| VACUUM \| ALTER \| DROP ALL PRIVILEGES   - column：SELECT \| INSERT \| UPDATE \| REFERENCES ALL PRIVILEGES   - function：EXECUTE ALL PRIVILEGES   - sequence：SELECT \| UPDATE \| USAGE ALL PRIVILEGES   - nodegroup：CREATE \| USAGE \| COMPUTE ALL PRIVILEGES   - role：role_name（角色名称）    **默认取值**： 不涉及。 |
| revoke_with | 是    | Boolean | **参数解释**： 是否仅移除授权选项。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
#### 响应参数
**状态码：200**
表5响应Body参数 
| 参数       | 参数类型             | 描述                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| view_sql | Array of strings | **参数解释**： sql列表。 **取值范围**： 不涉及。 |
   
#### 请求示例
修改集群ID为"a89aea88-7ea2-40bd-8ac8-8b93e169e5d6"的数据库对象权限，即对gaussdb数据库下表table1和table2进行"SELECT"授权，授权角色为user1和user2，模式为public。
```
POST https://{Endpoint}/v1/0536cdee2200d5912f7cc00b877980f1/clusters/a89aea88-7ea2-40bd-8ac8-8b93e169e5d6/db-manager/authority
{
  "type" : "table",
  "is_grant" : true,
  "grant_list" : [ {
    "permission" : "SELECT",
    "grant_with" : true
  } ],
  "role_list" : [ "user1", "user2" ],
  "object_list" : [ "table1", "table2" ],
  "database" : "gaussdb",
  "schema" : "public"
}
```
#### 响应示例
**状态码：200**
```
{
  "view_sql" : [ "GRANT SELECT ON TABLE public.test_t1 TO user1 WITH GRANT OPTION;", "GRANT UPDATE ON TABLE public.test_t1 TO user1 ;" ]
}
```
#### SDK代码示例
SDK代码示例如下。
- [Java]
  修改集群ID为"a89aea88-7ea2-40bd-8ac8-8b93e169e5d6"的数据库对象权限，即对gaussdb数据库下表table1和table2进行"SELECT"授权，授权角色为user1和user2，模式为public。
  ```
  package com.huaweicloud.sdk.test;
  import com.huaweicloud.sdk.core.auth.ICredential;
  import com.huaweicloud.sdk.core.auth.BasicCredentials;
  import com.huaweicloud.sdk.core.exception.ConnectionException;
  import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
  import com.huaweicloud.sdk.core.exception.ServiceResponseException;
  import com.huaweicloud.sdk.dws.v2.region.DwsRegion;
  import com.huaweicloud.sdk.dws.v2.*;
  import com.huaweicloud.sdk.dws.v2.model.*;
  import java.util.List;
  import java.util.ArrayList;
  public class UpdateDatabaseAuthoritySolution {
      public static void main(String[] args) {
          // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
          // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
          String ak = System.getenv("CLOUD_SDK_AK");
          String sk = System.getenv("CLOUD_SDK_SK");
          String projectId = "{project_id}";
          ICredential auth = new BasicCredentials()
                  .withProjectId(projectId)
                  .withAk(ak)
                  .withSk(sk);
          DwsClient client = DwsClient.newBuilder()
                  .withCredential(auth)
                  .withRegion(DwsRegion.valueOf("<YOUR REGION>"))
                  .build();
          UpdateDatabaseAuthorityRequest request = new UpdateDatabaseAuthorityRequest();
          request.withClusterId("{cluster_id}");
          DatabasePermissionReq body = new DatabasePermissionReq();
          List<String> listbodyObjectList = new ArrayList<>();
          listbodyObjectList.add("table1");
          listbodyObjectList.add("table2");
          List<String> listbodyRoleList = new ArrayList<>();
          listbodyRoleList.add("user1");
          listbodyRoleList.add("user2");
          List<Grant> listbodyGrantList = new ArrayList<>();
          listbodyGrantList.add(
              new Grant()
                  .withPermission("SELECT")
                  .withGrantWith(true)
          );
          body.withSchema("public");
          body.withDatabase("gaussdb");
          body.withObjectList(listbodyObjectList);
          body.withRoleList(listbodyRoleList);
          body.withGrantList(listbodyGrantList);
          body.withIsGrant(true);
          body.withType("table");
          request.withBody(body);
          try {
              UpdateDatabaseAuthorityResponse response = client.updateDatabaseAuthority(request);
              System.out.println(response.toString());
          } catch (ConnectionException e) {
              e.printStackTrace();
          } catch (RequestTimeoutException e) {
              e.printStackTrace();
          } catch (ServiceResponseException e) {
              e.printStackTrace();
              System.out.println(e.getHttpStatusCode());
              System.out.println(e.getRequestId());
              System.out.println(e.getErrorCode());
              System.out.println(e.getErrorMsg());
          }
      }
  }
  ```
- [Python]
  修改集群ID为"a89aea88-7ea2-40bd-8ac8-8b93e169e5d6"的数据库对象权限，即对gaussdb数据库下表table1和table2进行"SELECT"授权，授权角色为user1和user2，模式为public。
  ```
  # coding: utf-8
  import os
  from huaweicloudsdkcore.auth.credentials import BasicCredentials
  from huaweicloudsdkdws.v2.region.dws_region import DwsRegion
  from huaweicloudsdkcore.exceptions import exceptions
  from huaweicloudsdkdws.v2 import *
  if __name__ == "__main__":
      # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak = os.environ["CLOUD_SDK_AK"]
      sk = os.environ["CLOUD_SDK_SK"]
      projectId = "{project_id}"
      credentials = BasicCredentials(ak, sk, projectId)
      client = DwsClient.new_builder() \
          .with_credentials(credentials) \
          .with_region(DwsRegion.value_of("<YOUR REGION>")) \
          .build()
      try:
          request = UpdateDatabaseAuthorityRequest()
          request.cluster_id = "{cluster_id}"
          listObjectListbody = [
              "table1",
              "table2"
          ]
          listRoleListbody = [
              "user1",
              "user2"
          ]
          listGrantListbody = [
              Grant(
                  permission="SELECT",
                  grant_with=True
              )
          ]
          request.body = DatabasePermissionReq(
              schema="public",
              database="gaussdb",
              object_list=listObjectListbody,
              role_list=listRoleListbody,
              grant_list=listGrantListbody,
              is_grant=True,
              type="table"
          )
          response = client.update_database_authority(request)
          print(response)
      except exceptions.ClientRequestException as e:
          print(e.status_code)
          print(e.request_id)
          print(e.error_code)
          print(e.error_msg)
  ```
- [Go]
  修改集群ID为"a89aea88-7ea2-40bd-8ac8-8b93e169e5d6"的数据库对象权限，即对gaussdb数据库下表table1和table2进行"SELECT"授权，授权角色为user1和user2，模式为public。
  ```
  package main
  import (
  "fmt"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
      dws "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/model"
      region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/region"
  )
  func main() {
      // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak := os.Getenv("CLOUD_SDK_AK")
      sk := os.Getenv("CLOUD_SDK_SK")
      projectId := "{project_id}"
      auth, err := basic.NewCredentialsBuilder().
          WithAk(ak).
          WithSk(sk).
          WithProjectId(projectId).
          SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      hcClient, err := dws.DwsClientBuilder().
           WithRegion(region.ValueOf("<YOUR REGION>")).
           WithCredential(auth).
           SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      client := dws.NewDwsClient(hcClient)
      request := &model.UpdateDatabaseAuthorityRequest{}
  request.ClusterId = "{cluster_id}"
  var listObjectListbody = []string{
          "table1",
      "table2",
      }
  var listRoleListbody = []string{
          "user1",
      "user2",
      }
  var listGrantListbody = []model.Grant{
          {
              Permission: "SELECT",
              GrantWith: true,
          },
      }
  schemaDatabasePermissionReq:= "public"
  request.Body = &model.DatabasePermissionReq{
  Schema: &schemaDatabasePermissionReq,
  Database: "gaussdb",
  ObjectList: listObjectListbody,
  RoleList: listRoleListbody,
  GrantList: &listGrantListbody,
  IsGrant: true,
  Type: "table",
  }
  response, err := client.UpdateDatabaseAuthority(request)
  if err == nil {
          fmt.Printf("%+v\n", response)
      } else {
          fmt.Println(err)
      }
  }
  ```
- [更多]
  更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DWS/sdk?api=UpdateDatabaseAuthority)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 200 | 修改成功。   |
| 400 | 请求错误。   |
| 401 | 鉴权失败。   |
| 403 | 没有操作权限。 |
| 404 | 找不到资源。  |
| 500 | 服务内部错误。 |
| 503 | 服务不可用。  |
   
