第一篇:实验三 数据库安全性实验报告
一 实验目的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 XP
MicrosoftSQL server Management Studio 2005
4.2 实验内容与完成情况:
--新建数据库
create database work
go
use work
--创建以下两个关系模式,并分别插入相应的数据。
--Worker(职工号,姓名,年龄,职务,工资,部门号)
go
create 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 work
go
--(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 work
go
create 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 work
go
create view Myself as select * from Worker
where 姓名=user;
grant select on Myself to public;
--(d)用户刘星对职工表有select权力,对工资字段具有更新权力;
use work
go
create 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 work
go
create login [张新] with password=N'1234';
create user [张新] for login [张新];
grant all PRIVILEGES on Worker to 张新;
grant all PRIVILEGES on Section to 张新;
--(f)用户周平具有对两个表所有权力(对,插,改,删数据),并具有给其他用户授权的权利;
use work
go
create 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最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
use work
go
create login [杨兰] with password=N'1234';
create user [杨兰] for login [杨兰];
grant view Wage(max(工资),min(工资),avg(工资))
as select max(工资),min(工资),avg(工资)from Worker Group by 部门号; grant select on Wage to 杨兰;
--(2)把上面(a)~(g)的每一种情况,撤销各用户所授予的权力。
use work
go
--注销用户王明,收回权力
revoke select on WOrker from [王明];
revoke select on Section from [王明];
drop user [王明];
drop login [王明];
use work
go
--注销用户李勇,收回权力
revoke select on Worker from [李勇];
revoke select on Section from [李勇];
drop user [李勇];
drop login [李勇]
--撤销用户对自己的记录有select权力
use work
go
revoke select on Myself from public;
drop view Myself cascade;
use work
go
--注销用户刘星,收回权力
revoke select,update(工资)on Worker from [刘星];
drop user [刘星];
drop login [刘星];
use work
go
--注销用户张新,收回权力
revoke alter on table Worker,Section from [张新];
drop user [张新];
drop login [张新];
use work
go
--注销用户周平,收回权力
revoke all PRIVILEGES on table Worker from [周平] cascade;
revoke all PRIVILEGES on Section from [周平] cascade;
drop user [周平];
drop login [周平];
--注销用户杨兰,收回权力
revoke select on Wage from [杨兰];
drop view Wage cascade;
drop user [杨兰];
drop login [杨兰];
use master
go
--删除数据库work
drop database work;
4.3 出现的问题:
在更改连接的时候使用SQL server身份验证登陆,用新建的用户名登陆失败,显示
该用户与可信SQL server无关联
4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题): 启用SQL Server身份验证
SQL Server Management Studio--对象资源管理器--右键 你的服务器(.SQLExpress或者localhost)--属性--安全性--服务器身份验证--SQL Server和Windows身份验证模式,最后重启一下数据库
第二篇:数据库安全性实验报告
实验报告
一、实验题目
数据库安全性
二、实验要求
1)新建一个登陆名为tom,密码为tom001的登陆帐户,登陆后用户名为user_tom,默认情况下该用户具有哪些权限?
2)授予该用户对Student表的查询权限,同时授予其进一步授权其他用户的权利。
3)新建一个登陆名为marry,密码为marry001的登陆帐户,登陆后用户名为user_marry。
4)以tom001登陆,将对Student表的查询权限赋予marry,但不加withgrant option参数。
5)以marry001登陆,尝试将对Student表的查询权限授权给用户guest。
6)新建角色dbnormuser,同时将marry用户指定该角色,授予该角色对Student表的查询权限,再重新执行第5步,结果如何?
7)使用sp_addsrvrolemember系统存储过程将marry用户指定sysadmin固定服务器角色,再重新执行第5步,结果如何?
三、实验内容
按照要求我首先建立了一个模式,1)createlogin tom with password='tom001'
usestudent_course
go
createuser user_tom from login tom with grant option
仅可以对student_course数据库访问,但是不能访问里面的表格。
2)use student_course
go
grant select on Student to user_tom
3)createlogin marry with password='marry001'
use student_course
go
create user user_marry from login marry
4)use student_course
go
grant select on Student to user_marry
5)无法授权
use student_course
go
grant select on Student to guest
6)create role dbnormuser
grant select on Student to dbnormuser
grant dbnormuser
to user_marry可以授权了
7)又不能授权了
四、实验心得
第三篇:数据库的安全性实验报告
西 安 邮 电 大 学
实
验:课程 班
级 学号 学生姓名 任课教师(计算机学院)
课内实验报告
数据库的安全性试验
数据库原理及应用B
网络1203
孟彩霞
:::::
一、实验目的(1)理解SQL Server 2000验证用户身份的过程,掌握设置身份验证模式的方法。(2)理解登录账号的概念,掌握混合认证模式下登录账号的建立与取消方法。(3)掌握混合认证模式下数据库用户的建立与取消方法。(4)掌握数据库用户权限的设置方法。
(5)理解角色的概念,掌握管理的角色技术。
二、实验内容
(1)在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。(2)创建、管理数据库服务器的登录账号。(3)创建、管理数据库用户。(4)管理用户权限。
(5)创建、管理数据库角色。
三、实验环境
SQL Server 2008版本。
四、实验前准备
仔细预习实验内容,理解实验步骤。
五、实验步骤
1.在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。
2.创建、管理数据库服务器的登录账号。用T-SQL语句创建、查看、删除登录账号。
创建一个名为Student、密码为111、使用的默认数据库为JWGL的登录账号。EXEC sp_addlogin ‘student’,’111’,’JWGL’ 查看登录账号
EXEC sp_helplogins 删除登录账号为EXEC sp_droplogins ‘student’
3.创建、管理数据库用户。
用T-SQL语句创建、查看、删除数据库用户。
为数据库JWGL创建一个用户user1,该用户登录SQL Server服务器的账号为wang,登录密码为secret,相应的程序代码为: EXEC sp_addlogin ‘wang’, ‘secret’, ‘JWGL’ GO EXEC sp_grantdbaccess ‘wang’, ‘user1’ 查看数据库用户为EXEC sp_helpuser 删除数据库中的“wang”用户为EXEC sp_revokedbaccess ‘wang’
4.管理用户权限。
使用T-SQL语句完成第3章习题12中(1)~(3)的用户管理和用户权限管理。企业管理器:
(1)允许用户李明对Orders表进行插入、删除操作。
GRANT INSERT ,DELETE ON Orders TO ‘李明’(2)将查询Goods表和修改单价的权限授予用户李四。
GRANT UPDATE(Price),SELECT ON Goods TO ‘李四’
(3)将查询Goods表的权限授予用户文云龙,并允许他将此权限授予他人。
GRANT SELECT ON Goods TO ‘文云龙’
WITH GRANT OPTION
5.创建、管理数据库角色。
如一个小组共3个成员,他们对JWGL具有相同的操作权限,具体权限为对Student,Course表只能进行数据查询;对SC表可以进行查询、修改、删除和插入。
可以创建一个角色(如role),给该角色赐予相应的权限,然后给每个成员建立一个登录账号(如分别为lin,wang,zheng),并将每个成员的登录账号添加为数据库角色role的成员。其代码如下: EXEC sp_addrole ‘role’
GO GRANT SELECT ON Student,course TO role
GRANT SELECT,UPDATE,DELETE,INSERT ON SC TO role GO EXEC sp_addrolemember ‘role’, ‘lin’ EXEC sp_addrolemember ‘role’, ‘wang’ EXEC sp_addrolemember ‘role’, ‘zheng’
删除角色role,然后再使用企业管理器完成以上任务。删除角色role时,必须保证它不包含任务数据库用户,即要先删除其下的所有成员。
EXEC sp_droprolemember ‘role’, ‘lin’ EXEC sp_droprolemember ‘role’, ‘wang’ EXEC sp_droprolemember ‘role’, ‘zheng’ GO EXEC sp_droprole ‘role’
六、实验步骤及部分结果截图
1.混合登陆
2.创建一个名为Student、密码为111、使用的默认数据库为JWGL的登录账号。
EXEC sp_addlogin ‘student’,’111’,’JWGL’
查看登录账号
EXEC sp_helplogins
3.为数据库JWGL创建一个用户user1,该用户登录SQL Server服务器的账号为wang,登录密码为secret
查看数据库用户:
删除数据库中的“wang”用户:
4.(1)允许用户李明对Orders表进行插入、删除操作:
2)将查询Goods表和修改单价的权限授予用户李四:
3)将查询Goods表的权限授予用户王二,并允许他将此权限授予他人
5.创建一个角色(如role),给该角色赐予相应的权限,然后给每个成员建立一个登录账号(如分别为lin,wang,zheng),并将每个成员的登录账号添加为数据库角色role的成员
将lin,wang,zheng加为角色成员:
删除角色role,然后再使用企业管理器完成以上任务
七、心得体会
此次实验是最后一次实验,所以倍加珍惜,本应该一次性在实验室完成的,但中途有事耽误了点时间,所以又在自己电脑上重新做的,以前做实验都没特别认真地做过,有点心理障碍,但当自己真正认认真真做的时候,会发现其实不难,时间也会过的好快,圆满的结束了最后一次实验,却不会结束与数据库的缘分,以后的日子里,我会继续深究这门学科的。
第四篇:数据库实验报告(三)
实验三:Alter表结构修改
实验目的熟悉使用alter语句对表进行修改;熟悉常用的函数。
实验内容
创建学生信息表,其中表名为student,包含字段:number(学号)、name(姓名)
1. 将student表名修改为stu。
2. 向stu表添加id字段,设置为主键且自动递增
3. 向stu表中添加一下3条学生记录。1、012001、张杰2、012002、李连杰3、012003、王五
4. 查询姓名并且将姓和名分别用两列显示(假设学生姓名的第一个字符是姓)。实验程序或截图
实验总结
第五篇:数据库实验2实验报告 2
数据库第二次试验报告
PB10011020 刘思轶
实验内容
本实验有两个可选题目,旅游出行和药品免疫库。本程序即为旅游出行的一个实现。
实验原题摘要如下 数据关系模式:
航班FLIGHTS(String flightNum, int price, int numSeats, int numAvail, String FromCity, StringArivCity);
宾馆房间HOTELS(String location, int price, int numRooms, int numAvail); 出租车CARS(String location, int price, int numCars, int numAvail); 客户CUSTOMERS(String custName);
预订情况RESERVATIONS(String resvKey, String custName, int resvType)系统基本功能:
1.航班,出租车,宾馆房间和客户基础数据的入库,更新(表中的属性也可以根据你的需要添加)。
2.预定航班,出租车,宾馆房间。
3.查询航班,出租车,宾馆房间,客户和预订信息。4.查询某个客户的旅行线路。5.检查预定线路的完整性。6.其他任意你愿意加上的功能。
程序功能
本系统由旅行服务提供商运营,发布在支持PHP + MySQL 的服务器上。系统默认有三个角色,游客、用户和管理员。它们的权限如下
1、游客
查询当前航班、旅馆和出租车的预订情况;
2、注册用户
游客的所用权限; 查询当前预订;
预订航班、旅馆和出租车; 退订航班、旅馆和出租车。打印旅行路线
检查预定路线的完整性。检查航班的完备性
3、管理员
注册用户的所用权限 添加航班、旅馆和出租车信息; 更改航班、旅馆和出租车信息; 注册用户;
更改用户密码和权限; 删除注册用户; 查询用户预订; 取消用户预订; 查询用户旅行线路。
运行平台
本系统在Windows 7 32位 下由PHP-now虚拟的网络运行平台上测试.所需环境为: PHP Apache MySQL PhmyAdmin 环境搭建
打开集成环境php-now文件夹,点击init.cmd,会自动安装所需环境 接着在PHP后台中载入所需要的表
CREATE TABLE FLIGHTS(flightNum varchar(30), price int(6), numSeats int(6), numAvail int(6), FromCity varchar(30), ArivCity varchar(30), PRIMARY KEY(flightNum));CREATE TABLE HOTELS(location varchar(30), price int(6), numRooms int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CARS(location varchar(30), price int(6), numCars int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CUSTOMERS(custName varchar(30), password varchar(50), type varchar(20), PRIMARY KEY(custName));CREATE TABLE RESERVATIONS(resvKey int(20)AUTO_INCREMENT, custName varchar(30), resvType varchar(20), detail varchar(20), PRIMARY KEY(resvKey));
该程序所实现的功能
1.登录功能
登陆者身份分为游客和管理员,在数据库中信息都存放在customer表中,区别为type项不同,管理员为admin,游客为users,决定了权限不同.(1)普通游客登录后界面
(2)管理员登陆后界面
2.查询功能
登入http://127.0.0.1 可以选择查询航班,旅馆和出租车.3.游客-预订功能
4.游客-管理预订信息功能
点击自己的id可进入该功能页面,可以看到自己的旅游路线和预订信息,并可以取消预订.5.游客-检查线路完整性功能
当游客预订了从A到B的机票,则必须检查啊在A定了车(去机场),在B订了车和旅馆(下飞机后坐车和住宿),以此实现完整性检查.在从nanjing to beijing的旅游路线后面点击check,会提示游客还需要在nanjing预订汽车,在beijing预定旅馆。
6.管理员-管理航班,旅馆和出租车表
可以有insert delete 和update 几种操作.delete:
直接点击cancel就可删除相应的信息。insert & update: 点击edit后,程序会自动将想要编辑的行的信息填入供管理员编辑,不用再手动输入。
7.管理员-管理用户表
可以添加新用户,对用户的权限升级,查看用户信息.用户的密码是md5加密保存的。
实验小结
仍然存在的问题: 1.软件界面过于简单,仅仅实现了功能没有在用户可用性上多做考虑。
2.新用户想要登录该系统预订必须要由管理员登入信息后才可操作。缺少了游客注册的功能。
3.不能根据用户的需求点对点得查询相应信息,只能罗列出所有的信息。
实验心得: 1.在搭建PHP环境中遇到了许多问题:如用户权限不够,域名已使用使得Apache-20安装不成功,通过网上查阅资料解决问题。
2.了解到自己对问题的调研还是不足,如旅游系统,各种表之间到底应该怎么建立关系,哪些项是主键,自己建的表中的信息是否已经充足了,参照现实中旅游系统才能不断完善.