CREATE USER

Name

CREATE USER -- 建立一個新的資料庫用戶帳戶

Synopsis

CREATE USER name [ [ WITH ] option [ ... ] ]

這裡 option 可以是︰

      SYSID uid
    | CREATEDB | NOCREATEDB
    | CREATEUSER | NOCREATEUSER
    | IN GROUP groupname [, ...]
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'abstime'

描述

CREATE USER 向一個 PostgreSQL 資料庫集群增加一個新用戶。 參考 Chapter 17Chapter 19 獲取關於管理用戶和認證的訊息。 要執行這條命令,您必須是一個資料庫超級用戶。

參數

name

新用戶名

uid

SYSID 子句可以用於選擇新用戶的 PostgreSQL 用戶標識。 通常這是不必要的,但是如果您想恢復一個孤兒對象的所有者,也許這個很有用。

如果沒有聲明這個,預設使用已分配的最高用戶標識加一(最小是 100)。

CREATEDB
NOCREATEDB

這個子句定義用戶的建立資料庫權限。 如果聲明了CREATEDB, 被定義的用戶將允許建立其自己的資料庫。 而使用NOCREATEDB將否決該用戶的建立資料庫的能力。 如果沒有聲明,預設是NOCREATEDB

CREATEUSER
NOCREATEUSER

該子句決定一個用戶是否能建立一個新的用戶。 CREATEUSER 將把此用戶變成資料庫超級用戶,可以跨越所有訪問限制。省略這個參數將置用戶的這個屬性為 NOCREATEUSER

groupname

一個組名稱,把這個用戶設為該組成員。 您可以列出多個組名字。

password

設置用戶的指令,如果您不準備使用指令認證, 那麼您可以省略這個選項,但如果您想切換到一個指令認證的伺服器,那麼該用戶將不能連線。 此指令可以稍後再次設置或者修改,使用 ALTER USER

ENCRYPTED
UNENCRYPTED

ENCRYPTED/UNENCRYPTED 控制指令在資料庫中是否以加密形式儲存在系統資料表中。 (如果兩個都沒有設置,那麼預設的特性是由配置參數 password_encryption 決定的。) 如果提供的字串已經是 MD5 加密的格式,那麼就照原樣儲存, 不管聲明的是 ENCRYPTED 還是 UNENCRYPTED (因為系統無法解密制定的加密指令字串)。 這樣就允許在轉儲/恢復的過程中重載加密後的指令。

請注意老的客戶端可能缺少 MD5 認證機制,我們需要這個認證機制處理儲存為密文的指令。

abstime

VALID UNTIL(有效期)子句設置一個絕對時間, 過了該時間後用戶的指令將不再有效。 如果省略這個子句,登陸將總是有效的。

注意

使用 ALTER USER 修改用戶的指令和權限, DROP USER 刪除一個用戶。 使用 ALTER GROUP 從組中增加或刪除用戶。

PostgreSQL 裡有一個程序 createuserCREATE USER 有相同的功能(實際上,它調用這條命令), 但是可以在命令行上執行。

例子

建立一個沒有指令的用戶:

CREATE USER jonathan

建立一個有指令的用戶:

CREATE USER davide WITH PASSWORD 'jw8s0F4'

建立一個有指令的用戶,其帳號在 2004 年底失效。 注意當 2005 年走過一秒後,該帳號將不再有效:

CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';

建立一個擁有建立資料庫權限的用戶:

CREATE USER manuel WITH PASSWORD 'jw8s0F4' CREATEDB

相容性

CREATE USER 語句是 PostgreSQL 擴展。 SQL 標準把用戶的定義交給具體實現處理。

VALID UNTIL 子句只是為一個指令定義一個失效時間, 而不是給用戶帳號定義這個時間。特別要注意的是,如果以非指令認證的方式登錄, 那麼,失效時間不是強制執行的。

又見

ALTER USER, DROP USER, createuser