createuser — 定義新的 PostgreSQL 使用者帳戶
createuser
[connection-option
...] [option
...] [username
]
createuser 建立一個新的 PostgreSQL 使用者(或更精確地說,是一個角色)。只有超級使用者和具有 CREATEROLE
權限的使用者才能建立新使用者,因此 createuser 必須由可以以超級使用者或具有 CREATEROLE
權限的使用者身份連線的人員調用。
如果您希望建立具有 SUPERUSER
、REPLICATION
或 BYPASSRLS
權限的角色,您必須以超級使用者身份連線,而不僅僅是具有 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
指定是否在診斷訊息中使用顏色。 可能的值為 always
、auto
和 never
。
與大多數其他 PostgreSQL 實用程式一樣,此實用程式也使用 libpq 支援的環境變數(請參閱 第 32.15 節)。
如果遇到困難,請參閱 CREATE ROLE 和 psql,以取得有關潛在問題和錯誤訊息的討論。 資料庫伺服器必須在目標主機上執行。 此外,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;
在上面的範例中,輸入新密碼時實際上不會回顯,但是我們顯示了為清楚起見而輸入的內容。 如您所見,密碼在傳送到用戶端之前已加密。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步說明的地方,請使用此表單報告文件問題。