第一篇:實驗三 數據庫安全性實驗報告
一 實驗目的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.了解到自己對問題的調研還是不足,如旅游系統,各種表之間到底應該怎么建立關系,哪些項是主鍵,自己建的表中的信息是否已經充足了,參照現實中旅游系統才能不斷完善.