GRANT 语句
- 1: GRANT(身份验证)
- 2: GRANT(数据库)
- 3: GRANT(密钥)
- 4: GRANT(库)
- 5: GRANT(模型)
- 6: GRANT(过程)
- 7: GRANT(资源池)
- 8: 授权(角色)
- 9: GRANT(架构)
- 10: GRANT(序列)
- 11: GRANT(存储位置)
- 12: GRANT(表)
- 13: GRANT(用户定义的扩展)
- 14: GRANT(视图)
1 - GRANT(身份验证)
语法
GRANT AUTHENTICATION auth‑method‑name TO grantee[,...]
参数
特权
超级用户
示例
-
将
v_ldap
身份验证与用户jsmith
关联:=> GRANT AUTHENTICATION v_ldap TO jsmith;
-
将
v_gss
身份验证与角色DBprogrammer
关联:=> CREATE ROLE DBprogrammer; => GRANT AUTHENTICATION v_gss TO DBprogrammer;
-
将客户端身份验证方法
v_localpwd
与角色PUBLIC
关联,默认情况下会被分配给所有用户:=> GRANT AUTHENTICATION v_localpwd TO PUBLIC;
另请参阅
2 - GRANT(数据库)
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] }
ON DATABASE db‑spec
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对数据库有效:
-
CREATE
:创建架构。 -
TEMP
:创建临时表。默认情况下,会通过所有用户的DEFAULT
角色授予其此权限。
-
ALL [PRIVILEGES]
- 授予同时属于授予者的所有数据库权限。授予者不能授予其自身缺少的权限。
可选关键字
PRIVILEGES
符合 SQL 标准。 -
db‑spec
指定当前数据库,设置为数据库名称或
DEFAULT
。- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
特权
非超级用户:权限被授予者可以选择 (WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
以下示例授予用户 Fred 在当前数据库中创建架构的权利。
=> GRANT CREATE ON DATABASE DEFAULT TO Fred;
另请参阅
3 - GRANT(密钥)
将加密密钥权限授予用户或角色。
重要
因为证书依赖于它们的底层密钥,所以当与 DROP KEY...CASCADE 一起使用时,对密钥的 DROP 权限有效地充当其关联证书的 DROP 权限。要撤销授予的权限,请参阅 REVOKE(密钥)。
对于自己未拥有的加密对象,超级用户的访问权限有限。有关详细信息,请参阅数据库对象权限。
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] } ON KEY
key_name[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
权限,可为以下之一:
-
USAGE:允许用户执行以下操作:
密钥的 USAGE 还为将其用作私钥的证书提供了隐式 USAGE 权限。用户还可以从密钥或证书的所有权中获取此类权限。证书的 USAGE 权限允许用户执行以下操作:
-
- key_name
- 目标密钥。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
特权
非超级用户:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
以下示例将私钥的 USAGE 权限授予用户,该权限允许用户将自签名 CA 证书添加到 server
TLS 配置:
=> CREATE KEY new_ca_key TYPE 'RSA' LENGTH 2048;
=> CREATE CA CERTIFICATE new_ca_cert
SUBJECT '/C=US/ST=Massachusetts/L=Cambridge/O=Micro Focus/OU=Vertica/CN=Vertica example CA'
VALID FOR 3650
EXTENSIONS 'authorityKeyIdentifier' = 'keyid:always,issuer', 'nsComment' = 'new CA'
KEY new_ca_key;
=> CREATE USER u1;
=> GRANT USAGE ON KEY new_ca_key TO u1;
=> GRANT ALTER ON TLS CONFIGURATION data_channel TO u1;
=> \c - u1
=> ALTER TLS CONFIGURATION data_channel ADD CA CERTIFICATES new_ca_cert;
-- clean up:
=> \c
=> ALTER TLS CONFIGURATION data_channel REMOVE CA CERTIFICATES new_ca_cert;
=> DROP KEY new_ca_key CASCADE;
=> DROP USER u1;
4 - GRANT(库)
例如,当您使用连接器框架服务时,您可能需要授予一个用户库的使用权限,才可以设置 UD 会话参数。有关详细信息,请参阅实施 CFS。
语法
GRANT privilege
ON LIBRARY [[database.]schema.]library[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 要授予的权限,为以下几项之一:
-
USAGE
:授予对指定库中函数的访问权限。 -
DROP
:授予删除被授予者创建的库的权限。 -
ALL [PRIVILEGES] [EXTEND]
:授予同时属于授予者的所有库权限。授予者不能授予其自身缺少的权限。
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包含 DROP 权限。未限定的ALL
不包括此权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
重要
要执行库中的函数,用户还必须对它们具有单独的EXECUTE
权限,并对其各自的架构具有USAGE
权限。 -
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- 库
- 目标库。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
将 MyFunctions
库的 USAGE 权限授予 Fred
:
=> GRANT USAGE ON LIBRARY MyFunctions TO Fred;
另请参阅
5 - GRANT(模型)
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON MODEL [[database.]schema.]model‑name[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对模型有效:
ALL [PRIVILEGES][EXTEND]
- 授予同时属于授予者的所有模型权限。授予者不能授予其自身缺少的权限。
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- model‑name
- 授予其权限的模型。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
此示例将 mySvmClassModel 模型的 USAGE 权限授予 user1:
=> GRANT USAGE ON MODEL mySvmClassModel TO user1;
另请参阅
6 - GRANT(过程)
重要
您使用 CREATE PROCEDURE(外部) 创建的外部过程始终以 Linux dbadmin 权限运行。如果 dbadmin 或伪超级用户授予非 dbadmin 权限以使用 GRANT(过程) 运行过程,请注意非 dbadmin 用户以完全 Linux dbadmin 权限运行该过程。语法
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON PROCEDURE [[database.]schema.]procedure( [arg-list] )[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
EXECUTE
- 使被授予者能够运行指定的过程。
ALL [PRIVILEGES]
- 授予同时属于授予者的所有过程权限。授予者不能授予其自身缺少的权限。
可选关键字
PRIVILEGES
符合 SQL 标准。 -
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- 过程
- 目标过程。
- arg-list
- 过程实参的逗号分隔列表,其中每个实参指定如下:
[ argname ] argtype
如果过程未定义实参,请提供一个空的实参列表。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
特权
非超级用户,为以下之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色
示例
将 tokenize
过程的 EXECUTE 权限授予用户 Bob
和 Jules
,以及授予角色 Operator
:
=> GRANT EXECUTE ON PROCEDURE tokenize(varchar) TO Bob, Jules, Operator;
另请参阅
7 - GRANT(资源池)
将资源池的 USAGE 权限授予用户和角色。用户可以通过 ALTER USER 或 SET SESSION RESOURCE POOL 访问其资源池。
语法
GRANT USAGE
ON RESOURCE POOL resource-pool[,...]
[FOR SUBCLUSTER subcluster | FOR CURRENT SUBCLUSTER]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
USAGE
- 使被授予者能够访问指定的资源池。
ALL [PRIVILEGES]
- 授予同时属于授予者的所有资源池权限。授予者不能授予其自身缺少的权限。
可选关键字
PRIVILEGES
符合 SQL 标准。 -
resource-pool
- 授予其指定权限的资源池。
-
subcluster
- 资源池的子群集。
-
grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
特权
非超级用户,为以下之一:
-
所有权
-
对象的 GRANT OPTION 权限
示例
授予用户 Joe
对资源池 Joe_pool
的 USAGE 权限。
=> CREATE USER Joe;
CREATE USER
=> CREATE RESOURCE POOL Joe_pool;
CREATE RESOURCE POOL
=> GRANT USAGE ON RESOURCE POOL Joe_pool TO Joe;
GRANT PRIVILEGE
授予用户 Joe
对子群集 sub1
的资源池 Joe_pool
的 USAGE 权限。
=> GRANT USAGE on RESOURCE POOL Joe_pool FOR SUBCLUSTER sub1 TO Joe;
GRANT PRIVILEGE
另请参阅
8 - 授权(角色)
语法
GRANT role[,...] TO grantee[,...] [ WITH ADMIN OPTION ]
参数
- 角色
- 要授予的角色
- grantee
- 被授予指定角色的用户或角色,为以下几项之一:
WITH ADMIN OPTION
- 授予被授予者将指定角色授予其他用户或角色的权限。有关详细信息,请参阅授予权限。
特权
非超级用户:如果使用 WITH GRANT OPTION,则可以将相同的角色授予其他用户或角色。
示例
请参阅授予数据库角色。
另请参阅
REVOKE(角色)9 - 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
另请参阅
10 - GRANT(序列)
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON {
SEQUENCE [[database.]schema.]sequence[,...]
| ALL SEQUENCES IN SCHEMA [database.]schema[,...] }
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对序列有效:
-
ALTER:使用
ALTER SEQUENCE
修改序列的 DDL -
DROP:使用
DROP SEQUENCE
删除此序列。
ALL [PRIVILEGES][EXTEND]
- 授予同时属于授予者的所有序列权限。授予者不能授予其自身缺少的权限
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。-
SEQUENCE sequence
- 指定授予其权限的序列。
-
ALL SEQUENCES IN SCHEMA schema
- 授予对架构 schema 中所有序列的指定权限。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
此示例说明如何授予用户 Joe
对序列 my_seq
的所有权限。
=> CREATE SEQUENCE my_seq START 100;
CREATE SEQUENCE
=> GRANT ALL PRIVILEGES ON SEQUENCE my_seq TO Joe;
GRANT PRIVILEGE
另请参阅
11 - GRANT(存储位置)
将用户定义的存储位置的权限授予用户和角色。有关详细信息,请参阅创建存储位置。
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] }
ON LOCATION 'path' [ ON node ]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对存储位置有效:
-
READ
:将数据从存储位置中的文件复制到表。 -
WRITE
:将数据从数据库导出到存储位置。被授予者获得WRITE
特权后,还可以将COPY
语句被拒绝的数据和异常文件保存到存储位置。
-
ALL [PRIVILEGES]
- 授予同时属于授予者的所有存储位置权限。授予者不能授予其自身缺少的权限。
可选关键字
PRIVILEGES
符合 SQL 标准。 -
ON LOCATION 'path' [ ON node]
- 指定存储位置的路径名称挂载点。如果通过
ON NODE
进行限定,Vertica 将授予对位于节点上的存储位置的访问权限。如果未指定节点,则授予操作适用于指定路径上的所有节点。所有节点必须在指定路径上;否则,整个授权操作将回退。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
特权
非超级用户,为以下之一:
-
所有权
-
对象的 GRANT OPTION 权限
注意
只有超级用户可以添加、更改、停用、删除和恢复位置。示例
创建存储位置:
=> CREATE LOCATION '/home/dbadmin/UserStorage/BobStore' NODE 'v_mcdb_node0007' USAGE 'USER';
CREATE LOCATION
授予用户 Bob
对 /BobStore
位置的所有可用权限:
=> GRANT ALL ON LOCATION '/home/dbadmin/UserStorage/BobStore' TO Bob;
GRANT PRIVILEGE
取消授予 Bob 的全部存储位置特权:
=> REVOKE ALL ON LOCATION '/home/dbadmin/UserStorage/BobStore' FROM Bob;
REVOKE PRIVILEGE
再次授予 Bob
在 BobStore
位置的特权,指定节点:
=> GRANT ALL ON LOCATION '/home/dbadmin/UserStorage/BobStore' ON v_mcdb_node0007 TO Bob;
GRANT PRIVILEGE
取消授予 Bob
的全部存储位置特权:
=> REVOKE ALL ON LOCATION '/home/dbadmin/UserStorage/BobStore' ON v_mcdb_node0007 FROM Bob;
REVOKE PRIVILEGE
另请参阅
12 - 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
另请参阅
13 - GRANT(用户定义的扩展)
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON {
UDx‑type [[database.]schema.]function( [arg‑list] )[,...]
| ALL FUNCTIONS IN SCHEMA schema[,...] }
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对用户定义的扩展有效:
注意
用户只能调用他们对其具有 EXECUTE 权限和对其架构具有 USAGE 权限的 UDx 函数。 ALL [PRIVILEGES] [EXTEND]
- 授予同时属于授予者的所有函数权限。授予者不能授予其自身缺少的权限
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
ON UDx‑type
- 用户定义的扩展 (UDx) 的类型,为以下几项之一:
-
FUNCTION
(标量函数) -
AGGREGATE FUNCTION
-
ANALYTIC FUNCTION
-
TRANSFORM FUNCTION
-
FILTER
-
PARSER
-
SOURCE
-
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- function
- 要授予其权限的用户定义函数的名称。
-
ON ALL FUNCTIONS IN SCHEMAschema
- 授予对指定架构中所有函数的权限。
- arg-list
- 对所有多态函数都是必需的,是一个逗号分隔的函数实参列表,其中每个实参指定如下:
[ argname ] argtype
如果过程未定义实参,请提供一个空的实参列表。
- grantee
指定向谁授予权限,可以为以下值之一:
注意
被授予者必须对架构具有USAGE
权限。WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
将 myzeroifnull
SQL 函数的 EXECUTE
权限授予用户 Bob
和 Jules
以及角色 Operator
。该函数需要一个整数参数:
=> GRANT EXECUTE ON FUNCTION myzeroifnull (x INT) TO Bob, Jules, Operator;
将 zero-schema
架构中所有函数的 EXECUTE
权限授予用户 Bob
:
=> GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA zero-schema TO Bob;
将tokenize
转换函数的 EXECUTE
权限授予用户 Bob
和角色 Operator
:
=> GRANT EXECUTE ON TRANSFORM FUNCTION tokenize(VARCHAR) TO Bob, Operator;
将 ExampleSource()
源的 EXECUTE
权限授予用户 Alice
:
=> CREATE USER Alice;
=> GRANT USAGE ON SCHEMA hdfs TO Alice;
=> GRANT EXECUTE ON SOURCE ExampleSource() TO Alice;
将 ExampleSource()
源的所有权限授予用户 Alice
:
=> GRANT ALL ON SOURCE ExampleSource() TO Alice;
将多态函数 Pagerank
的所有权限授予 dbadmin 角色:
=> GRANT ALL ON TRANSFORM FUNCTION Pagerank(z varchar) to dbadmin;
另请参阅
14 - GRANT(视图)
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON [[database.]schema.]view[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
-
privilege
- 视图具有以下有效权限:
ALL [PRIVILEGES][EXTEND]
- 授予同时属于授予者的所有视图权限。授予者不能授予其自身缺少的权限。
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- 视图
- 目标视图。
- grantee
指定向谁授予权限,可以为以下值之一:
WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
注意
作为视图所有者,只有在以下情况之一为真时,您才能授予其他用户对视图的 SELECT 权限:
-
您拥有视图的基表。
-
您对视图的基表具有 SELECT...WITH GRANT OPTION 权限。
示例
授予用户 Joe
对视图 ship
的所有权限。
=> CREATE VIEW ship AS SELECT * FROM public.shipping_dimension;
CREATE VIEW
=> GRANT ALL PRIVILEGES ON ship TO Joe;
GRANT PRIVILEGE