?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
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)用于將來創(chuàng)建的對象的 權(quán)限。(這不會影響分配到已有對象中的權(quán)限。)目前,只有表(包括視圖)、 序列和函數(shù)的權(quán)限可以更改。
您可以為您將親自創(chuàng)建或者您所在的角色創(chuàng)建的對象更改默認(rèn)權(quán)限。權(quán)限可以全局設(shè)置 (例如:對于在當(dāng)前數(shù)據(jù)庫中創(chuàng)建的所有對象),或者僅僅針對特定模式中的對象設(shè)置。 每個模式的特定默認(rèn)權(quán)限被添加到特定對象類型的全局默認(rèn)權(quán)限中。
正如GRANT下解釋的,任意對象類型的缺省權(quán)限通常會給 對象的所有者授予可授予的權(quán)限,并且可能也會向PUBLIC授予一些權(quán)限。 然而,可以通過用ALTER DEFAULT PRIVILEGES改變?nèi)帜J(rèn)權(quán)限來改變 這些特性。
當(dāng)前角色是其一員的已有角色的名稱。如果FOR ROLE被省去, 當(dāng)前角色就被假設(shè)的。
現(xiàn)有模式的名稱。每個target_role必須對每個特定模式有 CREATE權(quán)限。
授予或者取消權(quán)限的現(xiàn)有角色的名稱。這個參數(shù),以及 abbreviated_grant_or_revoke下的所有 參數(shù),與GRANT和REVOKE下描述 的相似。除了一個是嗎,面向?qū)ο蟮乃蓄愒O(shè)置權(quán)限的而不是特定的命名對象。
使用psql的\ddp命令來獲得關(guān)于默認(rèn) 權(quán)限的現(xiàn)有分配情況的信息。權(quán)限值的意義與GRANT下的 \dp的解釋相同。
如果您想刪除一個默認(rèn)權(quán)限所改變的角色,有必要扭轉(zhuǎn)缺省權(quán)限中的改變或者使用 DROP OWNED BY來為角色脫離缺省的權(quán)限記錄。
將面向您隨后在myschema模式里創(chuàng)建的所有表(和視圖)的SELECT權(quán)限授予每一個用戶, 并且也允許角色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;
撤銷上述,因此隨后創(chuàng)建的表將不會有比正常情況下更多的權(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)限,針對隨后由角色admin創(chuàng)建的所有函數(shù):
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
在SQL標(biāo)準(zhǔn)中沒有ALTER DEFAULT PRIVILEGES語句。