?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
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允許您設置應用于將來創(chuàng)建的對象的 權限。(這不會影響分配到已有對象中的權限。)目前,只有表(包括視圖)、 序列和函數(shù)的權限可以更改。
您可以為您將親自創(chuàng)建或者您所在的角色創(chuàng)建的對象更改默認權限。權限可以全局設置 (例如:對于在當前數(shù)據(jù)庫中創(chuàng)建的所有對象),或者僅僅針對特定模式中的對象設置。 每個模式的特定默認權限被添加到特定對象類型的全局默認權限中。
正如GRANT下解釋的,任意對象類型的缺省權限通常會給 對象的所有者授予可授予的權限,并且可能也會向PUBLIC授予一些權限。 然而,可以通過用ALTER DEFAULT PRIVILEGES改變全局默認權限來改變 這些特性。
當前角色是其一員的已有角色的名稱。如果FOR ROLE被省去, 當前角色就被假設的。
現(xiàn)有模式的名稱。每個target_role必須對每個特定模式有 CREATE權限。
授予或者取消權限的現(xiàn)有角色的名稱。這個參數(shù),以及 abbreviated_grant_or_revoke下的所有 參數(shù),與GRANT和REVOKE下描述 的相似。除了一個是嗎,面向對象的所有類設置權限的而不是特定的命名對象。
使用psql的\ddp命令來獲得關于默認 權限的現(xiàn)有分配情況的信息。權限值的意義與GRANT下的 \dp的解釋相同。
如果您想刪除一個默認權限所改變的角色,有必要扭轉缺省權限中的改變或者使用 DROP OWNED BY來為角色脫離缺省的權限記錄。
將面向您隨后在myschema模式里創(chuàng)建的所有表(和視圖)的SELECT權限授予每一個用戶, 并且也允許角色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)建的表將不會有比正常情況下更多的權限:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
消除通常授權在函數(shù)上的公共EXECUTE權限,針對隨后由角色admin創(chuàng)建的所有函數(shù):
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
在SQL標準中沒有ALTER DEFAULT PRIVILEGES語句。