数据库安全性与完整性实验报告记录.docx
《数据库安全性与完整性实验报告记录.docx》由会员分享,可在线阅读,更多相关《数据库安全性与完整性实验报告记录.docx(18页珍藏版)》请在冰豆网上搜索。
数据库安全性与完整性实验报告记录
数据库安全性与完整性实验报告记录
————————————————————————————————作者:
————————————————————————————————日期:
实验报告
课程名称:
数据库系统概论
学院:
工程学院
专业:
年级:
班级:
姓名:
学号:
指导教师:
年月日
教务处制
实验名称:
数据库安全性及完整性
时间:
2015-12-17
地点:
三教205机房
班组:
教师评语
成绩
教师签名
实验报告
1 实验目的
1.熟悉通过SQL对数据进行安全性控制。
2 实验工具KingbaseES
KingbaseES及其交互式查询工具ISQLW。
3 实验内容与要求
1.使用SQL对数据进行安全性控制,包括:
授权与权力回收。
操作完成后看看已授权的用户是否真正具有授予的数据操作的权力了;权力收回操作之后的用户是否确实丧失了收回的数据操作的权力)。
根据操作过程认真填写实验报告,记录所有的实验用例。
2.首先在数据库中建立用户U1,U2,U3,U4,U5,U6,U7,选择全部为CONNECT角色,具体操作见课本141页;进行例4.1-4.13各操作。
3.在SYSTEM用户与7个CONNECT用户之间进行授权(例题1-12)。
注意在完成授权或权利回收之后,以相应的用户登录数据库,检查是否获得相应的权利。
4实验方法及步骤
例4.1把查询student表的权限授给用户u1。
以system的身份进入查询分析器,建立用户U1,U2,U3,U4,U5,U6,U7,密码均为tcl
createuserU1withpassword'tcl';
createuserU2withpassword'tcl';
createuserU3withpassword'tcl';
createuserU4withpassword'tcl';
createuserU5withpassword'tcl';
createuserU6withpassword'tcl';
createuserU7withpassword'tcl';
以system的身份进入企业管理器,查看用户
以U1的身份进入查询分析器,进行任意查询。
SELECT*FROM"S-C"."STUDENT"
打开企业管理器设置u1的权限,以U1的身份进入企业管理器,把查询模式S-C的权限授给用户U1。
SELECT*FROM"S-C"."STUDENT"
以U1的身份进入企业管理器,把查询Student表的权限授给用户U1。
SELECT*FROM"S-C"."STUDENT"
注意:
实验中若出现
则可以用语句dropownedbyU1删除它
不懂删除的话,看kingbase用户手册
例4.2把查询student表与course表的权全部操作限授给用户u2与u3。
SELECT*FROM"S-C"."STUDENT","S-C"."COURSE"
以system的身份进入查询分析器,把对Student表与Course表全部操作权限授予用户U2与U3。
GRANTALLPRIVILEGES
ONTABLE"S-C"."STUDENT","S-C"."COURSE"
TOU2,U3;
以U2/U3的身份进入查询分析器,进行任意查询。
SELECT*FROM"S-C"."STUDENT","S-C"."COURSE"
例4.3把对表SC的权限授给所有用户.
以U3的身份进入查询分析器,进行任意查询。
SELECT*FROM"S-C"."SC"
以system的身份进入查询分析器,把对表SC的查询权限授予所有用户。
GRANTSELECT
ONTABLE"S-C"."SC"
TOPUBLIC;
以U3的身份进入查询分析器,进行任意查询。
SELECT*FROM"S-C"."SC"
例4.4把查询student表与修改学生学号的权限授给用户u4。
以system的身份进入查询分析器,对student表插入一条新的学号
INSERTINTO"S-C".STUDENT(SNO,SNAME,SSEX,SDEPT,SAGE)
VALUES('201215128','陈冬','男','IS',18);
以U4的身份进入查询分析器,修改插入的学号
UPDATE"S-C".STUDENT
SETSNO=200215128
WHERESNO='201215128';
SELECT*FROM"S-C".STUDENT;
以system的身份进入查询分析器,把查询Student表与修改学生学号的权限授予用户U4。
SELECT*
FROM"S-C"."STUDENT";
GRANTUPDATE(SNO),SELECT
ONTABLE"S-C"."STUDENT"
TOU4;
以U4的身份进入查询分析器,进行任意查询。
UPDATE"S-C".STUDENT
SETSNO=200215128
WHERESNO='201215128';
SELECT*
FROM"S-C".STUDENT;
例4.5把对表SC的INSERT权限授给用户u5,并允许将此权限再授予其他用户。
以U5的身份进入查询分析器,进行任意查询。
INSERTINTO"S-C".SC(SNO,CNO,GRADE)
VALUES('201215128','1',NULL);
SELECT*FROM"S-C"."SC";
以system的身份进入查询分析器,把对表SC的INSERT权限授予U5用户,并允许将此权限在授予其他用户。
GRANTINSERT
ONTABLE"S-C"."SC"
TOU5
WITHGRANTOPTION;/*此语句,U5不仅有对表SC的INSERT权限,还可以传播此权限。
*/
以U5的身份进入查询分析器,进行任意查询。
INSERTINTO"S-C".SC(SNO,CNO,GRADE)
VALUES('201215128','1',NULL);
SELECT*FROM"S-C"."SC";
例4.6u5将此权限授给用户u6。
以U6的身份进入查询分析器,进行任意查询。
INSERTINTO"S-C".SC(SNO,CNO,GRADE)
VALUES('201215126','1',NULL);
SELECT*FROM"S-C"."SC";
以U5的身份进入查询分析器,把对表SC的INSERT权限授予U6用户,并允许将此权限在授予其他用户。
GRANTINSERT
ONTABLE"S-C"."SC"
TOU6
WITHGRANTOPTION;/*此语句,U5不仅有对表SC的INSERT权限,还可以传播此权限。
*/
以U6的身份进入查询分析器,进行任意查询。
INSERTINTO"S-C".SC(SNO,CNO,GRADE)
VALUES('201215126','1',NULL);
SELECT*FROM"S-C"."SC";
例4.7同样,u6还可以将此权限授给用户u7。
以U6的身份进入查询分析器,把对表SC的INSERT权限授予U7用户。
GRANTINSERT
ONTABLE"S-C"."SC"
TOU7;
以U7的身份进入查询分析器,把对表SC的INSERT权限授予U2用户。
GRANTINSERT
ONTABLE"S-C"."SC"
TOU2;
注意:
因为U6未给U7传播的权限,因此U7不能再传播此权限。
例4.8把用户U4修改学生学号的权限收回。
以system的身份进入查询分析器,把用户U4修改学生学号的权利收回。
REVOKEUPDATE
ONTABLE"S-C"."STUDENT"
FROMU4;
以U4的身份进入查询分析器,对学生学号进行修改。
UPDATE"S-C".STUDENT
SETSNO=201215128
WHERESNO='200215128';
例4.9收回所有用户对表SC的查询权限。
以system的身份进入查询分析器,收回所有用户对表SC的查询权限。
REVOKESELECT
ONTABLE"S-C"."SC"
FROMPUBLIC;
以U1的身份进入查询分析器,对表SC进行任意查询
SELECTgradeFROM"S-C"."SC";
例4.10把用户U5对SC表的INSERT权限收回。
以system的身份进入查询分析器,把用户U5对SC表的INSERT权限收回。
REVOKEINSERT
ONTABLE"S-C"."SC"
FROMU5CASCADE;
以U5的身份进入查询分析器,对表SC进行INSERT权限测试。
INSERTINTO"S-C".SC(SNO,CNO,GRADE)
VALUES('201215152','1',80);
SELECT*FROM"S-C"."SC";
例4.11通过角色来实现将一组权限授予一个用户。
以system的身份进入查询分析器,创建一个角色
CREATEROLER1;
以system的身份进入企业管理器,查看用户
刚刚创建的角色是空的,没有任何内容。
我们使用grant语句,使角色R1拥有Student表的SELECT、UPLECT、INSERT权限
GRANTSELECT,UPDATE,INSERT
ONTABLE"S-C"."STUDENT"
TOR1;
将这个角色授予U7,使他们具有角色R1所包含的全部权限。
以U7的身份进入查询分析器,对Student表进行查询
SELECT*FROM"S-C"."STUDENT";
将这个角色授予U7,使他们具有角色R1所包含的全部权限。
GRANTR1TOU7;
以U7的身份进入查询分析器,对Student表进行查询
SELECT*FROM"S-C"."STUDENT";
也可以一次性地通过R1来收回U7的这三个权限。
以system的身份进入查询分析器,一次性地通过R1来收回U7的这三个权限。
REVOKER1
FROMU7;
以U7的身份进入查询分析器,对Student表进行查询
SELECT*FROM"S-C".STUDENT
;
CREATEROLER1;
CREATEROLE王平;
CREATEROLE张明;
CREATEROLE赵玲;
GRANTSELECT,UPDATE,INSERT
ONTABLE"S-C"."STUDENT"
TOR1;
GRANTR1
TO王平;
GRANTR1
TO张明;
GRANTR1
TO赵玲;
REVOKER1
FROM王平;
例4.12角色的权限修改。
以system的身份进入查询分析器,增加角色R1对Student表的DELETE权限。
GRANTDELETE
ONTABLE"S-C"."STUDENT"
TOR1;
将这个角色授予U7,使他们具有角色R1所包含的全部权限。
GRANTR1TOU7;
以U7的身份进入查询分析器,进行对Student表的DELETE权限测试。
DELETEFROM"S-C".STUDENT
WHERESNO='200215128';
SELECT*FROM"S-C".STUDENT;
例4.13减少角色R1对Student表的select权限
以system的身份进入查询分析器,减少角色R1对Student表的select权限。
REVOKEselectONTABLE"S-C"."STUDENT"FROMR1;
以U7的身份进入查询分析器,进行对Student表的select权限测试。
SelectsnameFROM"S-C".STUDENT
WHERESNO='200215128';
5实验结果及总结
1.实验的时候注意进入查询分析器的用户,不同的用户会有不同的查询结果。
2.创建或者删除用户角色的时候要刷新,不然不会自己更新。
3.注意在对权限的授予与收回的时候,要对比前后的不同结果,说明语句的执行结果。
4.WITHGRANTOPTION;此语句,U5不仅有对表SC的INSERT权限,还可以传播此权限。
如果没有这条语句,则不能再传播此权限。
5.可以看用户手册研究企业管理器的更多功能,还有kingbase的其它各种功能。