?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
createuser [connection-option...] [option...] [username]
createuser創(chuàng)建一個新的PostgreSQL 用戶(更準確地說是一個角色)。 只有超級用戶和有CREATEROLE權(quán)限的用戶可以創(chuàng)建新的用戶。 因此,createuser必須由超級用戶或者是有CREATEROLE 權(quán)限的用戶執(zhí)行。
如果你希望創(chuàng)建一個新的超級用戶,你必須以超級用戶身份連接, 而不僅僅是一個有CREATEROLE權(quán)限的用戶。 成為超級用戶就意味著將在數(shù)據(jù)庫里繞開所有訪問權(quán)限檢查,因此,不要輕易賦予超級用戶權(quán)限。
createuser是SQL命令CREATE ROLE的封裝。 因此,這兩種方法創(chuàng)建的新用戶沒什么差別。
createuser接受下列命令行參數(shù):
要創(chuàng)建的PostgreSQL角色名稱。 該名稱必須在該PostgreSQL安裝的所有角色中唯一。
為新用戶設(shè)置最大數(shù)目的連接數(shù)。缺省為無限制。
允許該新建用戶創(chuàng)建數(shù)據(jù)庫
禁止該新建用戶創(chuàng)建數(shù)據(jù)庫。
回顯createuser生成并發(fā)送到服務(wù)器的命令。
對用戶存儲在數(shù)據(jù)庫里的口令進行加密。如果沒有聲明,使用缺省的口令行為。
新角色將自動繼承其所屬角色組的權(quán)限。這個是缺省。
新角色將不會自動繼承他所屬角色組的權(quán)限。
新用戶將允許登錄,也就是說,用戶名可以用作初始會話的用戶標識。這個是缺省。
新用戶將不允許登錄。一個不能登錄的角色仍然是很有用的,比如用于權(quán)限管理。
不要加密用戶存儲在數(shù)據(jù)庫里的口令。如果沒有聲明,使用缺省的口令行為。
如果給出,createuser將發(fā)出一個提示符要求輸入新用戶的口令。 如果你不打算用口令認證,那么這是不必要的。
新用戶將被允許創(chuàng)建新角色,也就是說,這個用戶將有CREATEROLE權(quán)限。
新用戶將不允許創(chuàng)建新角色。
表明新用戶將是超級用戶
新用戶將不是超級用戶。
輸出createuser版本并退出。
顯示關(guān)于createuser命令行參數(shù)的幫助并退出。
如果沒有在命令行上聲明必須的信息,程序會提示你輸入。
createuser還接受下列命令行參數(shù)作為連接參數(shù):
指定運行服務(wù)器的主機名。如果數(shù)值以斜杠開頭,則被用作到Unix域套接字的路徑。
指定服務(wù)器正在偵聽的TCP端口或本地Unix域套接字文件的擴展(描述符)
連接的用戶名(不是要創(chuàng)建的用戶名)
不發(fā)布密碼提示。若服務(wù)器請求密碼認證并且一個密碼不能通過像 .pgpass文件這樣的其他方式來獲得,連接 嘗試將失敗。該選項在批量作業(yè)和腳本中是有效的,在目前沒有用 戶輸入密碼的地方。
強制createuser在連接到數(shù)據(jù)庫之前提示密碼。
該選項從不是最重要的,盡管若服務(wù)器請求密碼認證 createuser會自動提示密碼。然而, createuser將浪費一個連接嘗試來發(fā)現(xiàn)服務(wù)器想 要一個密碼。在一些情況下,輸入-W來避免額外的連接嘗試。
缺省連接參數(shù)
這個實用程序,跟大多數(shù)其他PostgreSQL實用程序一樣,也試用 libpq支持的環(huán)境變量。(參閱Section 31.13)。
如果出現(xiàn)問題,將會顯示后端錯誤信息。 參閱CREATE ROLE 和psql獲取可用信息的描述。數(shù)據(jù)庫服務(wù)器必須在目標主機上運行。 同樣,任何libpq 前端庫使用的缺省連接設(shè)置和環(huán)境變量都將適用。
在缺省數(shù)據(jù)庫服務(wù)器上創(chuàng)建一個joe用戶:
$ createuser 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上的服務(wù)器里創(chuàng)建joe用戶, 端口是5000,避免提示并且回顯執(zhí)行的命令:
$ createuser -h eden -p 5000 -S -D -R -e joe CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
把用戶joe創(chuàng)建為超級用戶,并且立即賦予口令:
$ 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;
在上面例子中,雖然新口令在輸入的時候?qū)嶋H上并不會實際顯示出來, 但是我們還是明確的把它顯示出來了。 正如你所看到的,密碼在發(fā)送給客戶之前會加密。若果選項--unencrypted 被使用,密碼will會出現(xiàn)在回送命令中(并且也可能在服務(wù)器日志或其他地方), 所以你在那種情況下您不想使用-e,倘若任何其他人都能看到你的屏幕。