本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CREATE USER
建立新的資料庫使用者。視權限和角色而定,資料庫使用者可以擷取資料、執行命令,以及在資料庫中執行其他動作。您必須是資料庫超級使用者才能執行此命令。
所需權限
以下是 CREATE USER 所需的權限:
-
超級使用者
-
具有 CREATE USER 權限的使用者
語法
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
參數
- name
-
欲建立的使用者名稱。使用者名稱不可以是
PUBLIC
。如需有效名稱的相關資訊,請參閱 名稱與識別碼。 - WITH
-
選用的關鍵字。WITH 會被 Amazon Redshift 忽略
- PASSWORD { 'password' | 'md5hash' | 'sha256hash' | DISABLE }
-
設定使用者的密碼。
根據預設,使用者可以變更自己擁有的密碼,除非密碼遭到停用。若要停用使用者的密碼,請指定 DISABLE。當使用者的密碼停用時,密碼會從系統中刪除,使用者只能使用臨時 AWS Identity and Access Management (IAM) 使用者登入資料登入。如需詳細資訊,請參閱使用 IAM 身分驗證來產生資料庫使用者登入資料。只有超級使用者能夠啟用或停用密碼,您無法停用超級使用者的密碼。若要啟用密碼,請執行 ALTER USER 並指定密碼。
您可以以純文字、MD5 雜湊字串或 SHA256 雜湊字串形式指定密碼。
注意
當您使用 AWS Management Console AWS CLI或 Amazon Redshift API 啟動新的叢集時,您必須為初始資料庫使用者提供純文字密碼。您之後可以使用 ALTER USER 變更密碼。
若是純文字,密碼必須滿足下列限制條件:
-
長度必須為 8 到 64 個字元。
-
至少須包含一個大寫字母、一個小寫字母和一個數字。
-
它可以使用任何 ASCII 字元 (ASCII 碼 33–126),但 ' (單引號)、" (雙引號)、\、/ 或 @ 除外。
除了以純文字傳遞 CREATE USER 密碼參數之外,更安全的替代方法是指定包括密碼和使用者名稱的 MD5 雜湊字串。
注意
當您指定 MD5 雜湊字串時,CREATE USER 命令會檢查有效的 MD5 雜湊字串,但不會驗證字串的密碼部分。在此情況下可能會建立密碼,例如空字串,但此密碼無法用來登入資料庫。
若要指定 MD5 密碼,請依照下列步驟執行:
-
串連密碼和使用者名稱。
例如,密碼
ez
和使用者user1
的串連字串為ezuser1
。 -
將串連字串轉換成 32 個字元的 MD5 雜湊字串。您可以使用任何 MD5 公用程式來建立雜湊字串。以下範例會使用 Amazon Redshift MD5 函數 和串連運算子 ( || ) 傳回 32 個字元的 MD5 雜湊字串。
select md5('ez' || 'user1');
md5 -------------------------------- 153c434b4b77c89e6b94f12c5393af5b
-
在 MD5 雜湊字串前方串連 '
md5
' 並提供串連字串做為 md5hash 引數。create user user1 password 'md5153c434b4b77c89e6b94f12c5393af5b';
-
使用登入憑證登入資料庫。
例如,以
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 對其進行雜湊,請按照以下步驟操作:
-
建立 256 位元 Salt。您可以透過使用任何十六進位字串產生器產生 64 個字元長的字串來取得 Salt。在此範例中,Salt 是
c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6
。 -
使用 FROM_HEX 函數將您的 Salt 轉換為二進位。這是因為 SHA2 函數需要 Salt 的二進位表示法。請參閱以下陳述式。
SELECT FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6');
-
使用 CONCAT 函數將您的 Salt 附加到您的密碼中。在此範例中,密碼為
Mypassword1
。請參閱以下陳述式。SELECT CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6'));
-
使用 SHA2 函數從您的密碼和 salt 組合中建立摘要。請參閱以下陳述式。
SELECT SHA2(CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6')), 0);
-
使用先前步驟中的摘要和 Salt,建立使用者。請參閱以下陳述式。
CREATE USER admin PASSWORD 'sha256|821708135fcc42eb3afda85286dee0ed15c2c461d000291609f77eb113073ec2|c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6';
-
使用登入憑證登入資料庫。
例如,以
admin
的身分和密碼Mypassword1
登入。
如果您在未指定雜湊函數的情況下,以純文字格式設定密碼,則會使用使用者名稱作為 Salt 來產生 MD5 摘要。
-
- CREATEDB | NOCREATEDB
-
CREATEDB 選項可讓新使用者建立資料庫。預設值是 NOCREATEDB。
- CREATEUSER | NOCREATEUSER
-
CREATEUSER 選項可建立具有所有資料庫權限的超級使用者,包括 CREATE USER。預設值為 NOCREATEUSER。如需詳細資訊,請參閱superuser。
- SYSLOG ACCESS { RESTRICTED | UNRESTRICTED }
-
此子句會指定使用者對 Amazon Redshift 系統資料表和檢視的存取層級。
具有 SYSLOG ACCESS RESTRICTED 許可的普通使用者只能查看使用者在使用者可見系統資料表和檢視中產生的資料列。預設值為 RESTRICTED。
具有 SYSLOG ACCESS UNRESTRICTED 許可的普通使用者可以在使用者可見的系統資料表和檢視中查看所有資料列,包括其他使用者產生的資料列。UNRESTRICTED 並不會讓一般使用者存取超級使用者可查看的資料表。只有超級使用者可看見超級使用者可查看的資料表。
注意
若使用者擁有不受限制的系統資料表存取權限,該使用者就能查看其他使用者產生的資料。例如,STL_QUERY 和 STL_QUERYTEXT 包含 INSERT、UPDATE 和 DELETE 陳述式的全文,當中可能包含使用者產生的敏感資料。
所有使用者皆可看到 SVV_TRANSACTIONS 中的所有資料列。
如需詳細資訊,請參閱系統資料表和檢視中資料的可見性。
- IN GROUP groupname
-
指定使用者所屬現有群組的名稱。可列出多個群組名稱。
- VALID UNTIL abstime
-
VALID UNTIL 選項會設定絕對時間,在這段時間過後使用者密碼就會失效。根據預設,密碼沒有時間限制。
- CONNECTION LIMIT { limit | UNLIMITED }
-
允許使用者同時開啟的資料庫連線數目上限。超級使用者不受此限制規範。使用 UNLIMITED 關鍵字可允許同時連線的最大數目。另外也可能限制每個資料庫的連線數目。如需詳細資訊,請參閱CREATE DATABASE。預設值為 UNLIMITED。若要檢視目前連線數目,請查詢 STV_SESSIONS 系統畫面。
注意
如果同時套用使用者和資料庫連線數目限制,則必須在使用者嘗試連線時,在不超過這兩項限制的情況下提供一個未使用的連線位置。
- SESSION TIMEOUT limit
-
工作階段保持非作用中或閒置的時間上限 (以秒為單位)。範圍是 60 秒 (一分鐘) 到 1,728,000 秒 (20 天)。如果未為使用者設定工作階段逾時,則會套用叢集設定。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift 中的配額和限制。
當您設定工作階段逾時時,只會套用至新的工作階段。
若要檢視有關作用中使用者工作階段的資訊 (包括開始時間、使用者名稱和工作階段逾時),請查詢 STV_SESSIONS 系統檢視。若要檢視有關使用者工作階段歷史記錄的資訊,請查詢 STL_SESSIONS 檢視。若要擷取有關資料庫使用者的資訊 (包括工作階段逾時值),請查詢 SVL_USER_INFO 檢視。
- EXTERNALID external_id
-
與身分提供者相關聯的使用者識別碼。使用者必須停用密碼。如需詳細資訊,請參閱 Amazon Redshift 的原生身分提供者 (IdP) 聯合合。
使用須知
根據預設,所有使用者對 PUBLIC 結構描述都具有 CREATE 和 USAGE 權限。若要不允許使用者在資料庫的 PUBLIC 結構描述內建立物件,請使用 REVOKE 命令來移除該權限。
使用 IAM 身分驗證建立資料庫使用者登入資料時,您可能會希望建立只能使用臨時登入資料登入的超級使用者。您無法停用超級使用者的密碼,但是可以使用隨機產生的 MD5 雜湊字串建立未知的密碼。
create user iam_superuser password 'md5A1234567890123456780123456789012' createuser;
無論 enable_case_sensitive_identifier
組態選項的設定為何,都會保留以雙引號括住的 username 大小寫。如需詳細資訊,請參閱enable_case_sensitive_identifier。
範例
以下命令會建立名為 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) 聯合合。
CREATE USER myco_aad:bob EXTERNALID "ABC123" PASSWORD DISABLE;