默认权限
本页目录
默认权限#
OushuDB 允许为特定的用户、角色、schema定义默认的访问权限。
描述#
ALTER DEFAULT PRIVILEGES 允许用户设置应用到以后创建的对象的权限(不影响已经分配给已经存在对象的权限)。目前只有表(包括视图)、序列和函数的权限能够设置默认权限。
用户可以修改自己创建的或者成员角色创建的对象的默认权限。这个权限允许被设置成全局的(当前数据库下所有的对象),或者只是给指定模式中创建的对象。
用法与参数#
ALTER DEFAULT PRIVILEGES
[FOR {ROLE | USER} target_role [,..]]
[IN SCHEMA schema_name [,..]]
grant_or_revoke_stmt
where grant_or_revoke_stmt is one of:
GRANT { {SELECT | INSERT| UPDATE| DELETE} [,...]
| ALL }
ON TABLE
TO {role_name| PUBLIC} [,...] [WITH GRANT OPTION]
GRANT {{USAGE|SELECT|UPDATE} [,...] | ALL}
ON SEQUENCE
TO {role_name | PUBLIC } [,...] [WITH GRANT OPTION]
GRANT {EXECUTE | ALL}
ON FUNCTION
TO {role_name | PUBLIC } [,...] [WITH GRANT OPTION ]
REVOKE { {SELECT | INSERT| UPDATE| DELETE} [,...]
| ALL }
ON TABLE
FROM {role_name| PUBLIC} [,...] [CASCADE]
REVOKE {{USAGE|SELECT|UPDATE} [,...] | ALL}
ON SEQUENCE
FROM {role_name | PUBLIC } [,...] [CASCADE]
GRANT {EXECUTE | ALL}
ON FUNCTION
FROM {role_name | PUBLIC } [,...] [CASCADE]
target_role : 已经存在的角色名称.如果未指定则标识为当前用户。 schema_name : 已经存在的模式名称。如果未指定则标识为当前数据库。 role_name : 已经存在的用来授权或者撤销授权的角色名称。
示例#
给后来在模式 myschema 里创建的所有的表授予 SELECT 权限,并允许角色 webuser 对他们执行INSERT :
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLE TO PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLE TO webuser;
撤销上面的操作,因此后来创建的表不再会拥有默认的权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLE FORM PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLE FROM webuser;
为角色 admin 之后创建的所有函数,移除那些通常授权在函数上的公共 EXECUTE 权限:
ALTER DEFAULT PRIVILEGES FOR ROLE admin REOVKE EXECUTE ON FUNCTION FROM PUBLIC;