WITH GRANT OPTION 关键字

WITH GRANT OPTION 关键字将权限或角色传递给 user,随同将相同的权限或角色授予其他用户的权利。

请您创建以您开头的权限链,并扩展至 user 以及 user 随后将授予权限的权利传递给的任何用户。如果您包括 WITH GRANT OPTION,则可不再控制权限的分发。

下列示例将对 cust_seq 序列对象的 Alter 和 Select 权限授予用户 mark,随同将那些权限授予其他用户的能力:
GRANT ALL ON cust_seq TO mark WITH GRANT OPTION;
        

如果您从 user 将使用 WITH GRANT OPTION 授予的权限取消,则切断该权限链。即当您从 user 取消权限时,自动地取消了从 user 或从 user 创建的链获取了权限的所有用户的权限(除非其他用户给 user、或从 user 获得授权的用户授予了相同的权限集)。

下列示例展示此情况。作为表 items 的所有者,您发出下列语句来将访问权限授予用户 mary
REVOKE ALL ON items FROM PUBLIC;
          GRANT SELECT, UPDATE ON items TO mary WITH GRANT OPTION;
用户 mary 使用其权限来授予用户 cathypaul 访问此表的权限:
GRANT SELECT, UPDATE ON items TO cathy;
          GRANT SELECT ON items TO paul;
稍后,您从用户 mary 取消对 items 表的访问权限:
REVOKE SELECT, UPDATE ON items FROM mary;

此单一语句有效地取消用户 marycathypaulitems 表的所有权限。如果您想要与另一用户创建权限链作为权限源,请使用 AS grantor 子句。

GBase 8s 中,WITH GRANT OPTION 关键字仅对用户有效。如果将角色作为权限或另一角色的被授权者,则为无效。您不可在语句中指定 WITH GRANT OPTION 给 PUBLIC 组授予权限。

“数据库服务器管理员”不可在 GRANT EXTEND 或 GRANT DBSECADM 语句中包括 WITH GRANT OPTION 关键字。DBSA 不可将授予内建的 EXTEND 或 DBSECADM 角色的权限分派给另一用户。如果多个用户需要这些权限,则应在安装数据库服务器时将他们包括在 DBSA 组中。

除了 GRANT DBSECADM 语句之外,GRANT 语句的其他安全管理选项都不支持 WITH GRANT OPTION 关键字。要获取关于这些语句及其语法的详细信息,请参阅 安全管理选项