GRANT(表)
将表权限授予用户和角色。同时必须将表架构的 USAGE 权限授予用户。
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON {
[ TABLE ] [[database.]schema.]table[,...]
| ALL TABLES IN SCHEMA [database.]schema[,...] }
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对表有效:
重要
只有 SELECT 权限对系统表有效。 ALL [PRIVILEGES][EXTEND]
- 对系统表无效,授予同时属于授予者的所有表权限。授予者不能授予其自身缺少的权限。
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
[database.]schema
- 指定架构,默认为
public
。如果 schema 是除public
以外的任何其他架构,则必须提供架构名称。例如:myschema.thisDbObject
这里有一个例外:您可以指定系统表但不指定其架构名称。
如果指定一个数据库,它必须是当前数据库。
-
TABLE table
- 指定授权的表。
注意
该表可以是全局临时表,但不可以是本地临时表。请参阅创建临时表。 -
ON ALL TABLES IN SCHEMA schema
- 授予对架构 schema 中所有表和视图的指定权限。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
授予用户 Joe
对表 customer_dimension
的所有权限:
=> CREATE USER Joe;
CREATE USER
=> GRANT ALL PRIVILEGES ON TABLE customer_dimension TO Joe;
GRANT PRIVILEGE
授予用户 Joe
对所有系统表的 SELECT 权限:
=> GRANT SELECT on all tables in schema V_MONITOR, V_CATALOG TO Joe;
GRANT PRIVILEGE