数据库完整性与安全性实验报告

合集下载

数据库安全性和完整性实验【模板范本】

数据库安全性和完整性实验【模板范本】

实验9:数据库安全性实验一、实验目的加深对数据库安全性的理解,并掌握SQL Server中有关用户、角色及操作权限的管理方法.二、实验内容1.数据库的安全性实验。

在SQL Server企业管理器中,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色的管理,设置和管理数据操作权限.三、实验原理和步骤1.设置SQL Server的安全认证模式,选择混合模式。

右键服务器属性—安全性:选择SQL Server和Windows身份验证模式.重启服务,生效。

2.账号:sa账号登录3.登录帐号的管理1)将Windows帐号添加到SQL Server 2005中创建操作系统用户-4.数据库用户的管理1)dbo用户;查看banking数据库的dbo用户,查看用户权限。

2)U1用户;创建banking数据库的U1用户,查看用户权限。

5.权限管理1)赋予所创建的U1用户db_datareader角色,查看用户权限2)赋予所创建的U1用户db_datawriter角色,查看用户权限3)赋予所创建的U1用户db_owner角色,查看用户权限4)两种方法赋予所创建的U1用户对banking数据库表customer的select权限,验证并写出sql语句5)两种方法赋予所创建的U1用户对banking数据库表branch的select和对branch_name修改的权限,验证并写出sql语句6)把对loan表的update权限授予所创建的U1用户用户,并允许将此权限再授予其他用户,验证并写出sql语句7)两种方法回收所创建的U1用户对banking数据库表customer的select权限,验证并写出sql语句8)两种方法回收所有用户对banking数据库表loan的update权限,验证并写出sql语句四、实验报告要求要求写出如下设计报告:1.用Transact—SQL写出实验操作的语句2.实验步骤和实验结果。

数据库完整性实验总结(必备6篇)

数据库完整性实验总结(必备6篇)

数据库完整性实验总结第1篇时间流水,短短的两周就流逝了,回想在这两周的实训生活,我从单一,片面的学习进入了全面,系统的学习,学好它更是一项大任务。

而对于如何学好它,光靠理论知识是远远不够的,_同志曾经就说过“实践是检验真理的唯一标准”!正如大师傅炒菜,知道炒菜的程序,主料、调料一清二楚,不真正掌勺,永远也成不了“大厨”。

而学校给我们提供了这样一个机会,让我们自己_掌勺_,使我们从实践中,加深了对数据库的理解。

经过这次的实训,我们对数据库有了更深的了解,从书面的明白到实践的理解,接触到了自己以前没有接触到的东西,并让我加深了数据库知识的学习和理解,也使我进一步了解数据库,这次实训可以为我们以后真正的实际数据库系统设计提供很好的借鉴。

更使我明白遇到什么挫折,不气馁,不放弃,勇于探索,才会让自己离成功越来越近!俗话说:知之为知之,不知为不知!不要不懂装懂,有什么不懂的要敢于向_知之者_请教!知识是慢慢积累而成的,我们学习不仅要学习理论知识,而实践也是非常重要的,只有当两者结合,才会获得收获!我们这次实习对我们的认识起到了很大的启发作用,使我们以后在接触数据库的过程中少走点弯路。

也使我们对人生和社会有了更清楚的认识,任何的成功都有艰辛和汗水铺出来的,没有那么多的意外收获。

我们要学的还有很多,要接触的还不知道有多少,以后的路还很漫长,我相信我会更加努力的,把握现在,为自己的未来而奋斗,展开双翅飞向美好的未来!在这里很感谢xxx老师给我们传授了这么多的知识和经验,让我们在毕业之际更好的填补自己的不足。

数据库完整性实验总结第2篇在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。

数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。

数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。

数据库安全性及完整性 实验报告

数据库安全性及完整性 实验报告
GRANT R1TO U7;
以U7的身份进入查询分析器,进行对Student表的DELETE权限测试。
DELETEFROM "S-C".STUDENT
WHERE SNO='200215128';
SELECT * FROM "S-C".STUDENT;
例4.13减少角色R1对Student表的select权限
实验报告
课程名称:数据库系统概论
学院:工程学院
专业:
年级:班级:
姓名:学号:
指导教师:
年月日
教务处制
实验名称:
数据库安全性及完整性
时间:2015-12-17
地点:三教205机房
班组:
教师评语
成绩
教师签名
实验报告
1实验目的
1.熟悉通过SQL对数据进行安全性控制。
2实验工具KingbaseES
KingbaseES及其交互式查询工具ISQLW。
GRANT R1TO U7;
以U7的身份进入查询分析器,对Student表进行查询
SELECT *FROM "S-C"."STUDENT";
也可以一次性地通过R1来收回U7的这三个权限。
以system的身份进入查询分析器,一次性地通过R1来收回U7的这三个权限。
REVOKE R1
FROM U7;
以U7的身份进入查询分析器,对Student表进行查询
5.可以看用户手册研究企业管理器的更多功能,还有kingbase的其它各种功能。
GRANT SELECT
ON TABLE "S-C"."SC"
TO PUBLIC;

