授予和撤销权限
Vertica 支持通过 GRANT 和 REVOKE 语句(例如,GRANT(架构)和 REVOKE(架构)、GRANT(表)和 REVOKE(表) 等等)来控制用户对数据库对象的访问。通常,超级用户会在创建数据库后不久创建用户和角色,然后使用 GRANT 语句为所创建的用户和角色分配权限。
在适用的情况下,GRANT 语句需要对象架构的 USAGE 权限。以下用户可以授予和撤销权限:
-
超级用户:所有数据库对象(包括数据库本身)的所有权限
-
非超级用户:他们拥有的对象的所有权限
-
包括 WITH GRANT OPTION 的权限的被授予者:对该对象的相同权限
在以下示例中,dbadmin(具有超级用户权限)创建用户 Carol
。随后的 GRANT 语句授予 Carol
架构和表权限:
-
对架构的 CREATE 和 USAGE 权限
PUBLIC
-
对表
public.applog
的 SELECT、INSERT 和 UPDATE 权限。此 GRANT 语句还包括WITH GRANT OPTION
。这使得Carol
可以将此表上的相同权限授予其他用户 — 在本例中,将 SELECT 权限授予用户Tom
:
=> CREATE USER Carol;
CREATE USER
=> GRANT CREATE, USAGE ON SCHEMA PUBLIC to Carol;
GRANT PRIVILEGE
=> GRANT SELECT, INSERT, UPDATE ON TABLE public.applog TO Carol WITH GRANT OPTION;
GRANT PRIVILEGE
=> GRANT SELECT ON TABLE public.applog TO Tom;
GRANT PRIVILEGE