南大通用GBase8s 常用SQL语句(146)

    1. GRANT 语句

使用 GRANT 语句来给用户和其他角色指定访问权限和角色。拥有 DBSECADM 角色的用户可使用此语句来从基于标签的访问控制(LBAC)安全规则指定用户安全标签和豁免。

语法

南大通用GBase8s 常用SQL语句(146)_第1张图片

 

TO 选项

南大通用GBase8s 常用SQL语句(146)_第2张图片

 

元素

描述

限制

语法

grantor

用户的授权标识符,该用户可使用 REVOKE 来取消此 GRANT 语句的作用。如果省略 AS 子句,则缺省值是发出此语句的用户的登录名

必须为有效的 user 名称(非 role 名称)。在 Windows™ 上,user 名称不可超过 20 字节。在其他平台上,该限制为 32 字节。

所有者名称

role

现有角色的名称,您将一个或多个访问权限授予该角色,或您指定另一角色给该角色

在该数据库中必须存在

所有者名称

user

用户的授权标识符,您将一个或多个访问权限授予该用户,或您将指定角色给该用户

grantor

所有者名称

用法

GRANT 语句扩展到其他用户特定的自主访问权限或 LBAC 标签和豁免,这些通常仅归于 DBA 或对象的创建者。后续的 GRANT 语句不影响已授予用户的那些权限。

您可使用 GRANT 语句进行如下操作:

  1. 授权其他人来使用或管理您创建的数据库
  2. 允许其他人来查看、改变或删除您创建的表、同义词、视图或序列对象
  3. 允许其他人来使用数据类型或 SPL 语言,或来执行您创建的用户定义的例程(UDR)
  4. 将角色及其权限分配给用户、给 PUBLIC,或给其他角色
  5. 将缺省角色分配给一个或多个用户或给 PUBLIC
  6. 如果您具有 DBSECADM 角色,则从 LBAC 安全策略的规则将 LBAC 安全标签或豁免分配给用户,

您可将权限授予先前创建的角色或授予内嵌角色。您可将角色授予 PUBLIC、授予个别用户,或授予另一角色。

如果您用引号括起 grantor role 或 user,则名称是区分大小写的,并完全按您输入的形式存储。在符合 ANSI 的数据库中,如果您不使用引号做定界符,则以大写字母存储该名称。

仅在 Windows 上,数据库服务器不支持包含多于 20 字符的 user 名称。

您授予的权限保持有效直到您以 REVOKE 语句取消为止。仅权限的 grantor 可调用那个权限。grantor 是发出 GRANT 语句的人,除非 AS grantor 子句将调用那些权限的权利转给其他用户。

仅对象的所有者或以 WITH GRANT OPTION 关键字明确地授予权限的用户可授予对象的权限。有 DBA 权限还不够。然而,作为 DBA,您可通过使用 AS grantor 子句代表另一用户授予权限。对于数据库对象的权限,其所有者不是操作系统识别的用户(例如,用户 gbasedbt),AS grantor 子句是有用的。

关键字 PUBLIC 将特定的的权限或角色扩展到 PUBLIC 组或连接到该数据库的所有用户。如果您想要将 PUBLIC 已持有的权限仅限制到用户的子集,则必须首先从 PUBLIC 取消那些权限。

要为已由表达式分段的表的一个或多个分段授予权限,请参阅 GRANT FRAGMENT 语句。

数据库级权限

数据库级访问权限影响对数据库的访问。仅个别用户,而不是角色,可持有数据库权限。

数据库级权限

 

当您以 CREATE DATABASE 语句创建数据库时,您是所有者并自动地收到所有数据库级权限。

数据库对所有其他用户保持为不可访问,直到您,作为 DBA,将数据库权限授予他们。

作为数据库所有者,您还自动地收到对该数据库中所有表的表级权限。要获取关于表级权限的更过信息,请参阅 表级权限。

建议: 仅用户 gbasedbt 可直接地修改系统目录表。然而,除了在数据库服务器文档中特别说明的之外,请勿直接地使用 DML 语句来插入、删除或更新系统目录表的行,因为修改这些表中的数据可损坏数据库的完整性。

当数据库级权限与表级权限冲突时,限制性更大的特权优先。

从最低至最高,数据库访问级别为 Connect、Resource 和 DBA。请使用相应的关键字来授予访问权限的级别。

权限

作用

CONNECT

让您查询和修改数据

您可修改数据库模式,如果您拥有想要修改的数据库对象。任何有 Connect 权限的用户都可执行下列操作:

  • 以 CONNECT 语句或另一连接语句连接到该数据库
  • 执行SELECT、INSERT、UPDATE 和 DELETE 语句,如果用户有必要的表级权限
  • 创建视图,如果用户有对底层表的 Select 权限
  • 创建同义词
  • 创建临时表及创建临时表上的索引
  • 改变或删除表或索引,如果用户拥有该表或索引(或有该表上的 Alter、Index 或 References 权限)
  • 授予表或视图的权限,如果该用户拥有该表(或已经由 WITH GRANT OPTION 关键字被授予对表的权限)

RESOURCE

让您扩展数据库的结构。除了 Connect 权限的能力之外,Resource 权限的持有者可执行下列功能:

  • 创建新标
  • 创建新索引
  • 创建新 UDR
  • 创建新数据类型

DBA

有 Resource 权限的所有能力,且可执行下列附加的操作:

  • 将任何数据库级权限授予另一用户,包括 DBA 权限
  • 将任何表级权限授予另一用户或角色
  • 将角色授予用户或授予另一角色
  • 取消权限,您在 REVOKE 语句的 AS 子句中将其 grantor 指定为 revoker
  • 当注册 UDR 时,限制 DBA 的 Execute 权限
  • 执行 SET SESSION AUTHORIZATION 语句
  • 创建任何数据库对象
  • 创建表、视图和索引,指定另一用户为这些对象的所有者
  • 改变、删除或重命名数据库对象,不管谁拥有它们
  • 执行 UPDATE STATISTICS 语句的 DROP DISTRIBUTIONS 选项
  • 执行 DROP DATABASE 和 RENAME DATABASE 语句

用户 gbasedbt 有改变系统目录表所需的权限,包括 systables 表。

下列示例使用 PUBLIC 关键字来将当前活动的数据库的 Connect 权限授予任何用户:

GRANT CONNECT TO PUBLIC;

您不可将数据库级权限授予一个角色。仅个别的用户或 PUBLIC 可持有数据库级权限。

你可能感兴趣的:(sql,数据库,database)