本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 忽略
- 密碼 {'密碼' | '密碼' | '密碼' | 關閉}
-
設定使用者的密碼。
根據預設,使用者可以變更自己擁有的密碼,除非密碼遭到停用。若要停用使用者的密碼,請指定 DISABLE。當使用者的密碼停用時,該密碼會從系統中刪除,使用者只能使用臨時 AWS Identity and Access Management (IAM) 使用者登入資料登入。如需詳細資訊,請參閱使用 IAM 身分驗證來產生資料庫使用者登入資料。只有超級使用者能夠啟用或停用密碼,您無法停用超級使用者的密碼。若要啟用密碼,請執行 ALTER USER 並指定密碼。
您可以將密碼指定為純文字、MD5 雜湊字串或 SHA256 雜湊字串。
注意
使用、或 Amazon Redshift API 啟動新叢集時 AWS Management ConsoleAWS CLI,必須為初始資料庫使用者提供純文字密碼。您之後可以使用 ALTER USER 變更密碼。
若是純文字,密碼必須滿足下列限制條件:
-
長度必須為 8 到 64 個字元。
-
至少須包含一個大寫字母、一個小寫字母和一個數字。
-
它可以使用任何包含 ASCII 碼 33 到 126 的 ASCII 字元,除了 '(單引號)、(單引號)、(雙引號)、/、或/、或/、或/、或/、或/、/、/、/、/、/、/、/、
除了以純文字傳遞 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 — 隨機產生的資料與密碼結合,有助於減少雜湊函數輸出中的模式。
'sha256|Mypassword'
'sha256|digest|256-bit-salt'
在下面的例子中,Amazon Redshift 生成和管理鹽。
CREATE USER admin PASSWORD 'sha256|Mypassword1';
在下列範例中,會提供用來建立摘要的有效 SHA-256 摘要和 256 位元鹽。
要指定密碼並使用自己的 salt 對其進行哈希,請按照以下步驟操作:
-
建立 256 位元鹽。您可以通過使用任何十六進制字符串生成器生成 64 個字符長的字符串來獲取 salt。在這個例子中,鹽是
c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6
。 使用 FROM_HEX 函數將您的鹽轉換為二進製文件。這是因為 SHA2 函數需要 salt 的二進制表示。請參閱以下陳述式。
SELECT FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6');
使用 CONCAT 函數將您的鹽附加到您的密碼中。在此範例中,密碼為
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 系統資料表和檢視的存取層級。
若指定 RESTRICTED,使用者只能看見該使用者在使用者可查看的系統資料表和檢視中所產生的資料列。預設值為 RESTRICTED。
若指定 UNRESTRICTED,則使用者可看見使用者可查看的系統資料表和檢視中的所有資料列,包括其他使用者所產生的資料列。UNRESTRICTED 並不會讓一般使用者存取超級使用者可查看的資料表。只有超級使用者可看見超級使用者可查看的資料表。
注意
若使用者擁有不受限制的系統資料表存取權限,該使用者就能查看其他使用者產生的資料。例如,STL_QUERY 和 STL_QUERYTEXT 包含 INSERT、UPDATE 和 DELETE 陳述式的全文,當中可能包含使用者產生的敏感資料。
所有使用者都可以看到 SVV_TRACTIONS 中的所有資料列。
如需詳細資訊,請參閱系統資料表和檢視中資料的可見性。
- IN GROUP groupname
-
指定使用者所屬現有群組的名稱。可列出多個群組名稱。
- VALID UNTIL abstime
-
「有效期限」選項會設定使用者密碼不再有效的絕對時間。根據預設,密碼沒有時間限制。
- CONNECTION LIMIT { limit | UNLIMITED }
-
允許使用者同時開啟的資料庫連線數目上限。超級使用者不會強制執行此限制。使用 UNLIMITED 關鍵字可允許同時連線的最大數目。另外也可能限制每個資料庫的連線數目。如需詳細資訊,請參閱CREATE DATABASE。預設值為 UNLIMITED。若要檢視目前連線數目,請查詢 STV_SESSIONS 系統畫面。
注意
如果同時套用使用者和資料庫連線數目限制,則必須在使用者嘗試連線時,在不超過這兩項限制的情況下提供一個未使用的連線位置。
- 會話逾時限制
-
工作階段保持非作用中或閒置的時間上限 (以秒為單位)。範圍是 60 秒 (一分鐘) 到 17 萬 8 千秒 (20 天)。如果未為使用者設定工作階段逾時,則會套用叢集設定。如需詳細資訊,請參閱 Amazon Redshift 管理指南中的 Amazon Redshift 中的配額和限制。
當您設定工作階段逾時時間時,它只會套用至新的工作階段。
若要檢視有關作用中使用者工作階段的資訊,包括開始時間、使用者名稱和工作階段逾時,請查詢STV_SESSIONS系統檢視。若要檢視有關使用者工作階段歷史記錄的資訊,請查詢STL_SESSIONS檢 若要擷取有關資料庫使用者的資訊 (包括工作階段逾時值),請查詢檢視表SVL_USER_INFO。
- 外部識別碼外部識別碼
-
與身分識別提供者相關聯的使用者識別碼。使用者必須停用密碼。如需詳細資訊,請參閱 Amazon Redshift 的原生身分識別提供者 (IdP) 聯盟。
使用須知
根據預設,所有使用者對 PUBLIC 結構描述都具有 CREATE 和 USAGE 權限。若要不允許使用者在資料庫的 PUBLIC 結構描述內建立物件,請使用 REVOKE 命令來移除該權限。
使用 IAM 身分驗證建立資料庫使用者登入資料時,您可能會希望建立只能使用臨時登入資料登入的超級使用者。您無法停用超級使用者的密碼,但是可以使用隨機產生的 MD5 雜湊字串建立未知的密碼。
create user iam_superuser password 'md5A1234567890123456780123456789012' createuser;
無論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;