什么是数据控制?
SQL中使用 GRANT 和 REVOKE 语句向用户授予或收回对数据的操作权限。GRANT 语句向用户 授予 权限, REVOKE 语句 收回 已经授予用户的权限
1.GRANT
语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
WITH GRANT OPTION子句 : 若 指定了,获得权限的用户可以再把权限授予给其他用户。
若没有指定,获得权限的用户 只能使用该权限,不能传播。
【例1】把teacher表权限授权给lc0019999 用户
GRANTSELECTON teacher TO lc0019999
【例2】把teacher表全部权限 授予用户lc001, lc002
【注】T-SQL 不支持同时授予用户多个操作权限 也不支持同时对两个表赋权
GRANTALLPRIVILEGESON teacher
TO lc001,lc002;--成功
【例3】把teacher表的 插入权限授权给lc0019999 用户,并允许他再将此权限授予其他用户
GRANTINSERTON teacher TO lc0019999
WITHGRANTOPTION;
2.REVOKE
语句的一般格式为:
REVOKE<权限>[,<权限>]...ON<对象类型><对象名>[,<对象类型><对象名>]…
FROM<用户>[,<用户>]...[CASCADE|RESTRICT];
【例1】把用户lc0019999的 teacher插入权限收回
REVOKEINSERTON teacher
FROM lc0019999 CASCADE;
【注】将用户teacher INSERT权限收回同时, 级联CASCADE 回收了其授予其他用户INSERT权限,否则系统将拒绝执行指令
--1,授权表查询权限--GRANT SELECT ON object::tabel1 To su1GRANTSELECTON tabel1 To su1
--2,取消授权表查询权限,有REVOKE(撤回)和DENY(拒绝)两种。二者引发的权限报错信息一致。一般撤销授权应使用REVOKE;拒绝用户某种操作使用DENY;--DENY:拒绝后,权限表中该权限ProtectType为Deny(不允许使用该权限);DENY 优先于所有权限,但 DENY 不适用于 sysadmin角色--REVOKE:撤回后,权限表中该权限直接消失;可撤回ProtectType为Deny的权限;DENYSELECTON tabel1 To su1 --拒绝(不允许)su1使用SELECT权限REVOKESELECTON tabel1 To su1 --撤销(删除)su1的SELECT授权,不论授予还是拒绝--3,授权存储过程运行权限(不需要对存储过程中涉及表授权)--GRANT EXECUTE ON object::sp1 TO su1GRANTEXECUTEON sp1 TO su1
--4,取消授权存储过程REVOKEEXECUTEON sp1 TO su1
--5,查看用户su1的权限EXEC sys.sp_helprotect NULL,su1
--6,授予所有对象SELECT权限GRANTSELECTTo su1
--7,以指定用户上下文运行(切换用户并以该用户权限运行)EXECASUSER='su2'
GO
--8,允许/不允许用户定义表(修改表的结构)GRANTVIEW DEFINITION ON table1 to su1
DENYVIEW DEFINITION ON table1 to su1
--9,允许/不允许用户定义存储过程/视图GRANTVIEW DEFINITION ON sp1 to su1
DENYVIEW DEFINITION ON sp1 to su1
GRANTVIEW DEFINITION ON view1 to su1
DENYVIEW DEFINITION ON view1 to su1
参考内容来源:https://blog.csdn.net/weixin_46009153/article/details/115767430
版权归原作者 维夕说 所有, 如有侵权,请联系我们删除。