GRANT 语句

Db2 GRANT语句为授权ID授予权限。 针对上述各类特权,分别制定了单独的声明。

可用的对象始终在当前服务器上。 补助金记录在当前服务器的目录中。

调用 GRANT

此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL

如果在安装 Db2 子系统时未激活授权机制,则会出现错误。

授权 GRANT

要授予特权P,特权集必须包括以下内容之一:

  • 特权 P 含赠车选项
  • 拥有P所代表的事物是一种特权
  • SECADM 权限
    注意 :如果安装参数“单独安全”为“否”,则系统管理员权限隐含了安全管理员权限。
  • ACCESSCTRL 权限

    特权集中存在 ACCESSCTRL 权限,允许授予除以下权限外的所有权限:

    • 系统 DBADM
    • CREATE_SECURE_OBJECT权限
    • DATAACCESS
    • ACCESSCTRL
      注意 :如果安装参数“单独安全”为“否”,则 SYSCTRL 权限具有隐含的 ACCESSCTRL 权限,允许授予除以下权限外的所有权限:
      • DBADM 数据库
      • 用户表或视图的删除、插入、选择和更新
      • 对计划、包、函数或存储过程执行
      • PACKADM 关于收藏
      • SYSADM 权限
      • 不同类型、JAR和序列的使用
      • 读取、写入全局变量
  • 更改开始安装 SYSOPR 权限(当前进程的 SQLID 设置为 SYSINSTL 时)
    当前SQLID设置为SYSINSTL的SYSOPR安装权限允许授予以下权限:
    • 数据库 DSNDB04 和系统数据库DSNRGFDB、DSNRLST、DSNOPTDB、DSNMDCDB、DSNADMDB、DSNATPDB、 SN5JSDB、DSNMQDB、SYSIBMTA、SYSIBMTS和DSNXSR中对象的所有数据库、表和表空间权限
    • 缓冲池和存储组上的USE权限
    • 以“DSN”开头的计划的所有特权
    • 所有以“DSN”开头的套餐(包括收藏ID和套餐名称)的特权
    • 系统定义例程的执行权限。
    更改结束

要授予CREATE_SECURE_OBJECT系统权限,语句授权ID所拥有的权限必须包括SECADM权限。

除了查看权限外,GRANT选项还赋予DBADM权限数据库的特权,前提是DBADM权限是通过GRANT选项获得的。 有关视图的适用规则,请参阅 CREATE VIEW语句

如果语句嵌入在应用程序中,则权限集是指计划或包的所有者所拥有的权限。 主人可以是一个角色。 如果语句是动态准备的,则权限集是指进程的SQL授权ID所拥有的权限。 但是,如果进程在受信任的环境中运行,且该环境由角色作为对象所有者条款定义,则权限集是指角色实际拥有的权限。

语法 GRANT

阅读语法图跳过可视化语法图GRANT授权规格 TO ,授权名称ROLE角色名称PUBLIC WITH GRANT OPTION

描述 GRANT

授权规格
为特权类别指定一项或多项特权。 同一特权不得重复使用。
TO
指定授予哪些授权ID特权。
授权名称,...
列出一个或多个授权标识。
ROLE role-name
列出一个或多个角色名称。 每个名称必须标识当前服务器上存在的角色。
CURRENT RULES特殊寄存器的值决定了您是否可以使用GRANT语句本身的ID或角色(授予自己特权)。 当前规则为:
DB2
您不能使用GRANT语句的ID或角色。
STD
您可以使用GRANT语句的ID或角色。
PUBLIC
授予当前服务器上的所有用户特权,包括使用DRDA访问权限的数据库请求者。

CREATE_SECURE_OBJECT 不能授予 PUBLIC。

ACCESSCTRL、DATAACCESS和系统DBADM权限不能授予PUBLIC。

WITH GRANT OPTION
允许指定用户将权限授予他人。 授予一个管理权限,用户就可以明确授予该权限下的任何特权。 如果您省略了“授予权限选项”,则指定用户不能将权限授予他人,除非他们从其他来源获得了授权。

GRANT权限不能传递给PUBLIC。 当“WITH GRANT OPTION”与“PUBLIC”一起使用时,系统会发出警告,并授予指定的权限,但不会授予“GRANT”权限。

如果您授予CREATE_SECURE_OBJECT系统权限,则WITH GRANT OPTION子句将被忽略,因为CREATE_SECURE_OBJECT系统权限不能授予他人。

GRANT ACCESSCTRL、DATAACCESS和系统DBADM权限不能转让给他人。 如果在授予这些权限时使用了“附带授权选项”,系统会发出警告,并授予指定的权限,但不授予“授权”权限。

备注 GRANT

赠与是指特定赠予人向特定受赠人授予特定特权。 特定授权语句的授权者是权限集的授权ID,即进程或角色的SQL授权ID,或计划或包所有者的授权ID。 在受信任的环境中,使用“角色为对象所有者”子句定义的授权语句,授权人将成为实际的角色。 如果语句是动态准备的,则设置者是与运行语句的ID关联的角色。 如果语句嵌入在应用程序中,而该应用程序绑定在通过 ROLE AS OBJECT OWNER 子句定义的可信上下文中,则计划或包的所有者是作为授权者的角色。 如果未为可信上下文指定“作为对象所有者的角色”子句,则授权者即为流程的授权ID。

更改开始如目录中记录的那样,授权人是一个授权ID或PUBLIC。 目录中任何PUBLIC*的实例与PUBLIC的含义相同。更改结束

同一资助者的重复资助不会记录在目录中。 否则,执行GRANT语句的结果将作为当前服务器目录中的一个或多个授权记录下来。

如果在TO关键字后指定了多个特权或授权名称 ,并且其中一个授权有误,则语句执行将停止,且不会进行任何授权。 所授予的特权状态记录在每个授权名称的目录中。

不同的授予人可以向同一个被授予人授予相同的特权。 只要目录中记录有一项或多项补助,受助人就可以保留这一特权。 意味着其他特权的特权也被称为权威。 通过执行SQL REVOKE语句,可以从目录中删除补助金。

每当为不存在的对象创建数据库、不同类型、包、计划、架构、存储过程、表、触发器、用户定义函数、视图或USE权限时,都会发出SQL返回代码,并且不会创建权限。