ALTER USER

Name

ALTER USER -- 改變數據庫用戶帳號

Synopsis

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

這裡 option 可以是:

    [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | CREATEDB | NOCREATEDB
    | CREATEUSER | NOCREATEUSER
    | 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 帳號的屬性。 沒有在該命令中出現的屬性保持原值。

這條命令模式中的第一個變種修改某些全局用戶權限和認證設置。 (見下文獲取細節。)只有數據庫超級用戶可以用這條命令改變這些權限和使口令失效。普通用戶只能修改它們自己的口令。

第二個變種改變用戶的名字。只有數據庫超級用戶才能重新命名用戶帳戶。 當前會話用戶不能重命名。(如果想這麼幹,先用另外一個用戶賬號連接。)

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

參數

name

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

password

此帳號所使用的新口令。

ENCRYPTED
UNENCRYPTED

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

CREATEDB
NOCREATEDB

這個子句定義該用戶創建數據庫的能力。 如果聲明了CREATEDB,該用戶可以創建她自己的數據庫。 用NOCREATEDB將剝奪一個用戶創建數據庫的能力。

CREATEUSER
NOCREATEUSER

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

abstime

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

newname

用戶的新名字。

parameter
value

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

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

注意

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

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

使用 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