ALTER USER

Name

ALTER USER -- 改變資料庫用戶帳號

Synopsis

ALTER USER name [ [ WITH ] option [ ... ] ]

這裡 option 可以是:

    CREATEDB | NOCREATEDB
    | CREATEUSER | NOCREATEUSER
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'abstime'

ALTER USER name RENAME TO newname

ALTER USER name SET parameter { TO | = } { value | DEFAULT }
ALTER USER name RESET parameter
  

描述

ALTER USER 修改 PostgreSQL 用戶帳號的屬性。 沒有在該命令中出現的屬性保持原值。

這條命令模式中的第一個變種修改一些按用戶設置的權限和認證設置。 (見下文獲取細節。)資料庫超級用戶可以改變任何用戶的任何設置。 普通用戶只能修改它們自己的指令。

第二個變種改變用戶的名字。只有資料庫超級用戶才能重新命名用戶帳戶。 目前會話用戶不能重命名。(如果想這麼幹,先用另外一個用戶賬號連接。) 因為 MD5 加密的指令使用用戶名作為加密鹽粒,所以,給一個用戶名重命名則清空他們的 MD5 指令。

第三和第四個變種修改用戶會話的特定配置變量的預設值。 當該用戶隨後啟動一個新的會話時,聲明的數值將成為會話的預設,覆蓋 任何出現在 postgresql.conf 裡,或者從 postmaster 命令行接收到的設置。 普通用戶可以修改它們自己的會話預設。超級用戶可以修改任何用戶的預設。 有些變量不能用這個方法設置,或者是只能由超級用戶設置。

參數

name

想進行屬性更改的用戶名字。

password

此帳號所使用的新指令。

CREATEDB
NOCREATEDB

這個子句定義該用戶建立資料庫的能力。 如果聲明了CREATEDB,該用戶可以建立她自己的資料庫。 用NOCREATEDB將剝奪一個用戶建立資料庫的能力。 (如果該用戶還是一個超級用戶,那麼這個設置沒有實際的效果。)

CREATEUSER
NOCREATEUSER

這個子句決定一個用戶能否建立新用戶。 CREATEUSER 同樣還令該用戶成為超級用戶,可以超越所有訪問限制。

password

用於這個帳號的新指令。

ENCRYPTED
UNENCRYPTED

這些關鍵字控制指令是否以加密形式存在 pg_shadow 裡。 (參閱 CREATE USER 獲取這個選項的更多訊息。)

abstime

該用戶帳號指令的過期的日期(和可選的時間)。 要設置一個指令從不過期,可以用'infinity'

newname

用戶的新名字。

parameter
value

把該用戶特定的配置變量的會話預設設置為給定的數值。 如果 valueDEFAULT 或者使用了等效的 RESET,那麼刪除用戶相關的變量, 並且該用戶將在新會話中繼承預設設置。使用 RESET ALL 清除所有用戶相關設置。

參閱 SETSection 16.4 獲取有關可用變量和數值的更多訊息。

注意

使用 CREATE USER 建立新用戶和 DROP USER 刪除用戶。

ALTER USER 無法改變一個用戶的組的成員性。 用 ALTER GROUP 實現這個目的。

VALID UNTIL 只對一個指令定義一個失效時間, 而不是給一個用戶定義失效時間。 特別要注意的是,如果使用非指令為基礎的認證方式登陸,那麼失效時間被不會強制。

我們還可能把一個會話預設和某個資料庫綁定起來,而不是和某個用戶綁定。 參閱 ALTER DATABASE。 如果用戶設置和資料庫範圍內的設置衝突,那麼使用用戶設置。

例子

更改一用戶指令:

ALTER USER davide WITH PASSWORD 'hu8jmn3';

更改一用戶指令的有效期:

ALTER USER manuel VALID UNTIL 'Jan 31 2030';

更改一用戶指令有效期, 聲明其指令應該在用比UTC早一小時的時區記時的 2005 年 5 月 4 日正午失效

ALTER USER chris VALID UNTIL 'May 4 12:00:00 2005 +1';

令指令永遠有效:

ALTER USER fred VALID UNTIL 'infinity';

賦予一用戶建立新用戶和新資料庫的權限:

ALTER USER miriam CREATEUSER CREATEDB;

相容性

ALTER USER 語句是 PostgreSQL 擴展。SQL 標準將用戶的定義交給實現完成。

又見

CREATE USER, DROP USER, SET