⑴ sql server中的revoke 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 的话,管理员要累死的。
⑵ 在mysql中,可以使用什么语句来实现权限的撤销
有两种方法,一种方法使用mysql的checktable和repairtable的sql语句,另一种方法是使用MySQL提供的多个myisamchk,isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。1.checktable和repairtable登陆mysql终端:mysql-uxxxxx-pdbnamechecktabletabTest;如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:repairtabletabTest;进行修复,修复之后可以在用checktable命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。2.myisamchk,isamchk其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:myisamchktablename.MYI进行检测,如果需要修复的话,可以使用:myisamchk-oftablename.MYI关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。-----------------------------另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:[-x/tmp/mysql.sock]&&/pathtochk/myisamchk-of/DATA_DIR/*/*.MYI其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
⑶ 在SQL语言中,用于事务提交的语句是什么,收回权限的命令是什么
提交事务:commit transaction;回滚事务:rollback transaction
⑷ SQL语言的GRANT和REVOKE语句主要是用来维护数据库的
选C,SQL语言的GRANT和REVOKE语句主要是用来维护数据库的安全性。
GRANT 和 REVOKE 两个语句分别是授予权限和回收权限语句,具有对 SQL语言的安全控制功能。
1、授权命令 grant,语法格式(SQL语句不区分大小写):Grant <权限> on 表名[(列名)] to 用户 With grant option
或 GRANT <权限> ON <数据对象> FROM <数据库用户>
//数据对象可以是表名或列名
//权限表示对表的操作,如select,update,insert,delete
2、注:授权命令是由数据库管理员使用的,若给用户分配权限时带With grant option子句,
则普通用户获权后,可把自己的权限授予其他用户。
(4)级联收回多个权限的SQL语句扩展阅读:
回收revoke
revoke语句:收回授予的权限
revoke一般格式:
revoke <权限> [,<权限>]…
on <对象类型 > <对象名> [,<对象类型 > <对象名>]..
from <用户> [,<用户>]…
[cascade | restrict];
例子:收回所有用户对表SC的查询权限
revoke select
on table sc
from public;
⑸ 如何理解SQL Server中权限是如何级联回收的
系统权限不会被级联回收。
对象权限会被级联回收。
例如:
收回用户li对表employee的查询权限,同时级联收回li授予其他用户的该权限。
SQL语句为:
WITH CHECK OPTION select ON TABLE employee FROM li CASCADE