支援版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

createuser

createuser — 定義新的 PostgreSQL 使用者帳戶

概要

createuser [connection-option...] [option...] [username]

描述

createuser 建立一個新的 PostgreSQL 使用者(或更精確地說,是一個角色)。只有超級使用者和具有 CREATEROLE 權限的使用者才能建立新使用者,因此 createuser 必須由可以以超級使用者或具有 CREATEROLE 權限的使用者身份連線的人員調用。

如果您希望建立具有 SUPERUSERREPLICATIONBYPASSRLS 權限的角色,您必須以超級使用者身份連線,而不僅僅是具有 CREATEROLE 權限。 作為超級使用者意味著能夠繞過資料庫中的所有存取權限檢查,因此不應輕易授予超級使用者存取權。CREATEROLE 也傳達了 非常廣泛的權限

createuser 是對SQL命令 CREATE ROLE 的封裝。透過此工具和其他存取伺服器的方法建立使用者之間沒有實際區別。

選項

createuser 接受以下命令列引數

username

指定要建立的 PostgreSQL 使用者的名稱。此名稱必須與此 PostgreSQL 安裝中的所有現有角色不同。

-a role
--with-admin=role

指定一個現有角色,該角色將自動新增為具有管理員選項的新角色的成員,使其有權授予新角色中的成員資格給其他人。可以透過編寫多個 -a 開關來指定多個現有角色。

-c number
--connection-limit=number

設定新使用者的最大連線數。預設為不設定限制。

-d
--createdb

將允許新使用者建立資料庫。

-D
--no-createdb

將不允許新使用者建立資料庫。這是預設值。

-e
--echo

回顯 createuser 產生並傳送到伺服器的命令。

-E
--encrypted

此選項已過時,但仍被接受以實現向後相容性。

-g role
--member-of=role
--role=role (已棄用)

指定應將新角色自動新增為指定現有角色的成員。可以透過編寫多個 -g 開關來指定多個現有角色。

-i
--inherit

新角色將自動繼承其作為成員的角色的權限。這是預設值。

-I
--no-inherit

新角色不會自動繼承其作為成員的角色的權限。

--interactive

如果命令列上未指定使用者名稱,則提示輸入使用者名稱,並提示輸入命令列上未指定的選項 -d/-D-r/-R-s/-S 中的任一個。(這是 PostgreSQL 9.1 之前的預設行為。)

-l
--login

將允許新使用者登入(也就是說,使用者名稱可用作初始會話使用者識別碼)。這是預設值。

-L
--no-login

將不允許新使用者登入。(沒有登入權限的角色仍然可用於管理資料庫權限。)

-m role
--with-member=role

指定一個現有的角色,該角色將會自動新增為新角色的成員。可以透過撰寫多個 -m 參數來指定多個現有角色。

-P
--pwprompt

如果指定此選項,createuser 會提示輸入新使用者的密碼。如果您不打算使用密碼驗證,則不需要此操作。

-r
--createrole

允許新使用者建立、變更、刪除角色,對角色新增註解,以及變更其他角色的安全性標籤;也就是說,該使用者將擁有 CREATEROLE 權限。 有關此權限所賦予的能力的更多詳細資訊,請參閱角色建立

-R
--no-createrole

不允許新使用者建立新角色。 這是預設值。

-s
--superuser

新使用者將會是超級使用者。

-S
--no-superuser

新使用者將不會是超級使用者。 這是預設值。

-v timestamp
--valid-until=timestamp

設定一個日期和時間,在此之後角色的密碼不再有效。 預設為不設定密碼過期日。

-V
--version

印出 createuser 版本並結束。

--bypassrls

新使用者將會繞過所有資料列層級安全性(RLS)策略。

--no-bypassrls

新使用者將不會繞過資料列層級安全性(RLS)策略。 這是預設值。

--replication

新使用者將會擁有 REPLICATION 權限,有關此權限的更完整說明,請參閱 CREATE ROLE 的文件。

--no-replication

新使用者將不會擁有 REPLICATION 權限,有關此權限的更完整說明,請參閱 CREATE ROLE 的文件。 這是預設值。

-?
--help

顯示有關 createuser 命令列參數的說明,並結束。

createuser 也接受以下用於連線參數的命令列引數

-h host
--host=host

指定伺服器執行的機器的主機名稱。 如果值以斜線開頭,則將其用作 Unix 網域插槽的目錄。

-p port
--port=port

指定伺服器正在監聽連線的 TCP 連接埠或本機 Unix 網域插槽檔案副檔名。

-U username
--username=username

要連線的使用者名稱(不是要建立的使用者名稱)。

-w
--no-password

永遠不要發出密碼提示。 如果伺服器需要密碼驗證,並且無法透過其他方式(例如 .pgpass 檔案)取得密碼,則連線嘗試將會失敗。 在沒有使用者輸入密碼的批次工作和指令碼中,此選項非常有用。

-W
--password

強制 createuser 提示輸入密碼(用於連線到伺服器,而不是新使用者的密碼)。

此選項並非總是必要,因為如果伺服器要求密碼驗證,createuser 會自動提示輸入密碼。 但是,createuser 會浪費一次連線嘗試,以找出伺服器是否需要密碼。 在某些情況下,輸入 -W 以避免額外的連線嘗試是值得的。

環境

PGHOST
PGPORT
PGUSER

預設連線參數

PG_COLOR

指定是否在診斷訊息中使用顏色。 可能的值為 alwaysautonever

與大多數其他 PostgreSQL 實用程式一樣,此實用程式也使用 libpq 支援的環境變數(請參閱 第 32.15 節)。

診斷

如果遇到困難,請參閱 CREATE ROLEpsql,以取得有關潛在問題和錯誤訊息的討論。 資料庫伺服器必須在目標主機上執行。 此外,libpq 前端程式庫使用的任何預設連線設定和環境變數都將適用。

範例

要在預設資料庫伺服器上建立使用者 joe

$ createuser joe

要在預設資料庫伺服器上建立使用者 joe,並提示輸入一些其他屬性

$ createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

要在主機 eden 的 5000 連接埠上使用伺服器建立相同的使用者 joe,並明確指定屬性,並查看底層命令

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

要將使用者 joe 建立為超級使用者,並立即分配密碼

$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

在上面的範例中,輸入新密碼時實際上不會回顯,但是我們顯示了為清楚起見而輸入的內容。 如您所見,密碼在傳送到用戶端之前已加密。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步說明的地方,請使用此表單報告文件問題。