GRANT(架构)

将架构权限授予用户角色。默认情况下,只有超级用户和架构所有者才拥有以下架构权限:

语法

GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
   ON SCHEMA [database.]schema[,...]
   TO grantee[,...]
   [ WITH GRANT OPTION ]

参数

privilege
以下权限之一:
  • USAGE:允许访问指定架构中的对象。然后可以授予被授予者对这些架构中的单个对象的访问权限,例如使用 GRANT TABLEGRANT VIEW

  • CREATE:在指定架构中创建和重命名对象,以及从其他架构中移动对象。

您还可以授予以下架构权限,以供表及其投影以及该架构的视图继承。如果数据库架构启用了继承,这些权限会在创建时自动授予这些对象:

  • SELECT:查询表和视图。默认情况下,会将 SELECT 权限授予 PUBLIC 角色。

  • INSERT:插入行,或者使用 COPY 将数据加载到表中。

  • UPDATE:更新表行。

  • DELETE:删除表行。

  • REFERENCES:在此表上创建外键约束。必须对引用的和被引用的表上都设置此权限。

  • TRUNCATE:截断表内容。表的非所有者也可以对表执行以下分区操作:

  • ALTER:使用 ALTER TABLEALTER 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

另请参阅