数据库原理实验报告-实验三-数据完整性与安全性控制

数据库原理实验报告-实验三-数据完整性与安全性控制

《数据库原理》实验报告题目:实验三数据完整性与安全性控制学号班级日期2016.10.18一、实验容、步骤以及结果1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。

(18分,每小题3分)(1)非空约束:为出生日期添加非空约束。

非空约束:取消表S中sbirth的勾。

可能需要重建表。

(2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。

设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命令-->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’-->保存(3)唯一约束:为(sname)添加唯一约束(唯一键),约束名为uk_sname。

唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加-->是否唯一改为‘是’-->名称改为‘us_sname’-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。

设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表和C表,外键名称分别为fk_sno,fk_cno。

2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint)删除约束:单击数据库Student-->表-->单击S-->展开键、约束。

数据库安全性及完整性实验报告

数据库安全性及完整性实验报告

实验报告
课程名称:数据库系统概论
学院:工程学院
专业:
年级:班级:
姓名:学号:
指导教师:
年月日
教务处制
..
以U1的身份进入查询分析器,进行任意查询。

SELECT* FROM"S-C"."STUDENT"
SELECT* FROM"S-C"."STUDENT"
例4.2 把查询student表和course表的权全部操作限授给用户u2和u3。

SELECT* FROM"S-C"."STUDENT","S-C"."COURSE"
例4.3把对表SC的权限授给所有用户.
以U3的身份进入查询分析器,进行任意查询。

例4.12角色的权限修改。

以system的身份进入查询分析器,增加角色R1对Student表的DELETE权限。

GRANT DELETE
ON TABLE "S-C"."STUDENT"
TO R1;
将这个角色授予U7,使他们具有角色R1所包含的全部权限。

数据库的完整性和安全性实验报告

数据库的完整性和安全性实验报告

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(1)掌握数据库约束的概念;(2)熟悉SQL SERVER 的完整性约束技术。

(3)了解SQL SERVER 的违反完整性处理措施。

(4)了解登录账户的管理理念与具体方法。

(5)了解数据库用户的管理的要则。

(6)了解用户权限管理的内涵与方法。

二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤(一)测试完整性运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。

然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。

