

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# CREATE USER
<a name="r_CREATE_USER"></a>

建立新的資料庫使用者。視權限和角色而定，資料庫使用者可以擷取資料、執行命令，以及在資料庫中執行其他動作。您必須是資料庫超級使用者才能執行此命令。

## 所需權限
<a name="r_CREATE_USER-privileges"></a>

以下是 CREATE USER 所需的權限：
+ 超級使用者
+ 具有 CREATE USER 權限的使用者

## 語法
<a name="r_CREATE_USER-synopsis"></a>

```
CREATE USER name [ WITH ]
PASSWORD { 'password' | 'md5hash' | 'sha256hash' | DISABLE }
[ option [ ... ] ]

where option can be:

CREATEDB | NOCREATEDB
| CREATEUSER | NOCREATEUSER
| SYSLOG ACCESS { RESTRICTED | UNRESTRICTED }
| IN GROUP groupname [, ... ]
| VALID UNTIL 'abstime'
| CONNECTION LIMIT { limit | UNLIMITED }
| SESSION TIMEOUT limit
| EXTERNALID external_id
```

## Parameters
<a name="r_CREATE_USER-parameters"></a>

 *name*   
欲建立的使用者名稱。使用者名稱不可以是 `PUBLIC`。如需有效名稱的相關資訊，請參閱 [名稱與識別碼](r_names.md)。

WITH  
選用的關鍵字。WITH 會被 Amazon Redshift 忽略

PASSWORD { '*password*' \| '*md5hash*' \| '*sha256hash*' \| DISABLE }  
設定使用者的密碼。  
根據預設，使用者可以變更自己擁有的密碼，除非密碼遭到停用。若要停用使用者的密碼，請指定 DISABLE。當使用者的密碼停用時，密碼會從系統中刪除，使用者只能使用暫時 AWS Identity and Access Management (IAM) 使用者登入資料登入。如需詳細資訊，請參閱[使用 IAM 身分驗證來產生資料庫使用者登入資料](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html)。只有超級使用者能夠啟用或停用密碼，您無法停用超級使用者的密碼。若要啟用密碼，請執行 [ALTER USER](r_ALTER_USER.md) 並指定密碼。  
您可以以純文字、MD5 雜湊字串或 SHA256 雜湊字串形式指定密碼。  
 當您使用 AWS 管理主控台 AWS CLI或 Amazon Redshift API 啟動新叢集時，您必須為初始資料庫使用者提供純文字密碼。您之後可以使用 [ALTER USER](r_ALTER_USER.md) 變更密碼。
若是純文字，密碼必須滿足下列限制條件：  
+ 長度必須為 8 到 64 個字元。
+ 至少須包含一個大寫字母、一個小寫字母和一個數字。
+ 它可以使用任何 ASCII 字元 (ASCII 碼 33–126)，但 ' (單引號)、" (雙引號)、\\、/ 或 @ 除外。
除了以純文字傳遞 CREATE USER 密碼參數之外，更安全的替代方法是指定包括密碼和使用者名稱的 MD5 雜湊字串。  
當您指定 MD5 雜湊字串時，CREATE USER 命令會檢查有效的 MD5 雜湊字串，但不會驗證字串的密碼部分。在此情況下可能會建立密碼，例如空字串，但此密碼無法用來登入資料庫。
若要指定 MD5 密碼，請依照下列步驟執行：  

1. 串連密碼和使用者名稱。

   例如，密碼 `ez` 和使用者 `user1` 的串連字串為 `ezuser1`。

1. 將串連字串轉換成 32 個字元的 MD5 雜湊字串。您可以使用任何 MD5 公用程式來建立雜湊字串。以下範例會使用 Amazon Redshift [MD5 函數](r_MD5.md) 和串連運算子 ( \|\| ) 傳回 32 個字元的 MD5 雜湊字串。

   ```
   select md5('ez' || 'user1');
                           
   md5
   --------------------------------
   153c434b4b77c89e6b94f12c5393af5b
   ```

1. 在 MD5 雜湊字串前方串連 '`md5`' 並提供串連字串做為 *md5hash* 引數。

   ```
   create user user1 password 'md5153c434b4b77c89e6b94f12c5393af5b';
   ```

1. 使用登入憑證登入資料庫。

   例如，以 `user1` 的身分和密碼 `ez` 登入。
另一個安全的替代方法是指定密碼字串的 SHA-256 雜湊，或是您可以提供自己的有效 SHA-256 摘要和用於建立摘要的 256 位元 Salt。  
+ 摘要 — 雜湊函數的輸出。
+ Salt — 隨機產生且可與密碼結合的資料，有助於減少雜湊函數輸出中的模式。

