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允许您设置应用于将来创建的对象的 权限。(这不会影响分配到已有对象中的权限。)目前,只有表(包括视图)、 序列和函数的权限可以更改。
您可以为您将亲自创建或者您所在的角色创建的对象更改默认权限。权限可以全局设置 (例如:对于在当前数据库中创建的所有对象),或者仅仅针对特定模式中的对象设置。 每个模式的特定默认权限被添加到特定对象类型的全局默认权限中。
正如GRANT下解释的,任意对象类型的缺省权限通常会给 对象的所有者授予可授予的权限,并且可能也会向PUBLIC授予一些权限。 然而,可以通过用ALTER DEFAULT PRIVILEGES改变全局默认权限来改变 这些特性。
使用psql的\ddp命令来获得关于默认 权限的现有分配情况的信息。权限值的意义与GRANT下的 \dp的解释相同。
如果您想删除一个默认权限所改变的角色,有必要扭转缺省权限中的改变或者使用 DROP OWNED BY来为角色脱离缺省的权限记录。
将面向您随后在myschema模式里创建的所有表(和视图)的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;
撤销上述,因此随后创建的表将不会有比正常情况下更多的权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
消除通常授权在函数上的公共EXECUTE权限,针对随后由角色admin创建的所有函数:
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;