1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2)PRIMARY KEYdnameV ARCHAR(20) NOT NULL,UNIQUE(1)增加数据INSERT INTO dept V ALUES('D1','计科系');----正常插入INSERT INTO dept V ALUES('D2','电信系');----正常插入INSERT INTO dept V ALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则INSERT INTO dept V ALUES('D2','机械系'); ----违反dno 主键(UNIQUE )INSERT INTO dept V ALUES('D3',NULL); ----违反dname 的NOT NULL 规则INSERT INTO dept V ALUES('D3','计科系'); ----违反dname 的UNIQUE 规则INSERT INTO dept V ALUES('D3','机械系');----正常插入(2)删除数据DELETE FROM dept WHERE dno='D3';----正常删除(3)修改数据UPDA TE dept SET dname='计算机科学系' WHERE dno='D1';----正常修改UPDA TE dept SET dname='电信系' WHERE dno='D1'; ----违反dname的UNIQUE规则UPDA TE dept SET dname=NULL WHERE dno='D1'; 违反dname的UNIQUE规则2.对student表进行数据增删改,并检查完整性规则Student已存在完整性规则如下:sno CHAR(2) PRIMARY KEYsname V ARCHAR(20) NOT NULL,ssex CHAR(2) NOT NULL, CHECK(ssex in('男','女'))sage INT NOT NULL,dno CHAR(2) NOT NULL, FOREIGN KEY REFERENCES dept(dno)ON DELETE CASCADE ON UPDATE CASCADE(1)增加数据INSERT INTO student V ALUES('S1','张刚','男',20,'D1');----正常插入INSERT INTO student V ALUES('S2','李梅','女',21,'D2');----正常插入INSERT INTO student V ALUES('S2','吴敏','男',20,'D1'); ----正常插入INSERT INTO student V ALUES(NULL,'吴敏','男',20,'D1'); ----违反sno 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','男',NULL,'D1'); 违反sage 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','M',20,'D1'); 违反ssex 的CHECK规则INSERT INTO student V ALUES('S3','吴敏','男',20,'D3'); ----正常插入INSERT INTO student V ALUES('S3','吴敏','男',20,'D1');----正常插入(2)删除数据DELETE FROM student WHERE sno='S3'; ----正常删除(3)修改数据UPDA TE student SET sname='赵强',dno='D2' WHERE sno='S1'-----正常修改UPDA TE student SET ssex='F' WHERE sno='S1'; -----违反ssex的CHECK 规则UPDA TE student SET sno='S2' WHERE sno='S1'; -----违反sno的主键(UNIQUE)规则UPDA TE student SET dno='D3' WHERE sno='S1'; 违反dno 的外键规则UPDA TE dept SET dno='D3' WHERE dno='D1';----检查dno的外键ON UPDATE规则,观察运行后效果DELETE FROM dept WHERE dno='D2';----检查dno的外键ON DELETE规则,观察运行后效果(二)使用规则实现数据完整性(1)在查询分析器中,利用命令(CREATE RULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。

实验3 MySQL数据库安全性与完整性控制实验实训报告

实验3 MySQL数据库安全性与完整性控制实验实训报告

数据库运维课程实训报告实验3 数据库安全性与完整性控制实验实训名称:成绩教师评语教师签字日期学生姓名学号一、实训目标练习安全性授权方法、安全性和完整性查看的操作方法。

二、实训内容【实验3-1】使用create user创建用户,创建单个用户teacher,创建两个用户teacher1和student。

【实验3-2】通过直接操作MySQL用户表创建用户,创建单个用户teacher2,创建两个用户teacher3和student2(请注意,新版的MySQL可能不支持使用此方法创建新用户)。

【实验3-3】新建一个terminal窗口,使用mysql –u –h -p方式登录teacher。

【实验3-4】再次新建一个terminal窗口,使用mysql –u –h -p方式登录student。

【实验3-5】使用GRANT语句对用户student赋予所有数据库所有表的insert权限和update权限。

【实验3-6】使用GRANT语句对用户student赋予school数据库所有表的select权限。

【实验3-7】使用GRANT语句对用户student赋予school数据库stuinfo表的create 访问权限。

【实验3-8】使用GRANT语句对用户student赋予school数据库stuinfo表的stuno 列上的select访问权限。

【实验3-9】使用GRANT语句对用户student赋予s所有数据库所有表的select访问权限,并设定student每小时最多可使用select操作访问数据库的次数。

【实验3-10】查看表INFORMATION_ER_PRIVILEGES中有关student的信息,查看user表中的内容信息。

【实验3-11】查看表INFORMATION_SCHEMA.SCHEMA_PRIVILEGES,找到student在school数据库下拥有的权限。

【实验3-12】查看表INFORMATION_SCHEMA.TABLE_PRIVILEGES,查找school数据库中stuinfo数据表相关的表权限。

实验五 数据库完整性与安全性实验

实验五   数据库完整性与安全性实验

实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。

2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。

数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。

因此,首先对每个基表删除主键,再添加主键。

实现实体完整性约束。

如下图。

删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。

下图为给sc表添加student和course的外键,实现参照完整性约束。

alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。

(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。

向学生表中插入学号为30201的学生。

由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。

验证了实体完整性约束。

(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验平台及环境
本机为 windows 7 操作系统平台, SQL Server 2008 数据库。
实验内容
完整性实验 (1) 分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约
束; (2) 分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,
验证其实体完整性约束; (3) 向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束; (4) 删除学生表中的所有数据,验证参照完整性约束; (5) 定义存储过程,完成查询某个学生的选课情况,并执行。 (6) 定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加 1;并对其
执行即可得到吴磊学生的选课情况,exec wlxx
6、定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加 1;并对其进行 测试
这里我定义了触发器 dadd,实现功能:当向学生表插入新的一条记录时,将所有学生出生 日期加 1 create trigger dadd on 学生 after insert as begin
学号 31430 的张明同学的信息已经添加到学生表,修改没问题
实验小结
这次做实验收获蛮多的,遇到不明白的上网找资料,看课件,一一迎刃而解,尤其是给同学 讲解时很有成就感。通过这次实验,我对数据库完整性和安全性有了更深一步的认识。以下 是我这次实验遇到的问题和分析总结: 1、设置主键比较容易,但是在设置外键时要注意数据类型的一致性。比如:学生表中学号 数据类型设置 varchar(50),那么选修表中学号的数据类型也应为 varchar(50),否则执 行外键定义操作时会报错。 2、一开始对于datetime数据类型的加减操作有所怀疑,拿不准是直接写update 学生 set 年龄=年龄+1,还是更为复杂的,经过尝试直接+1操作就好,这里要强调的是不要定义为 varchar类型,那样会反受其累。 3、例如存储过程、触发器等等操作按照资料和课件上的讲解一步步来, 例如:create procedure wlxx as…… create trigger dadd on 学生 after insert as
4、将角色赋予(1)中定义的用户,建立用户和角色联系 这里我将刚刚定义好的角色 duxie 赋予(1)中定义的用户 wjh, EXEC sp_addrolemember 'duxie', 'wjh'
执行成功后即建立了用户和角色联系 5、再次用此用户访问学生数据库,并对其中的学生表数据进行修改 再次用 wjh 用户访问学生数据库,发现可以对学生表数据进行修改了, 例如: insert into 学 生 values('31430',' 张 明 ',' 女 ','1980-1-2 00:00',' 计 算 机 ','3146') 执行成功后
执行插入操作时, insert into 学 生 values('31430',' 张 明 ',' 女 ','1980-1-2 00:00',' 计 算 机 ','3146') 报错:
3、创建数据库角色,并授予访问学生数据库的读、写权限 这里我创建了数据库角色 duxie,并授予访问学生数据库的读、写权限 create role duxie grant select,insert on 学生 to duxie grant select,insert on 课程 to duxie grant select,insert on 选修 to duxie 执行成功后可以在对象资源管理器中可以找到它
实验步骤和结果分析
一、完整性实验 1、定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束 alter table 课程 add primary key (课程编号) alter table 选修 add primary key (课程编号,学号) alter table 学生 add primary key (学号) alter table 选修 add foreign key (课程编号) references 课程(课程编号) alter table 选修 add foreign key (学号) references 学生(学号) 结果如下图:
进行测试。 (7) 用 sql 完成以上操作。 安全性实验 (1) 定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限; (2) 分别用 sa 用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改; (3) 创建数据库角色,并授予访问学生数据库的读、写权限; (4) 将角色赋予(1)中定义的用户,建立用户和角色联系; (5) 再次用此用户访问学生数据库,并对其中的学生表数据进行修改。 (6) 用 SQL 语句分别完成以上内容。
2、向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实 体完整性约束 例如:向课程表中插入计算机网络课程, insert into 课程 values('C01','计算机网络','51','3','秋') 但由于课程编号与原表数据有重,故而执行报错:
同理:向学生表中插入张明的信息, insert into 学 生 values('30201',' 张 明 ',' 女 ','1980-1-2 00:00',' 计 算 机 ','3146') 但由于其学号与原表数据有重,故而执行报错:
即验证了参照完整性约束 5、定义存储过程,完成查询某个学生的选课情况,并执行 例如:定义了存储过程 wlxx,用来查询吴磊学生的选课情况, create procedure wlxx as select 学生.学号,姓名,课程名称,学生成绩
from 学生,课程,选修 where 学生.学号='30201' and 学生.学号=选修.学号 and 选修.课程编号=课程.课 程编号 go 创建成功后在对象资源管理器中可以找到它
update 学生 set 年龄=年龄+1 end 执行成功后在对象资源管理器中可以找到它
原学生表的数据为:
可见出生日期都是 1980-01-02 ……,在有触发器 dadd 后, 测试:当向学生表插入新的一条记录时,将所有学values('31430',' 张 明 ',' 女 ','1980-1-2 00:00',' 计 算 机 ','3146')
begin …… end 都还是比较简单的。 4、注意在定义登录帐号时最好加上 default_database=学生选课数据库,否则使默认数 据库设置为master。
default_database=学生选课数据库 create user wjh
for login aaa with default_schema=dbo 由于只有三个表,授权访问学生数据库的读权限, grant select on 学生 to wjh grant select on 课程 to wjh grant select on 选修 to wjh 执行成功后可在对象资源管理器中可以找到它
可见出生日期都加了 1,变为 1980-01-03 ……,即该触发器符合要求 二、安全性实验 1、定义一新的登录帐号、数据库用户,并授予其访问学生数据库的读权限 这里我定义了新的登录帐号 aaa(密码为 123) ,并定义了数据库用户 wjh create login aaa with password='123',
北京邮电大学
实验报告
课程名称 数据库系统原理 实验内容 实验五
实验名:数据库完整性与安全性实验
2012 年 05 月 10 日
实验五 数据库完整性与安全性实验
实验目的
1、通过对完整性规则的定义实现,熟悉了解 sql sever 中完整性保证的规则和实现方法, 加深对数据完整性的理解。 2、通过对安全性相关内容的定义,熟悉了解 sql sever 中安全性的内容和实现方法,加深 对数据库安全性的理解。
2、分别用 sa 用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改 用 sa 用户时,修改学生表数据没有问题, 例如: insert into 学 生 values('31430',' 张 明 ',' 女 ','1980-1-2 00:00',' 计 算 机 ','3146')
用自定义的 wjh 用户时,修改学生表数据会产生问题, 例如:
即验证了其实体完整性约束 3、向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束 例如:向选课表中插入学号为 30201 的同学的某项选课信息, insert into 选修 values('30201','CO6','51')
但由于其课程编号是课程表中没有的,执行报错
即验证了参照完整性约束 4、删除学生表中的所有数据,验证参照完整性约束 使用 delete from 学生 但由于参照完整性的约束,执行报错
相关文档
最新文档