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

revoke insert
on sc
from u5 cascade (U5可以转让insert权限)
这里的cascade是什么意思,不加要出错,为什么要加呢??

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

消息 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 的话,管理员要累死的。追问

如果sa把权限insert , With Grant Option授于A,然后A insert , With Grant Option to B ,然后B
insert to c,,,如果SA cascade revoke A ,,B和C的权限都会被收回吗???

追答

没错, 就是这样的.
sa GRANT SELECT ON Goods TO A With Grant Option

然后 A GRANT SELECT ON Goods TO B With Grant Option

然后 B GRANT SELECT ON Goods TO C With Grant Option

最后 SA REVOKE SELECT ON Goods FROM A CASCADE

结果是 A B C 都失去了 SELECT ON Goods 的权限。

不过SQL Server 我玩得不多,上面的情况是我测试之后,确实是这个结果的。

我印象中,好像 Oracle 里面的权限, 分 对象权限 与 系统权限
也就是 SELECT ON Goods 这种,指定某张表的,是 对象权限。
如果是 GRANT SELECT TO A With Admin Option, 这种不指定表的, 是 系统权限。
对象权限收回的时候,是连带着一起收回的。
系统权限收回的时候,好像是不连带一起收回的。

不知道 SQL Server 是不是 也这样区分的了。你可以自己做一下测试看看。

温馨提示:答案为网友推荐,仅供参考
相似回答