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) 将权限授予其他用户或角色。
示例
将 myzeroifnullSQL 函数的 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