?
This document uses PHP Chinese website manual Release
ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } target_role [, ...] ]
[ IN SCHEMA schema_name [, ...] ]
abbreviated_grant_or_revoke
where abbreviated_grant_or_revoke is one of:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON TABLES
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { USAGE | SELECT | UPDATE }
[,...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTIONS
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON TABLES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | SELECT | UPDATE }
[,...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTIONS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
ALTER DEFAULT PRIVILEGES允許您設(shè)置應(yīng)用于將來(lái)創(chuàng)建的對(duì)象的 權(quán)限。(這不會(huì)影響分配到已有對(duì)象中的權(quán)限。)目前,只有表(包括視圖)、 序列和函數(shù)的權(quán)限可以更改。
您可以為您將親自創(chuàng)建或者您所在的角色創(chuàng)建的對(duì)象更改默認(rèn)權(quán)限。權(quán)限可以全局設(shè)置 (例如:對(duì)于在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建的所有對(duì)象),或者僅僅針對(duì)特定模式中的對(duì)象設(shè)置。 每個(gè)模式的特定默認(rèn)權(quán)限被添加到特定對(duì)象類(lèi)型的全局默認(rèn)權(quán)限中。
正如GRANT下解釋的,任意對(duì)象類(lèi)型的缺省權(quán)限通常會(huì)給 對(duì)象的所有者授予可授予的權(quán)限,并且可能也會(huì)向PUBLIC授予一些權(quán)限。 然而,可以通過(guò)用ALTER DEFAULT PRIVILEGES改變?nèi)帜J(rèn)權(quán)限來(lái)改變 這些特性。
當(dāng)前角色是其一員的已有角色的名稱(chēng)。如果FOR ROLE被省去, 當(dāng)前角色就被假設(shè)的。
現(xiàn)有模式的名稱(chēng)。每個(gè)target_role必須對(duì)每個(gè)特定模式有 CREATE權(quán)限。
授予或者取消權(quán)限的現(xiàn)有角色的名稱(chēng)。這個(gè)參數(shù),以及 abbreviated_grant_or_revoke下的所有 參數(shù),與GRANT和REVOKE下描述 的相似。除了一個(gè)是嗎,面向?qū)ο蟮乃蓄?lèi)設(shè)置權(quán)限的而不是特定的命名對(duì)象。
使用psql的\ddp命令來(lái)獲得關(guān)于默認(rèn) 權(quán)限的現(xiàn)有分配情況的信息。權(quán)限值的意義與GRANT下的 \dp的解釋相同。
如果您想刪除一個(gè)默認(rèn)權(quán)限所改變的角色,有必要扭轉(zhuǎn)缺省權(quán)限中的改變或者使用 DROP OWNED BY來(lái)為角色脫離缺省的權(quán)限記錄。
將面向您隨后在myschema模式里創(chuàng)建的所有表(和視圖)的SELECT權(quán)限授予每一個(gè)用戶, 并且也允許角色webuser往里插入:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;
撤銷(xiāo)上述,因此隨后創(chuàng)建的表將不會(huì)有比正常情況下更多的權(quán)限:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
消除通常授權(quán)在函數(shù)上的公共EXECUTE權(quán)限,針對(duì)隨后由角色admin創(chuàng)建的所有函數(shù):
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
在SQL標(biāo)準(zhǔn)中沒(méi)有ALTER DEFAULT PRIVILEGES語(yǔ)句。