GRANT(架构)
将架构权限授予用户和角色。默认情况下,只有超级用户和架构所有者才拥有以下架构权限:
注意
默认情况下,新用户无法访问架构 PUBLIC。您必须显式授予所有新用户对 PUBLIC 架构的 USAGE 权限。语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON SCHEMA [database.]schema[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
-
privilege
- 以下权限之一:
-
USAGE:允许访问指定架构中的对象。然后可以授予被授予者对这些架构中的单个对象的访问权限,例如使用 GRANT TABLE 和 GRANT VIEW。
-
CREATE:在指定架构中创建和重命名对象,以及从其他架构中移动对象。
您还可以授予以下架构权限,以供表及其投影以及该架构的视图继承。如果数据库和架构启用了继承,这些权限会在创建时自动授予这些对象:
-
SELECT:查询表和视图。默认情况下,会将 SELECT 权限授予 PUBLIC 角色。
-
INSERT:插入行,或者使用
COPY
将数据加载到表中。注意
COPY FROM STDIN
允许具有 INSERT 权限的用户使用,而COPY FROM 文件
需要管理员特权。 -
UPDATE:更新表行。
-
DELETE:删除表行。
-
REFERENCES:在此表上创建外键约束。必须对引用的和被引用的表上都设置此权限。
-
TRUNCATE:截断表内容。表的非所有者也可以对表执行以下分区操作:
-
ALTER:使用
ALTER TABLE
和ALTER VIEW
分别修改表和视图的 DDL。 -
DROP:删除表和视图。
-
ALL [PRIVILEGES][EXTEND]
- 授予 USAGE AND CREATE 权限。必须显式授予继承的权限。
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
[database.]schema
- 指定目标架构。如果指定一个数据库,它必须是当前数据库。
-
grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
特权
非超级用户,为以下几项之一:
-
架构所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
授予用户 Joe 对架构 online_sales
的 USAGE 权限。
=> CREATE USER Joe;
CREATE USER
=> GRANT USAGE ON SCHEMA online_sales TO Joe;
GRANT PRIVILEGE