grant
(1) 一般格式:
grant <权限> [<权限>]
on <对象类型><对象名>
to <用户>[,<用户>]
[with grant option ]
首先创建用户u1
右键单击用户,选择创建新用户如果出现了错误如图
需要换一个登录名
【例4.1】
直接使用书中例子会出错 ,
需要去掉table
grant select
on TEST.Student
to u1
可以在u1中看到
【例4.2】
首先创建u2,u3用户
如果使用书中的例子也会报错,改为:
grant all
on TEST.Student
to u2,u3
grant all
on TEST.Course
to u2,u3
【例4.3】
将SC的查询权限给所有的用户
grant select
on TEST.SC
to public
可以在角色中找到public,点击【安全对象】查询
【例4.4】
将student的修改学号信息以及查询student学生信息给u4
grant select, update(Sno)
on TEST.Student
to u4
【例4.5】
将inert权限交给u5 允许u5 传给别人
grant insert
on TEST.SC
to u5
with grant option
【例4.6】
u5 将权限传给u6
grant insert
on TEST.SC
to u6
with grant option
--什么区别
【例4.7】
grant insert
on TEST.SC
to u7
如图
u7 允许insert ,但是不允许转授.
revoke<权限>[,<权限>]
on <对象类型><对象名>[,<对象类型>]
from <用户>[,<用户>]...[cascade]
【例4.8】
revoke update (Sno)
on TEST.Student
from u4
【例 4.9】
收回所有的用户的SC查询权限
revoke select
on TEST.SC
from public
可以在public中查看【安全对象】
【例 4.10】
revoke insert
on TEST.SC
from u5 cascade
--如果不使用cascade会报错
--终于可以用了
角色
被命名的 一组与数据库操作相关的权限
角色是权限的集合,作为一组具有相同的权限的用户创建一个角色
【例4.11】
create role <角色名>
给角色授权
grant <权限>[,<权限>]
on <对象类型> 对象名
to <角色>[,<角色>]
角色的授权
grant <权限>[,<权限>]
on <角色3>[,<用户名>]
[with admin option ]
角色的收回
revoke <权限>[,<>]
【例4.11】
create role r1
--
grant select ,update,insert
on table TEST.Student
to r1
grant r1
to 王平
---要先创建王平这个用户不再赘述
上面的代码在SQLserver中不支,有两种方法
(1)手动添加
(2)分为两种方法
exec sp_addrolemember 'r1','王平'
可以在【用户】中查看王平的【成员身份】查看到r1角色
使用下面代码可以删除
exec sp_droprolemember 'r1','王平'
也可以使用下面的代码
alter role r1
add member 王平
-- add / drop
【4.12】
增加role的权限
grant delete
on TEST.Student
to r1
【4.13】
revoke select
on TEST.Student
from r1
知识点:
强制存取控制规则
(1)
仅当主体的许可证级别大于等于客体的密级时,主体才能读相应的客体
(2)仅当主体的许可证级别小于或等于客体的级别可以 写相应的客体
视图机制:
将保密的数据对于一些无权查询的用户隐藏起来
【4.14】
建立一个视图,将select的权限给王平,将所有的权限给u1(做了修改)
create view cs_student
as
select *
from TEST.Student
where Sage=18
grant select
on cs_student
to 王平
grant all
on cs_student
to u1