数据库----实验3 视图机制在自主存取控制上的应用
我从前最怕旁人火眼金睛,如今,倒是盼着有人能够洞幽烛远。如此,就能赠我一点欢喜。
一、实验目的
通过实验加深对数据库安全性的理解,熟悉视图机制在自主存取控制上的应用。
二、实验内容 1
1. 问题描述
2. 数据库设计
创建视图:
Create view
<视图名>[(<列名>[,<列名>]…)]
As <子查询>
[with check option]
组成视图的属性名全部圣洛或全部指定
授权(grant)
Grant <权限> [,<权限>…]
[on <对象类型> <对象名>]
To <用户>[,<用户>…]
[with grant option]
回收(revoke)
Revoke <权限> [,<权限>…]
[on <对象类型> <对象名>]
From <用户>[,<用户>…]
角色创建
Create role <角色名>
给角色授权:
Grant <权限> [,<权限>…]
[on <对象类型> <对象名>]
To <角色>[,<角色>…]
角色权限收回:
Revoke <权限> [,<权限>…]
[on <对象类型> <对象名>]
From <角色>[,<角色>…]
3. 程序实现与测试
(注意写程序的规范:标识符用法、一句一行、缩格排放、合理的注释等。)
(1)代码及步骤如下:
1)创建李勇用户
--首先使用sp_addlogin添加登录
--exec sp_addlogin '用户名','密码',默认数据库
exec sp_addlogin '李勇','123456','school','English'
--然后向该用户授予访问某数据库的权限
go
use school
exec sp_grantdbaccess'李勇';
2)在CHOICES表上创建CS_View视图
go
create view CS_View
as
select *
from CHOICES
where cid='10010';
3)在视图CS_View上给用户李勇授予select的权限
use School
go
grant select
on CS_View
to 李勇;
4)将视图CS_View上score列的权限授予用户李勇
use School
go
grant update(score)
on CS_View
to 李勇;
5)以用户李勇登录,然后新建查询对CS_View进行查询
use School
go
select *
from CS_View;
、、、
(2)代码如下:
use School
go
update CS_View
set score=90
where no=500024940
select *
from CS_View;
三、实验内容 2
1. 问题描述
2. 数据库设计
如实验内容1
3. 程序实现与测试
(1)代码及步骤如下:
1)创建用户王二
exec sp_addlogin '王二','654321'
use School
go
exec sp_grantdbaccess'王二';
2)创建视图,并将元组放入
use School
go
create view grade2000
as
select *
from STUDENTS
where grade='2000'
(2)代码如下
use School
go
grant select
on grade2000
to 王二;