CREATE USER

Name

CREATE USER -- 創建一個新的數據庫用戶帳戶

Synopsis

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

這裡 option 可以是︰

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

描述

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

參數

name

用戶名

uid

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

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

password

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

ENCRYPTED
UNENCRYPTED

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

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

CREATEDB
NOCREATEDB

這個子句定義用戶的創建數據庫權限。 如果聲明了CREATEDB, 被定義的用戶將允許創建其自己的數據庫。 而使用NOCREATEDB將否決該用戶的創建數據庫的能力。 如果忽略本子句,缺省是NOCREATEDB

CREATEUSER
NOCREATEUSER

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

groupname

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

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 標準把用戶的定義交給具體實現處理。

又見

ALTER USER, DROP USER, createuser