数据库原理实验报告-实验三-数据完整性与安全性控制
- 格式:doc
- 大小:1022.50 KB
- 文档页数:18
实验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.实验步骤和实验结果。
实验三数据库安全性实验报告第一篇:实验三数据库安全性实验报告一实验目的1.熟悉通过SQL语句对数据进行安全性控制;2.针对具体应用要求,完成授权和收回权限的操作;二实验工具SQL Server 2005利用SQL Server 2005 SSMS及其SQL查询编辑器。
三实验内容和要求使用SQL对数据进行安全性控制,包括:授权和权力回收。
操作完成后看看已授权的用户是否真正具有授予的数据操作的权力了;权力收回操作之后的用户是否确实丧失了收回的数据操作的权力。
根据以上要求认真填写实验报告,记录所有的实验用例。
具体操作可以参照课件中的实例。
具体操作内容:创建以下两个关系模式,并分别插入相应的数据。
职工(职工号,姓名,年龄,职务,工资,部门号)部门(部门号,名称,经理名,地址,电话号码)(1)请用SQL的Grant和Revoke语句(加上视图机制)完成以下授权定义或存取控制功能,并进行相应的安全性测试;(a)用户王明对两个表有select权力;(b)用户李勇对两个表有insert和delete权力;(c)每个职工只对自己的记录有select权力;(d)用户刘星对职工表有select权力,对工资字段具有更新权力;(e)用户张新具有修改这两个表的结构的权力;(f)用户周平具有对两个表所有权力(对,插,改,删数据),并具有给其他用户授权的权利;(g)用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
(2)把上面(a)~(g)的每一种情况,撤销各用户所授予的权力。
四实验报告4.1 实验环境:Windows XPMicrosoftSQL server Management Studio 20054.2 实验内容与完成情况:--新建数据库create database workgouse work--创建以下两个关系模式,并分别插入相应的数据。
--Worker(职工号,姓名,年龄,职务,工资,部门号)gocreate table Worker(职工号varchar(10),姓名char(10),年龄int,职务 char(15),工资 int,部门号 char(50))--Section(部门号,名称,经理名,地址,电话号码)create table Section(职工号char(10),名称char(10),经理名char(10),地址 char(50),电话 char(15));go--插入部门信息insert into Section values('a001','市场部门','李永','白理工','***');insert into Section values('a002','营销部门','李刚','白理工','***');--插入职工信息insert into Worker values('a001001','王明',20,'市场营销员',2000,'a001');insert into Worker values('a001002','李村',29,'市场营销员',2000,'a001');insert into Worker values('a001003','李永',20,'经理',5000,'a001');insert into Worker values('a002001','罗杰',18,'销售员',2000,'a002');insert into Worker values('a002002','李红',24,'销售员',2000,'a002');insert into Worker values('a002003','李刚',32,'经理',5000,'a002');--查询部门表和职工表的数据select *from Worker;select *from Section;--授权use workgo--(a)用户王明对两个表有select权力;create login [王明] with password=N'1234';create user [王明] for login [王明];grant select on Worker to [王明];grant select on Section to [王明];--插入数据权限测试insert into Worker values('a002004','罗红',28,'销售助理',4000,'a002');--查询数据权限测试select *from Worker;--(b)用户李勇对两个表有insert和delete权力;use workgocreate login [李勇] with password=N'1234';create user [李勇] for login [李勇];grant insert,delete on Worker to [李勇];grant insert,delete on Section to [李勇];--插入数据权限测试insert into Worker values('a002005','罗莉',52,'销售助理',4000,'a002');--查询数据权限测试select *from Worker;--删除权限测试delete Worker from where 职工号='a002001';--(c)每个职工只对自己的记录有select权力;use workgocreate view Myself as select * from Workerwhere 姓名=user;grant select on Myself to public;--(d)用户刘星对职工表有select权力,对工资字段具有更新权力;use workgocreate login [刘星] with password=N'1234';create user [刘星] for login [刘星];grant select,update(工资)on Worker to [刘星];--更新修改权限测试update Worker set 工资=3500 where 职工号='a002001'--查询数据权限测试select *from Worker;--(e)用户张新具有修改这两个表的结构的权力;use workgocreate login [张新] with password=N'1234';create user [张新] for login [张新];grant all PRIVILEGES on Worker to 张新;grant all PRIVILEGES on Section to 张新;--(f)用户周平具有对两个表所有权力(对,插,改,删数据),并具有给其他用户授权的权利;use workgocreate login [周平] with password=N'1234';create user [周平] for login [周平];grant all PRIVILEGES on Worker to 周平with grant option;grant all PRIVILEGES on Section to 周平with grant option;--(g)用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
一、实训目的数据完整性是指数据在存储、处理、传输等过程中保持其准确性和一致性的能力。
数据完整性控制是保证数据质量的重要手段,对于维护企业信息系统稳定运行、保障企业数据安全具有重要意义。
本次实训旨在通过实际操作,让学生掌握数据完整性控制的方法和技巧,提高数据完整性控制能力。
二、实训环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio 20194. 实训数据库:自建数据库三、实训原理数据完整性控制主要包括以下三个方面:1. 实体完整性:保证每个数据记录在数据库中是唯一的,即每个数据记录的主键值不能重复。
2. 字段完整性:保证数据记录中各个字段的值符合数据类型、长度、精度等要求。
3. 引用完整性:保证数据记录之间引用关系的正确性,即外键约束。
四、实训过程1. 创建数据库首先,在MySQL中创建一个实训数据库,用于存储实训数据。
```sqlCREATE DATABASE data_integrity;```2. 创建表在实训数据库中创建一个学生信息表,包括学号、姓名、性别、年龄、班级等字段。
```sqlCREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(20) NOT NULL,gender ENUM('男', '女') NOT NULL,age INT NOT NULL,class VARCHAR(20) NOT NULL);```3. 添加实体完整性约束为学号字段添加唯一性约束,保证每个学生记录的学号是唯一的。
```sqlALTER TABLE students ADD UNIQUE (id);```4. 添加字段完整性约束为年龄字段添加检查约束,确保年龄在1到100之间。
```sqlALTER TABLE students ADD CONSTRAINT chk_age CHECK (age BETWEEN 1 AND 100);```5. 添加引用完整性约束为班级字段添加外键约束,引用班级表的主键。
数据库原理及应用实验报告实验四实验题目:数据控制(安全性和完整性)实验类型:验证_______________________________ 实验地点:软件实验室二系班级:计科系***班_____________________姓名:***______________________学号:***______________________2013年11月10日一、实验项目名称:数据控制(安全性和完整性)二、实验目的和任务:理解SQL Server的用户与权限管理机制,通过企业管理器创建用户,并给定的用户分配权限,并掌握数据库完整性概念,实现实体、参照和自定义约束。
三、实验内容:1.创建数据库ycudata,它包含两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),部门(部门号,名称,经理名,地址,电话号)2.创建用户sqlaa,它对关系模式职工具有查询和删除权限3.创建用户sqlbb,它对关系模式职工和部门具有所有的权限(所有权限的表达)4.对该用户sqlcc授予查找职工关系模式,更新部门关系模式的权限,同时可以将该权限进行传播,并将权限传播给用户sqlaa5.创建用户sqldd,它对关系模式职工修改表结构的权限6.收回用户sqlcc的相应权限,了解sqlaa的权限情况7.创建角色role1,它的权限是对部门关系模式进行查、插、改、删,将用户sqldd 和sqlcc归于角色role1,查看用户的权限8.定义部门和职工关系模式的主键,外键,定义职工年龄不超过60岁,部门名称必须取值唯一以下为选做内容:1.定义用户sqlee,具有从每个部门职工中查看最高工资,最低工资和平均工资的权力,但他不能查看每个人的工资2.在对关系模式定义外键时,分别设置无行动和级连两种方式,并进行数据插入四、实验步骤及截图:1、打开SQL Server 2005,建立连接。
2、创建数据库ycudata,它包含两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),部门(部门号,名称,经理名,地址,电话号)(1)创建职工关系模式:(2)创建部门关系模式:3、创建用户sqlaa,它对关系模式职工具有查询和删除权限(1)创建登录名为work的用户:打开安全性,右击登录名,然后新建一个登录名,点击确定。
可得到最后界面如下:3.以sa用户(DBA)登录,运行教材上4.2.4中的例1~例7对7个新用户授权。
每运行一个例子后,以相应的用户名重新登录,验证新用户是否具有授予的权限。
注:SQL Server中的权限授予与回收命令与教材例题上的细节有所不同,这里只写出在SQL 2000中的权限授予与回收命令语句。
【例1】把查询student表的权限授给用户u1。
GRANT SELECTTO u1;执行完授权语句后,用u1登录,验证其是否已有查询权利。
重新连接数据库,登录界面如下:用u1登录后,执行一条SELECT命令,显示了查询结果如下所示,说明u1已具有了对student表的查询权限。
【例2】把对student表和course表的全部操作权限授予用户u2和u3。
GRANT ALL PRIVILEGESON studentTO u2,u3;GRANT ALL PRIVILEGESTO u2,u3;执行完授权语句后,用u2登录,验证其是否已有所有权利。
用u2登录后,执行两条SELECT命令,显示了查询结果如下所示,说明u2已具有了对student表的查询权限,再执行INSERT命令,DELETE命令,UPDATE 命令,同样可得到结果。
说明u2已具有了对student表和SC表的所有权限。
同u2一样,u3也已具有了对student表和SC表的所有权限。
【例3】把对表SC的查询权限授予所有的用户。
GRANT SELECTON SCTO PUBLIC;【例4】把查询student表和修改学生学号的权限授予用户u4。
GRANT UPDATE(Sno),SELECTON studentTO u4;执行完授权语句后,用u4登录,验证其是否已有相应权利。
用u4登录后,执行一条SELECT命令和一条UPDATE命令,显示了查询结果如下所示,说明u4已具有了对student表的查询权限,和对学生学号的修改权限。
【例5】把对表SC的insert权限授予u5用户,并允许将此权限再授予其他用户。
信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(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:数据库的安全性和完整性实验目的及要求1.掌握实体完整性规则的定义方法;2.掌握参照完整性规则的定义方法;3.掌握用户定义完整性的定义方法;4.掌握数据库安全性控制。
实验环境操作系统:Windows DBMS:SQL Server 2005实验内容有三个关系模式:Student(sno varchar(10) 主键,sname varchar(8), ssex varchar(2) 默认为‘男’, sage int 介于20到50之间, sdept varchar(20));Course(cno varchar(5) 主键, cname varchar(20) 唯一, cpno varchar(5), credit int);SC(sno varchar(10) 主键,Student表的外键, cno varchar(5) 主键,Course表的外键, grade int)。
数据库的完整性(1)利用查询分析器创建上述3个基本表。
(2)删除student表的关于sage 20到50的约束数据库的安全性:用GRANT和REVOKE语句完成以下授权定义或存取控制功能:(1)用户王明对Student表和Course表有SELECT权力;(2)用户李勇对Student表和Course表有INSERT和DELETE权力;(3)用户刘星对Student表有SELECT权力,对Student表的sage字段有更新权力;(4)用户张新具有创建表的权力;(5)用户周平具有对Student表和Course表所有权力,并具有给其他用户授权的权力;(6)回收李勇、张新的权限。
调试过程及实验结果(1)利用查询分析器创建上述3个基本表。
(2)_删除student表的关于sage 20到50的约束(3)用户王明对Student表和Course表有SELECT权力;(4)用户刘星对Student表有SELECT权力,对Student表的sage字段有更新权力;(5)用户张新具有创建表的权力;(6)用户周平具有对Student表和Course表所有权力,并具有给其他用户授权的权力;(7)回收李勇、张新的权限。
实验题目三数据库的安全性
一、实验目的
熟悉SQL Server中有关用户、角色及操作权限的实用,加深学生对数据库安全性的理解。
二、实验内容和要求
1.理解SQL Server的安全控制机制;
2.对SQL Server的登录名、用户和角色进行管理;
3.学习通过SQL语言的数据控制功能,设置和管理数据操作权限;
三、实验主要仪器设备和材料
1.计算机及操作系统:PC机,Windows 2000/XP或更高版本;
2.数据库管理系统:SQL Server 2005或更高版本;
四、实验方法、步骤及结果测试
对teaching数据库完成以下操作。
1.新建登录名“UserA(+学号)”,选择“SQL Server身份验证模式”并设置密码。
设置页面
2.使用“UserA”登录名登录,查看teaching数据库中student表的学生信息。
执行结果
3. 使用“sa”重新登录。
修改“UserA”的属性:服务器角色面板中,勾选
sysadmin 两项;用户映射中,赋予对数据库teaching和master的“db_owner”角色权限。
设置界面设置界面
4. 使用“UserA”登录数据库,查询teaching数据库中student表的学生信息,验证是否
执行结果
在服务器级别上新建两个“SQL Server身份验证”的登录名:login1(学号)、
执行结果
数据库新建两个用户:User1(学号)、Use_2(学号)分别对应login1
五、思考题
1.解释说明SQL Server 中的登录名、用户、服务器角色、数据库角色。
课程实验报告新权力;(4)用户新具有创建表的权力;(5)用户周平具有对Student表和Course表所有权力,并具有给其他用户授权的权力;(6)回收勇、新的权限。
(1)利用查询分析器创建上述3个基本表。
调试过程及实验结果(2)_删除student表的关于sage 20到50的约束(3)用户王明对Student表和Course表有SELECT权力;(4)用户星对Student表有SELECT权力,对Student表的sage字段有更新权力;(5)用户新具有创建表的权力;(6)用户周平具有对Student表和Course表所有权力,并具有给其他用户授权的权力;(7)回收勇、新的权限。
总结此次数据库实验是我认为对自身知识补充最大一次实验,关于数据库的安全性和完整性问题,是数据库十分重要的问题。
数据库的完整性,主要是建立一些表级约束和列级约束条件来使基本表条件更加完整。
但是表级约束和列级约束也存在不同。
虽然效果一样,但是表级约束和列级约束相比灵活性更,所以实验中要求对某些约束条件进行删除更加方便,因此在本次实验中主要采用的时表级约束条件。
除此之外数据库的安全性问题,书上的代码是不能直接使用的。
使用前提是首先要这个用户是存在的,因此在做数据库实验的时候,首先就是创建登录名,一级登录名下面的用户。
只有创建了用户之后,才能对用户进行权利的授予。
附录(1)利用查询分析器创建上述3个基本表。
Create table Student(sno varchar(10),sname varchar(8),ssex varchar(2)default'男',/*默认是男*/sage int,/*年龄介于20-50*/sdept varchar(20),constraint sno1primary key(sno),constraint sage1check(sage between 20 and 50));。
实验题目四、数据库的完整性一、实验目的1、掌握使用约束实现数据完整性的方法;2、掌握使用触发器实现数据完整性的方法;二、实验内容和要求1、设置主键约束、外键约束、唯一约束、非空约束、CHECK约束等;2、使用图形用户界面创建触发器、使用SQL语言创建触发器,实现完整性控制;三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/XP或更高版本;2.数据库管理系统:SQL Server 2005或更高版本;四、实验方法、步骤及结果测试(一)、根据实验一中的基本表,使用约束创建数据完整性。
要求:1、删除teaching中的基本表。
按实验一中的各表的定义,重新创建student表、course1)创建各基本表的先后顺序有什么影响?2)在创建各表过程中,遇到了什么问题,是如何解决的?3、通过“ALERT TABLE”语句,完成下列操作:1)为student表的sname列添加唯一约束,并命名。
2)删除course表的非空约束。
3)为sc表的score列添加约束,取值范围为[0,100]。
4)定义域title_domain,取值为{助教,讲师,副教授,教师},检查SQL Server是否3、检查student表sname列的唯一约束插入新的数据记录对新建的唯一约束进行检查,写出相应的SQL语句,并将检查的执4、检查sc表score列的CHECK约束插入不在定义范围的数据记录检查约束。
写出相应的SQL语句,并将检查执行结果截(二)、通过图形用户界面的方式创建各类约束,定义数据的完整性1、删除sc表的外键约束。
在表设计器中,单击工具栏中的“表和索引属性”按钮,打开2、删除speciality的spname字段唯一约束。
然后在表设计器中,单击工具栏中的“表和3、在表设计器中,单击工具栏中的“表和索引属性”按钮,打开“属性”对话框,在“CHECK 约束”选项中,为teacher表中的title列设置检查约束,定义取值范围为{助教、讲师、副(三)、使用触发器实现数据的完整性1、在student表中创建触发器,实现student和sc表的级联删除。
课程实验报告新权力;(4)用户新具有创建表的权力;(5)用户周平具有对$也~。
M表和。
出$。
表所有权力,并具有给其他用户授权的权力;(6)回收勇、新的权限。
调试过程(1)利用查询分析器创建上述3个基本表。
■sn口5name ssejc idept及实验结庠NUil NULL NULL NULL NULL果CHD cname cpno credit米NULL NULL NULL NULLsno eno- grade米NULL NULL NULL(2)_删除St100 % -4消息命等已(3)用户王udent表的关于sage 20至ij 50的约束成功宾成。
明对Student表和Course表有SELECT权力;笔和 尖型李里:用户 A 用O 於呈利捏眼(t)⑸用户新具有创建表的权力n ri 正接% 一团 □ □ 由揆亘利 口 nFl (6)用户周平具有对$加~巳酎表和Course 表所有权力,并具有给其他用户授权的权力;Create table Student(sno varchar (10),sname varchar (8),ssex varchar (2) default '男’,/*默认是男*/sage int , /*年龄介于 20-50*/sdept varchar (20),constraint sno1 primary key (sno ),constraint sage1 check (sage between 20 and 50) ); create table Course ( 虾 附注 ……i n □ n 的T. db<> 困 □ 选驿 匚 □ □ 士 t 画 阿 □ 空用 B n n =用 Jl-D 囹 画 □ 钊士:荣。
.. (用户 (7)回收勇、新的权限。
权限 援取者 授予 具有授予.. 拒期 创建IML 架里里含 □ □ □ 创建表 □ O n 创懿序集 □ B n 创靓列 □ □ o 创怒市里钊 □ B n ■41 曲dtT 如士口 日 引至的权限田] 总结 此次数据库实验是我认为对自身知识补充最大一次实验,关于数据库的安 全性和完整性问题,是数据库十分重要的问题。
实验3 数据库安全性与完整性控制实验1.实验目的练习安全性授权方法、安全性和完整性查看的操作方法。
2.实验内容【实验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、建立测试环境
为了测试数据库的安全性及完整性,首先我们需要建立一个测试环境,该测试环境包括:安装和配置数据库服务器,建立数据库,建立表、字段,插入一些测试数据,建立客户端访问数据库的程序。
2、测试数据库的安全性
在测试阶段,我们需要测试数据库的安全性,这个测试有两个方面:(1)授权:测试用户是否可以正确访问指定的数据库和表,而不受
限制。
(2)身份认证:测试数据库服务器的安全性,检查服务器是否能够正确实施身份认证,保证只有授权用户可以访问数据库。
3、测试数据库的完整性。
实验报告课程名称:数据库系统概论学院:工程学院专业:年级:班级:姓名:学号:指导教师:年月日教务处制实验名称:数据库安全性及完整性时间:2015-12-17地点:三教205机房班组:教师评语成绩教师签名实验报告1 实验目的1. 熟悉通过SQL对数据进行安全性控制。
2 实验工具KingbaseESKingbaseES及其交互式查询工具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,密码均为tclcreate user U1 with password'tcl';create user U2 with password'tcl';create user U3 with password'tcl';create user U4 with password'tcl';create user U5 with password'tcl';create user U6 with password'tcl';create user U7 with password'tcl';以system的身份进入企业管理器,查看用户以U1的身份进入查询分析器,进行任意查询。
《数据库原理》实验报告
题目:实验三
数据完整性与安全性控制学号班级日期
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-->展开键、约束。
一一删除即可。
用SQL语句新建约束:
3.利用图形用户界面根据上述SC表中的外键定义画出由S,C,SC表构成的数据库关系图。
(5分,提示:选中student -> 数据关系图)
4.用SQL语言删除S表中所创建的缺省约束和外键约束。
(6分,每小题3分)
5.在图形用户界面中创建新登录名以及用户。
(16分)
(1)根据第五版教材第四章第7题,创建数据库company和其中的基本表,并创建
该题中所需要用到的各个用户以及相关的登录名。
(10分)
创建数据库:
创建登录名:
创建数据库用户:
(2)用图形用户界面完成以下的权限赋予:(每小题3分)
a)用户王明对两个表均有Select和Insert的权力。
b)用户勇对职工表具有Select权力,对工资字段具有更新权力。
6.用SQL语句授权和收回权限并对权限加以验证。
(40分,每题20分)
(1)根据第五版教材第四章第7题。
请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
( a )用户王明对两个表有SELECT 权力。
( b )用户勇对两个表有INSERT 和DELETE 权力。
( c ) 每个职工只对自己的记录有SELECT 权力。
( d )用户星对职工表有SELECT 权力,对工资字段具有更新权力。
( e )用户新具有修改这两个表的结构的权力。
( f )用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
( g )用户兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
用户勇希望查询部门表失败
用户勇查询职工表成功
(2)根据第五版教材第四章第8题。
(提示:(c)和(g)小题可创建合适的视图,针对视图进行授权,
(c)小题用CURRENT_USER)
选做实验
1.利用SQL语言创建,验证和删除规则。
(1)创建一个ssex_rule规则(create rule),将其绑定(sp_bindrule)到S表的ssex性别字
段上(请验证该规则生效,保证了输入的性别只能是“男”或者“女”)。
(2)删除ssex_rule规则(注意:规则已绑定到ssex表的性别字段上,需要先解除原有
的绑定sp_unbindrule, drop rule)。
2.利用SQL语言创建,验证和删除默认值。
(1)创建一个ssex_def默认对象(create default),将其绑定(sp_bindefault)到S表的ssex
性别字段上,使其默认值为“男”(请验证该默认值生效)。
(2)删除ssex_def(注意:默认对象已绑定到S表的ssex性别字段上,需要先解除原有的
绑定sp_unbindefault, drop default)。
二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
除了标题容以外,该部分容中还可以写对于实验的一些感受,建议,意见等。
问题1:建立数据库关系图时报错:
解决方法:数据库属性->文件->所有者将自己的电脑账户设置成所有者
问题2:添加了其他用户,但无法用其登录:
在使用sql2008的时候,想利用windows身份集成和sqlserver验证模式,但是登录的时候提示:
已成功与服务器建立连接,但是在登录过程中发生错误。
(provider: 共享存提供程序, error: 0 - 管道的另一端上无任何进程。
)
解决方式如下:
首先选中服务器(右键)->属性->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"
其次展开服务器上的"安全性"->登陆名->选中SA登陆(右键)->状态->登陆修改为启用
最后打开‘程序’-‘所有程序’-‘Microsoft SQL Server 2008 ’-‘配置工具’-‘SQL Server 配置管理器’,在弹出的窗体中,找到‘SQL Server 2008 网络配置’,
把‘MSSQLSERVER的协议’下的“Named Pipes”和“TCP/IP”启动,然后重新启动Microsoft SQL Server 2008即可。
批阅者:
批阅日期:
实验成绩:
批注:。