```
'sha256|Mypassword'
```

```
'sha256|digest|256-bit-salt'
```
在下列範例中，Amazon Redshift 會產生並管理 Salt。  

```
CREATE USER admin PASSWORD 'sha256|Mypassword1';
```
下列範例會提供有效 SHA-256 摘要和用來建立摘要的 256 位元 Salt。  
要指定密碼並使用自己的 Salt 對其進行雜湊，請按照以下步驟操作：  

1. 建立 256 位元 Salt。您可以透過使用任何十六進位字串產生器產生 64 個字元長的字串來取得 Salt。在此範例中，Salt 是 `c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6`。

1.  使用 FROM\_HEX 函數將您的 Salt 轉換為二進位。這是因為 SHA2 函數需要 Salt 的二進位表示法。請參閱以下陳述式。

   ```
   SELECT FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6');
   ```

1.  使用 CONCAT 函數將您的 Salt 附加到您的密碼中。在此範例中，密碼為 `Mypassword1`。請參閱以下陳述式。

   ```
   SELECT CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6'));
   ```

1. 使用 SHA2 函數從您的密碼和 salt 組合中建立摘要。請參閱以下陳述式。

   ```
   SELECT SHA2(CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6')), 0);
   ```

1.  使用先前步驟中的摘要和 Salt，建立使用者。請參閱以下陳述式。

   ```
   CREATE USER admin PASSWORD 'sha256|821708135fcc42eb3afda85286dee0ed15c2c461d000291609f77eb113073ec2|c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6';
   ```

1. 使用登入憑證登入資料庫。

    例如，以 `admin` 的身分和密碼 `Mypassword1` 登入。
如果您在未指定雜湊函數的情況下，以純文字格式設定密碼，則會使用使用者名稱作為 Salt 來產生 MD5 摘要。

CREATEDB \| NOCREATEDB   
CREATEDB 選項可讓新使用者建立資料庫。預設值是 NOCREATEDB。

CREATEUSER \| NOCREATEUSER   
CREATEUSER 選項可建立具有所有資料庫權限的超級使用者，包括 CREATE USER。預設值為 NOCREATEUSER。如需詳細資訊，請參閱[超級使用者](r_superusers.md)。

