什么是数据控制?

​ SQL中使用 GRANTREVOKE 语句向用户授予或收回对数据的操作权限。GRANT 语句向用户 授予 权限, REVOKE 语句 收回 已经授予用户的权限

1.GRANT

语句的一般格式:

GRANT [,]... ON  [, ]…TO [,]...[WITH GRANT OPTION];

WITH GRANT OPTION 子句 : 若 指定了,获得权限的用户可以再把权限授予给其他用户
没有指定,获得权限的用户 只能使用该权限,不能传播

【例1】把teacher表权限授权给lc0019999 用户

GRANT SELECT ON teacher TO lc0019999 

【例2】把teacher表全部权限 授予用户lc001, lc002

【注】T-SQL 不支持同时授予用户多个操作权限 也不支持同时对两个表赋权

GRANT ALL PRIVILEGESON teacherTO lc001,lc002;--成功

【例3】把teacher表的 插入权限授权给lc0019999 用户,并允许他再将此权限授予其他用户

GRANT INSERT ON teacher TO lc0019999 WITH GRANT OPTION;

2.REVOKE

语句的一般格式为:

REVOKE <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];

【例1】把用户lc0019999的 teacher插入权限收回

REVOKE INSERTON teacherFROM lc0019999 CASCADE;

【注】将用户teacher INSERT权限收回同时, 级联CASCADE 回收了其授予其他用户INSERT权限,否则系统将拒绝执行指令

--1,授权表查询权限--GRANT SELECT ON object::tabel1 To su1GRANT SELECT ON tabel1 To su1--2,取消授权表查询权限,有REVOKE(撤回)和DENY(拒绝)两种。二者引发的权限报错信息一致。一般撤销授权应使用REVOKE;拒绝用户某种操作使用DENY;--DENY:拒绝后,权限表中该权限ProtectType为Deny(不允许使用该权限);DENY 优先于所有权限,但 DENY 不适用于 sysadmin角色--REVOKE:撤回后,权限表中该权限直接消失;可撤回ProtectType为Deny的权限;DENY SELECT ON tabel1 To su1--拒绝(不允许)su1使用SELECT权限REVOKE SELECT ON tabel1 To su1--撤销(删除)su1的SELECT授权,不论授予还是拒绝--3,授权存储过程运行权限(不需要对存储过程中涉及表授权)--GRANT EXECUTE ON object::sp1 TO su1GRANT EXECUTE ON sp1 TO su1--4,取消授权存储过程REVOKE EXECUTE ON sp1 TO su1--5,查看用户su1的权限EXEC sys.sp_helprotect NULL,su1--6,授予所有对象SELECT权限GRANT SELECT To su1--7,以指定用户上下文运行(切换用户并以该用户权限运行)EXEC AS USER='su2'GO--8,允许/不允许用户定义表(修改表的结构)GRANT VIEW DEFINITION ON table1 to su1DENY VIEW DEFINITION ON table1 to su1--9,允许/不允许用户定义存储过程/视图GRANT VIEW DEFINITION ON sp1 to su1DENY VIEW DEFINITION ON sp1 to su1GRANT VIEW DEFINITION ON view1 to su1DENY VIEW DEFINITION ON view1 to su1

参考内容来源:https://blog.csdn.net/weixin_46009153/article/details/115767430