0


【SQL Server】数据库授权常用

什么是数据控制?

​ SQL中使用 GRANTREVOKE 语句向用户授予或收回对数据的操作权限。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

标签: 数据库 sqlserver

本文转载自: https://blog.csdn.net/weixin_46399697/article/details/132494756
版权归原作者 维夕说 所有, 如有侵权,请联系我们删除。

“【SQL Server】数据库授权常用”的评论:

还没有评论