

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 授予及撤銷 RDS for Db2 權限的預存程序
<a name="db2-sp-granting-revoking-privileges"></a>

本主題中所述的內建預存程序會管理 Amazon RDS for Db2 資料庫的使用者、角色、群組和授權。若要執行這些程序，主要使用者必須先連線到 `rdsadmin` 資料庫。

如需使用這些預存程序的任務，請參閱 [授予及撤銷權限](db2-granting-revoking-privileges.md)和 [設定 Kerberos 身分驗證](db2-kerberos-setting-up.md)。

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.create\$1role](#db2-sp-create-role)
+ [rdsadmin.grant\$1role](#db2-sp-grant-role)
+ [rdsadmin.revoke\$1role](#db2-sp-revoke-role)
+ [rdsadmin.drop\$1role](#db2-sp-drop-role)
+ [rdsadmin.add\$1user](#db2-sp-add-user)
+ [rdsadmin.change\$1password](#db2-sp-change-password)
+ [rdsadmin.list\$1users](#db2-sp-list-users)
+ [rdsadmin.remove\$1user](#db2-sp-remove-user)
+ [rdsadmin.add\$1groups](#db2-sp-add-groups)
+ [rdsadmin.remove\$1groups](#db2-sp-remove-groups)
+ [rdsadmin.dbadm\$1grant](#db2-sp-dbadm-grant)
+ [rdsadmin.dbadm\$1revoke](#db2-sp-dbadm-revoke)
+ [rdsadmin.set\$1sid\$1group\$1mapping](#db2-sp-set-sid-group-mapping)
+ [rdsadmin.list\$1sid\$1group\$1mapping](#db2-sp-list-sid-group-mapping)
+ [rdsadmin.remove\$1sid\$1group\$1mapping](#db2-sp-remove-sid-group-mapping)

## rdsadmin.create\$1role
<a name="db2-sp-create-role"></a>

建立角色。

### 語法
<a name="db2-sp-create-role-syntax"></a>

```
db2 "call rdsadmin.create_role(
    'database_name',
    'role_name')"
```

### Parameters
<a name="db2-sp-create-role-parameters"></a>

下列是必要參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
您要建立角色的名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-create-role-usage-notes"></a>

如需檢查建立角色狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-create-role-examples"></a>

下列範例會為資料庫 `DB2DB` 建立名為 `MY_ROLE` 的角色。

```
db2 "call rdsadmin.create_role(
    'DB2DB',
    'MY_ROLE')"
```

## rdsadmin.grant\$1role
<a name="db2-sp-grant-role"></a>

將角色指派給角色、使用者或群組。

### 語法
<a name="db2-sp-grant-role-syntax"></a>

```
db2 "call rdsadmin.grant_role(
    ?,
    'database_name',
    'role_name',
    'grantee',
    'admin_option')"
```

### Parameters
<a name="db2-sp-grant-role-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
您要建立角色的名稱。資料類型為 `varchar`。

*grantee*  
要接收授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`、`PUBLIC`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

下列是選用輸入參數：

*admin\$1option*  
指定承授者 `ROLE` 是否具有指派角色的 `DBADM` 授權。資料類型為 `char`。預設值為 `N`。

### 使用須知
<a name="db2-sp-grant-role-usage-notes"></a>

如需檢查指派角色狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-grant-role-examples"></a>

**範例 1：將角色指派給角色、使用者和群組，以及授予授權**

下列範例會為資料庫 `TESTDB` 將名為 `ROLE_TEST` 的角色指派給名為 `role1` 的角色、名為 `user1` 的使用者，以及名為 `group1` 的群組。`ROLE_TEST` 獲得指派角色的管理員授權。

```
db2 "call rdsadmin.grant_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'ROLE role1, USER user1, GROUP group1',
    'Y')"
```

**範例 2：將角色指派給 `PUBLIC`，而不是授予授權**

下列範例會為資料庫 `TESTDB` 將名為 `ROLE_TEST` 的角色指派給 `PUBLIC`。`ROLE_TEST` 未獲得指派角色的管理員授權。

```
db2 "call rdsadmin.grant_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'PUBLIC')"
```

## rdsadmin.revoke\$1role
<a name="db2-sp-revoke-role"></a>

從角色、使用者或群組撤銷角色。

### 語法
<a name="db2-sp-revoke-role-syntax"></a>

```
db2 "call rdsadmin.revoke_role(
    ?,
    'database_name',
    'role_name',
    'grantee')"
```

### Parameters
<a name="db2-sp-revoke-role-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數只接受 ?。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
要撤銷之角色的名稱。資料類型為 `varchar`。

*grantee*  
要失去授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`、`PUBLIC`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

### 使用須知
<a name="db2-sp-revoke-role-usage-notes"></a>

如需檢查撤銷角色狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-revoke-role-examples"></a>

**範例 1：從角色、使用者和群組撤銷角色**

下列範例會從名為 `role1` 的角色、名為 `user1` 的使用者和名為 `group1` 的群組為資料庫 `TESTDB` 撤銷名為 `ROLE_TEST` 的角色。

```
db2 "call rdsadmin.revoke_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'ROLE role1, USER user1, GROUP group1')"
```

**範例 2：從 `PUBLIC` 撤銷角色**

下列範例會從 `PUBLIC` 為資料庫 `TESTDB` 撤銷名為 `ROLE_TEST` 的角色。

```
db2 "call rdsadmin.revoke_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'PUBLIC')"
```

## rdsadmin.drop\$1role
<a name="db2-sp-drop-role"></a>

捨棄角色。

### 語法
<a name="db2-sp-drop-role-syntax"></a>

```
db2 "call rdsadmin.drop_role(
    ?,
    'database_name',
    'role_name')"
```

### Parameters
<a name="db2-sp-drop-role-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數只接受 ?。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
要捨棄之角色的名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-drop-role-usage-notes"></a>

如需檢查捨棄角色狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-drop-role-examples"></a>

下列範例會為資料庫 `TESTDB` 捨棄名為 `ROLE_TEST` 的角色。

```
db2 "call rdsadmin.drop_role(
    ?,
    'TESTDB',
    'ROLE_TEST')"
```

## rdsadmin.add\$1user
<a name="db2-sp-add-user"></a>

將使用者新增至授權清單。

### 語法
<a name="db2-sp-add-user-syntax"></a>

```
db2 "call rdsadmin.add_user(
    'username',
    'password',
    'group_name,group_name')"
```

### Parameters
<a name="db2-sp-add-user-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*password*  
使用者的密碼。資料類型為 `varchar`。

以下為選用參數：

*group\$1name*  
要新增使用者的群組之名稱。資料類型為 `varchar`。預設為空字串或 null。

### 使用須知
<a name="db2-sp-add-user-usage-notes"></a>

您可以透過使用逗號分隔群組名稱，將使用者新增至一或多個群組。

您可以在建立新使用者或[將群組新增至現有使用者](db2-granting-revoking-privileges.md#add-group-to-user)時建立群組。您無法自行建立群組。

**注意**  
您可以呼叫 `rdsadmin.add_user` 來新增的使用者數量上限為 5,000。

如需檢查新增使用者狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-add-user-examples"></a>

下列範例會建立名為 `jorge_souza` 的使用者，並將使用者指派給名為 `sales` 和 `inside_sales` 的群組。

```
db2 "call rdsadmin.add_user(
    'jorge_souza',
    '*******',
    'sales,inside_sales')"
```

## rdsadmin.change\$1password
<a name="db2-sp-change-password"></a>

變更使用者的密碼。

### 語法
<a name="db2-sp-change-password-syntax"></a>

```
db2 "call rdsadmin.change_password(
    'username',
    'new_password')"
```

### Parameters
<a name="db2-sp-change-password-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*new\$1password*  
使用者的新密碼。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-change-password-usage-notes"></a>

如需檢查變更密碼狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-change-password-examples"></a>

下列範例會變更 `jorge_souza` 的密碼。

```
db2 "call rdsadmin.change_password(
    'jorge_souza',
    '*******')"
```

## rdsadmin.list\$1users
<a name="db2-sp-list-users"></a>

列出授權清單上的使用者。

### 語法
<a name="db2-sp-list-users-syntax"></a>

```
db2 "call rdsadmin.list_users()"
```

### 使用須知
<a name="db2-sp-list-users-usage-notes"></a>

如需檢查列出使用者狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## rdsadmin.remove\$1user
<a name="db2-sp-remove-user"></a>

從授權清單中移除使用者。

### 語法
<a name="db2-sp-remove-user-syntax"></a>

```
db2 "call rdsadmin.remove_user('username')"
```

### Parameters
<a name="db2-sp-remove-user-parameters"></a>

以下是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-remove-user-usage-notes"></a>

如需檢查移除使用者狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-remove-user-examples"></a>

下列範例會移除 `jorge_souza`，使其無法存取 RDS for Db2 資料庫執行個體中的資料庫。

```
db2 "call rdsadmin.remove_user('jorge_souza')"
```

## rdsadmin.add\$1groups
<a name="db2-sp-add-groups"></a>

將群組新增至使用者。

### 語法
<a name="db2-sp-add-groups-syntax"></a>

```
db2 "call rdsadmin.add_groups(
    'username',
    'group_name,group_name')"
```

### Parameters
<a name="db2-sp-add-groups-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*group\$1name*  
要新增使用者的群組之名稱。資料類型為 `varchar`。預設為空字串。

### 使用須知
<a name="db2-sp-add-groups-usage-notes"></a>

您可以透過使用逗號分隔群組名稱，將一或多個群組新增至使用者。如需檢查新增群組狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-add-groups-examples"></a>

下列範例會將 `direct_sales` 和 `b2b_sales` 群組新增至使用者 `jorge_souza`。

```
db2 "call rdsadmin.add_groups(
    'jorge_souza',
    'direct_sales,b2b_sales')"
```

## rdsadmin.remove\$1groups
<a name="db2-sp-remove-groups"></a>

從使用者移除群組。

### 語法
<a name="db2-sp-remove-groups-syntax"></a>

```
db2 "call rdsadmin.remove_groups(
    'username',
    'group_name,group_name')"
```

### Parameters
<a name="db2-sp-remove-groups-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*group\$1name*  
要從中移除使用者之群組的名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-remove-groups-usage-notes"></a>

您可以透過使用逗號分隔群組名稱，將一或多個群組從使用者移除。

如需檢查移除群組狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-remove-groups-examples"></a>

下列範例會將 `direct_sales` 和 `b2b_sales` 群組從使用者 `jorge_souza` 移除。

```
db2 "call rdsadmin.remove_groups(
    'jorge_souza',
    'direct_sales,b2b_sales')"
```

## rdsadmin.dbadm\$1grant
<a name="db2-sp-dbadm-grant"></a>

將 `DBADM`、`ACCESSCTRL` 或 `DATAACCESS` 授權授予角色、使用者或群組。

### 語法
<a name="db2-sp-dbadm-grant-syntax"></a>

```
db2 "call rdsadmin.dbadm_grant(
    ?,
    'database_name',
    'authorization',
    'grantee')"
```

### Parameters
<a name="db2-sp-dbadm-grant-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*authorization*  
要授予之授權的類型。資料類型為 `varchar`。有效值：`DBADM`、`ACCESSCTRL`、`DATAACCESS`。  
使用逗號分隔多種類型。

*grantee*  
要接收授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

### 使用須知
<a name="db2-sp-dbadm-grant-usage-notes"></a>

接收存取權的角色必須存在。

如需檢查授予資料庫管理員存取權狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-dbadm-grant-examples"></a>

**範例 1：授予資料庫管理員對角色的存取權**

下列範例會授予資料庫管理員對角色 `ROLE_DBA` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB',
    'DBADM',
    'ROLE ROLE_DBA')"
```

**範例 2：將資料庫管理員存取權授予使用者和群組**

下列範例會授予資料庫管理員對 `user1` 和 `group1` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, GROUP group1')"
```

**範例 3：將資料庫管理員存取權授予多個使用者和群組**

下列範例會授予資料庫管理員對 `user1`、`user2`、`group1` 和 `group2` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, user2, GROUP group1, group2')"
```

## rdsadmin.dbadm\$1revoke
<a name="db2-sp-dbadm-revoke"></a>

從角色、使用者或群組撤銷 `DBADM`、`ACCESSCTRL` 或 `DATAACCESS` 授權。

### 語法
<a name="db2-sp-dbadm-revoke-syntax"></a>

```
db2 "call rdsadmin.dbadm_revoke(
    ?,
    'database_name',
    'authorization',
    'grantee')"
```

### Parameters
<a name="db2-sp-dbadm-revoke-parameters"></a>

以下是必要輸出參數：

?  
任務的唯一識別符。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*authorization*  
要撤銷之授權的類型。資料類型為 `varchar`。有效值：`DBADM`、`ACCESSCTRL`、`DATAACCESS`。  
使用逗號分隔多種類型。

*grantee*  
要撤銷授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

### 使用須知
<a name="db2-sp-dbadm-revoke-usage-notes"></a>

如需檢查撤銷資料庫管理員存取權狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-dbadm-revoke-examples"></a>

**範例 1：從角色撤銷資料庫管理員存取權**

下列範例會撤銷資料庫管理員對角色 `ROLE_DBA` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB',
    'DBADM',
    'ROLE ROLE_DBA')"
```

**範例 2：從使用者和群組撤銷資料庫管理員存取權**

下列範例會撤銷資料庫管理員對 `user1` 和 `group1` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, GROUP group1')"
```

**範例 3：從多個使用者和群組撤銷資料庫管理員存取權**

下列範例會撤銷資料庫管理員對 `user1`、`user2`、`group1` 和 `group2` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, user2, GROUP group1, group2')"
```

## rdsadmin.set\$1sid\$1group\$1mapping
<a name="db2-sp-set-sid-group-mapping"></a>

在安全 ID (SID) 和對應的 Active Directory 群組之間建立映射。

### 語法
<a name="db2-sp-set-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.set_sid_group_mapping(
    ?,
    'SID',
    'group_name')"
```

### Parameters
<a name="db2-sp-set-sid-group-mapping-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*SID*  
安全 ID (SID)。資料類型為 `varchar`。

*group\$1name*  
要映射至 SID 的 Active Directory 群組之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-set-sid-group-mapping-usage-notes"></a>

使用此預存程序，透過 Active Directory 群組啟用 Kerberos 身分驗證。如果映射中已存在 `SID` 或 `group_name`，則此預存程序會失敗。

如需如何尋找群組 SID 的相關資訊，請參閱 [步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID](db2-kerberos-setting-up.md#db2-kerberos-setting-up-retrieve-ad-group-sid)。

如需檢查建立映射狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-set-sid-group-mapping-examples"></a>

下列範例會將 SID 映射至名為 `my_group` 的群組。

```
db2 "call rdsadmin.set_sid_group_mapping(
    ?,
    'S-1-5-21-9146495592-531070549-834388463-513',
    'my_group')"
```

## rdsadmin.list\$1sid\$1group\$1mapping
<a name="db2-sp-list-sid-group-mapping"></a>

列出在資料庫執行個體上設定的所有安全 ID (SID) 和 Active Directory 群組映射。

### 語法
<a name="db2-sp-list-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.list_sid_group_mapping()"
```

### 使用須知
<a name="db2-sp-list-sid-group-mapping-usage-notes"></a>

如需檢查列出映射狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## rdsadmin.remove\$1sid\$1group\$1mapping
<a name="db2-sp-remove-sid-group-mapping"></a>

從資料庫執行個體移除安全 ID (SID) 及其對應的 Active Directory 群組映射。

### 語法
<a name="db2-sp-remove-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.remove_sid_group_mapping(
    ?,
    'SID')"
```

### Parameters
<a name="db2-sp-remove-sid-group-mapping-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*SID*  
安全 ID (SID)。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-remove-sid-group-mapping-usage-notes"></a>

如需如何尋找群組 SID 的相關資訊，請參閱 [步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID](db2-kerberos-setting-up.md#db2-kerberos-setting-up-retrieve-ad-group-sid)。

如需檢查移除映射狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-remove-sid-group-mapping-examples"></a>

下列範例會從映射目標群組中移除 SID 映射。

```
db2 "call rdsadmin.remove_sid_group_mapping(
    ?,
    'S-1-5-21-9146495592-531070549-834388463-513')"
```