实验八 视图
(一)实验目的
掌握用户、权限、视图等操作。
(二)实验要求
请大家按要求完成实验报告,并在最后给出自己经过实验得到的总结。
(三)实验学时
2学时
(四)实验内容
1、实验数据:
应用第四章shop数据库来进行实验
2、实验步骤
(1)创建用户test
create user 'test'@'localhost' identified by '123456'
(2)创建视图view1从sh_goods表中查询出id,name。权限控制使用默认值,且默认安全控制由定义视图的用户权限来执行。
create view view1 as select id,name from sh_goods
(3)创建视图view2从sh_goods表中查询出id,name。权限控制为test用户,且默认安全控制由定义视图的用户权限来执行。
create view view2 as select id,name from sh_goods
grant select on view2 to test
(4)创建视图view3从sh_goods表中查询出id,name。,权限控制使用默认值,且默认安全控制由调用视图的用户权限来执行。
create sql security invoker view view3 as select id,name from sh_goods
(5)为用户test赋予对视图view1,view2,view3的select权限。
grant select on view1 to 'test'
grant select on view2 to 'test'
grant select on view3 to 'test'
(6)应用test用户查询视图view1,view2,view3,记录结果,给出原因
select * from view1
select * from view2
select * from view3
view无法查询,因为test用户没有查询的权限,无法查询view3
(7)为用户test赋予对表sh_goods查询的权限。
grant select on exp04.sh_goods to 'test'@'localhost'
(8)再一次应用test用户查询视图view1,view2,view3,记录结果,给出原因
select * from view1
select * from view2
select * from view3
(9)修改view2权限控制为root用户。
grant select on view2 to 'root'
(10)通过view1向基本表添加数据 id=15,name=HB铅笔,记录结果,给出原因
insert into view1 values(15,'HB铅笔')
(11)通过view2向基本表更新数据 id=15为id=13,记录结果,给出原因
update view2 set id=13 where id=15
(12)通过view2向基本表删除数据 id=1,记录结果,给出原因
delete from view2 where id=1
(13)删除视图view2
drop view view2
(14)查看sh_goods表数据,记录结果,给出原因
select * from sh_goods
(15)创建从sh_goods表中查询出id<30的id,name的视图view4
create view view4 as select id,name from sh_goods where id<30
(16)应用级联检查创建从view4表中查询出id<30的id,name的视图view5
create view view5 as select id,name from view4 where id<30 with check option
(17)应用检查本视图规则创建从视图view4表中查询出id>20的id,name的视图view6
create view view6 as select id,name from view4 where id>20 with local check option
(18)向view5分别添加数据 id=20,id=25, id=30,记录结果,给出原因
insert into view5 (id)values(20)
insert into view5 (id)values(25)
insert into view5 (id)values(30)
view5应用了级联检查,受到where id<30的限制,不能有id>=30的数据
(19)向view6分别添加数据 id=20,id=25, id=30,记录结果,给出原因。
insert into view6 (id)values(20)
insert into view6 (id)values(25)
insert into view6 (id)values(30)
view6只检查本视图规则,只受到where id>20的限制,不能有id<=20的数据
(20)授权给test用户将自己权限赋予他人的权限,记录结果。
grant all privileges on *.* to 'test' with grant option
(21)收回test的权限,记录结果。
revoke all,grant option from 'test'
(22)删除用户test,记录结果。
drop user 'test'