SYSLOG ACCESS { RESTRICTED \| UNRESTRICTED }  <a name="create-user-syslog-access"></a>
此子句會指定使用者對 Amazon Redshift 系統資料表和檢視的存取層級。  
具有 SYSLOG ACCESS RESTRICTED 許可的一般使用者，只能看見該使用者在使用者可見的系統資料表和檢視中產生的列。預設值為 RESTRICTED。  
具有 SYSLOG ACCESS UNRESTRICTED 許可的一般使用者，可以看見使用者可見的系統資料表和檢視中的所有列，包括其他使用者產生的列。UNRESTRICTED 並不會讓一般使用者存取超級使用者可查看的資料表。只有超級使用者可看見超級使用者可查看的資料表。  
若使用者擁有不受限制的系統資料表存取權限，該使用者就能查看其他使用者產生的資料。例如，STL\_QUERY 和 STL\_QUERYTEXT 包含 INSERT、UPDATE 和 DELETE 陳述式的全文，當中可能包含使用者產生的敏感資料。
所有使用者皆可看到 SVV\_TRANSACTIONS 中的所有資料列。  
如需詳細資訊，請參閱[系統資料表和檢視中資料的可見性](cm_chap_system-tables.md#c_visibility-of-data)。

IN GROUP *groupname*   
指定使用者所屬現有群組的名稱。可列出多個群組名稱。

VALID UNTIL *abstime*   
VALID UNTIL 選項會設定絕對時間，在這段時間過後使用者密碼就會失效。根據預設，密碼沒有時間限制。

CONNECTION LIMIT { *limit* \| UNLIMITED }   
允許使用者同時開啟的資料庫連線數目上限。超級使用者不受此限制規範。使用 UNLIMITED 關鍵字可允許同時連線的最大數目。另外也可能限制每個資料庫的連線數目。如需詳細資訊，請參閱[CREATE DATABASE](r_CREATE_DATABASE.md)。預設值為 UNLIMITED。若要檢視目前連線數目，請查詢 [STV\_SESSIONS](r_STV_SESSIONS.md) 系統畫面。  
如果同時套用使用者和資料庫連線數目限制，則必須在使用者嘗試連線時，在不超過這兩項限制的情況下提供一個未使用的連線位置。

SESSION TIMEOUT *limit*  
工作階段保持非作用中或閒置的時間上限 (以秒為單位)。範圍是 60 秒 (一分鐘) 到 1,728,000 秒 (20 天)。如果未為使用者設定工作階段逾時，則會套用叢集設定。如需詳細資訊，請參閱《Amazon Redshift 管理指南》**中的 [Amazon Redshift 中的配額和限制](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html)。  
當您設定工作階段逾時時，只會套用至新的工作階段。  
若要檢視有關作用中使用者工作階段的資訊 (包括開始時間、使用者名稱和工作階段逾時)，請查詢 [STV\_SESSIONS](r_STV_SESSIONS.md) 系統檢視。若要檢視有關使用者工作階段歷史記錄的資訊，請查詢 [STL\_SESSIONS](r_STL_SESSIONS.md) 檢視。若要擷取有關資料庫使用者的資訊 (包括工作階段逾時值)，請查詢 [SVL\_USER\_INFO](r_SVL_USER_INFO.md) 檢視。

EXTERNALID *external\_id*  
與身分提供者相關聯的使用者識別碼。使用者必須停用密碼。如需詳細資訊，請參閱 [Amazon Redshift 的原生身分提供者 (IdP) 聯合合](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-native-idp.html)。

### 使用須知
<a name="create_user-usage-notes"></a>

根據預設，所有使用者對 PUBLIC 結構描述都具有 CREATE 和 USAGE 權限。若要不允許使用者在資料庫的 PUBLIC 結構描述內建立物件，請使用 REVOKE 命令來移除該權限。

使用 IAM 身分驗證建立資料庫使用者登入資料時，您可能會希望建立只能使用臨時登入資料登入的超級使用者。您無法停用超級使用者的密碼，但是可以使用隨機產生的 MD5 雜湊字串建立未知的密碼。

```
create user iam_superuser password 'md5A1234567890123456780123456789012' createuser;
```

無論 `enable_case_sensitive_identifier` 組態選項的設定為何，都會保留以雙引號括住的 *username* 大小寫。如需詳細資訊，請參閱[enable\_case\_sensitive\_identifier](r_enable_case_sensitive_identifier.md)。

## 範例
<a name="r_CREATE_USER-examples"></a>

以下命令會建立名為 dbuser 的使用者與密碼 "abcD1234"、建立資料庫的權限，以及 30 個連線限制。

```
create user dbuser with password 'abcD1234' createdb connection limit 30;
```

 查詢 PG\_USER\_INFO 目錄資料表以檢視有關資料庫使用者的詳細資訊。

```
select * from pg_user_info;
         
 usename   | usesysid | usecreatedb | usesuper | usecatupd | passwd   | valuntil | useconfig | useconnlimit
-----------+----------+-------------+----------+-----------+----------+----------+-----------+-------------
 rdsdb     |        1 | true        | true     | true      | ******** | infinity |           |
 adminuser |      100 | true        | true     | false     | ******** |          |           | UNLIMITED
 dbuser    |      102 | true        | false    | false     | ******** |          |           | 30
```

在以下範例中，帳戶密碼的有效期限至 2017 年 6 月 10 日。

```
create user dbuser with password 'abcD1234' valid until '2017-06-10';
```

 以下範例會建立使用者，以及包含特殊字元且區分大小寫的密碼。

```
create user newman with password '@AbC4321!';
```

 若要在 MD5 密碼中使用反斜線 ('\\')，請使用來源字串中的反斜線逸出反斜線。以下範例會建立名為 `slashpass` 的使用者，並使用單一反斜線 ('`\`') 做為密碼。

```
select md5('\\'||'slashpass');
         
md5
--------------------------------
0c983d1a624280812631c5389e60d48c
```

使用 md5 密碼建立使用者。

```
create user slashpass password 'md50c983d1a624280812631c5389e60d48c';
```

下列範例會建立將閒置工作階段逾時設定為 120 秒的使用者 `dbuser`。

```
CREATE USER dbuser password 'abcD1234' SESSION TIMEOUT 120;
```

以下範例會建立名為 `bob` 的使用者。命名空間為 `myco_aad`。這只是範例。若要成功執行命令，您必須擁有已註冊的身分提供者。如需詳細資訊，請參閱 [Amazon Redshift 的原生身分提供者 (IdP) 聯合合](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-native-idp.html)。

```
CREATE USER myco_aad:bob EXTERNALID "ABC123" PASSWORD DISABLE;
```