SQL server中的revoke cascade(用户权限回收问题)

2024-12-04 07:33:34
推荐回答(1个)
回答1:

如果不加,会出现像下面这种样子的错误。

消息 4611,级别 16,状态 1,第 1 行
若要撤消或拒绝可授予的特权,请指定 CASCADE 选项。

原因:
因为 U5可以转让insert权限
也就是以前执行的是:
GRANT insert on sc TO u5 With Grant Option
那么这个 u5 用户登录以后。
可以
GRANT insert on sc TO 其它的用户。

revoke insert
on sc
from u5 cascade

目的是把 给 u5 的权限回收回来, 同时把 u5 授权给其他用户的权限,也回收。

下面以一个例子来演示:
我的数据库上面,有 A 与 B , 两个用户。

我首先用管理员帐户,执行
GRANT SELECT ON Goods TO A With Grant Option

然后我用 A 用户登录。
执行了
1> GRANT SELECT ON Goods TO B With Grant Option
2> go
也就是 A 又给B 授权,允许B访问 Goods表,且还能授权给别人。

现在回到管理员帐户上
执行
REVOKE SELECT ON Goods FROM A CASCADE
从而把 A 的权限收回, 同时也把 A 给 B赋 的权限也收回。

那么现在 A 和 B 都没有权限访问 Goods 表了。

假如没有 cascade 连带删除的话,那么管理员把 A 的权限收回了。 但是 B还有权限。B还可以再把权限给 A,还可以给 C,D,E,F,G。

没有 cascade 的话,管理员要累死的。