数据库实验实验13 用户权限管理实验.docx

上传人:b****4 文档编号:12409613 上传时间:2023-04-18 格式:DOCX 页数:20 大小:444.97KB
下载 相关 举报
数据库实验实验13 用户权限管理实验.docx_第1页
第1页 / 共20页
数据库实验实验13 用户权限管理实验.docx_第2页
第2页 / 共20页
数据库实验实验13 用户权限管理实验.docx_第3页
第3页 / 共20页
数据库实验实验13 用户权限管理实验.docx_第4页
第4页 / 共20页
数据库实验实验13 用户权限管理实验.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数据库实验实验13 用户权限管理实验.docx

《数据库实验实验13 用户权限管理实验.docx》由会员分享,可在线阅读,更多相关《数据库实验实验13 用户权限管理实验.docx(20页珍藏版)》请在冰豆网上搜索。

数据库实验实验13 用户权限管理实验.docx

数据库实验实验13用户权限管理实验

实验报告

一、实验目的

掌握SQLServer中有关用户、角色及操作权限的设置方法。

二、实验内容

1.用超级用户登录学生数据库student。

2.建立两个新用户:

用户名stu1,密码stu1(登录名login1);用户名stu2,密码stu2(登录名login2)和用户名stu3,密码stu3(登录名login3)。

3.授予stu1对SCORE具有select和insert权限,授予stu1对student具有select,update,insert和delete权限,授予stu1对Course具有select,update,insert和delete权限。

4.授予stu2对SCORE具有select权限,授予stu2对student具有select权限,授予stu2对Course具有select权限;授予stu2对Course具有更新属性tname的权限。

5.测试授权

◆以用户Stu1登录学生数据库:

(1)查询SCORE、student和Course表中的所有数据;

(2)分别向SCORE、student和Course表中插入一组合法数据;

(3)分别对SCORE、student和Course表更改一个元组;

(4)分别对SCORE、student和Course表删除一个元组。

观察运行结果并分析原因。

◆以用户Stu2登录学生数据库:

(1)分别向SCORE、student和Course表中插入一组合法数据;

(2)更新Course表中课程号为’1’的课程的名称为’人工智能’;

(3)更新Course表中课程号为’1’的课程的学分为3。

观察运行结果并分析原因。

◆以用户Stu1登录学生数据库:

(1)收回stu1对SCORE表的select权限,对student表的update和insert权限,对Course表的delete权限;

(2)查询SCORE、student和Course表中的数据,观察运行结果;

(3)分别向SCORE、student和Course表中插入一组合法数据,观察运行结果;

(4)分别对SCORE、student和Course表更改一个元组,观察运行结果;

(5)分别对SCORE、student和Course表删除一个元组,观察运行结果。

思考Course是否具有delete权限执行效果有何不同?

6.创建数据库角色Myrole,设置访问student表的select和insert权限,并添加用户成员stu3。

以stu3登录查看验证。

7.使用SQL命令完成:

删除登录名login1、login2和login3;删除用户名stu1、stu2和stu3;删除角色Myrole。

三、实验学时

2学时

四、实验设备与环境

--1.Windows平台+SQLServer2005以上版本

--2.建立新用户:

用户名stu1,密码stu1(登录名login1);用户名stu2,密码stu2(登录名login2)和用户名stu3,密码stu3(登录名login3)

createloginlogin1withpassword='stu1';--创建sqlserver登录

createUserstu1forloginlogin1;

createloginlogin2withpassword='stu2';

createUserstu2forloginlogin2;

createloginlogin3withpassword='stu3';

createUserstu3forloginlogin3;

自己创建windows登录:

Lxxx(学号后三位)并添加为数据库用户SXXX

--CREATELOGIN[\]FROMWINDOWS;--windows登录

--3.授予stu1对SCORE具有select和insert权限,授予stu1对student具有select,update,insert和delete权限,授予stu1对Course具有select,update,insert和delete权限,并测试

--授权之前,执行一次相关操作,并查看相关结果,数据自定。

如:

SELECT*FROMSCORE--?

?

?

(以login1登录sqlserver,打开一个查询窗口)

insertscore….

grantselect,insert

onSCORE103

tostu1;

--授权之后,执行一次相关操作,并查看相关结果,数据自定。

SELECT*FROMSCORE--?

?

?

(以login1登录sqlserver,打开一个查询窗口)

insertscore….

Windows/sa登录

login1/login2/login3登录

SELECT*FROMSCORE--?

?

?

insertscore…--?

?

?

grantselect,insertonSCOREtostu1;

SELECT*FROMSCORE--?

?

?

insertscore…--?

?

?

--其他类似

SELECT*FROMstudent

grantselect,update,insert,delete

onstudent

tostu1;

grantselect,update,insert,delete

oncourse

tostu1;

--4.授予stu2对SCORE具有select权限,授予stu2对student具有select权限,授予stu2对Course具有select权限;授予stu2对Course具有更新属性CNAME的权限,并测试

授权之前执行相关操作并查看记过

grantselect

onScore103

tostu2;

授权之后执行相关操作并查看记过

grantselect

onstudent

tostu2;

grantselect

oncourse

tostu2;

grantupdate(CNAME)

oncourse

tostu2;

UPDATEcourse103SETCname='高等数学A'WHERECname='高等数学'

SELECT*FROMcourse103

--5.再次测试授权(选做)

--◆以用户Stu1登录学生数据库:

--

(1)查询SCORE、student和Course表中的所有数据;

select*

fromSCORE103;

select*

fromstudent103;

select*

fromcourse103;

--

(2)分别向SCORE、student和Course表中插入一组合法数据(自定);

InsertintoSCOREvalues(…);

没有权限,然后去给stu1插入权限

然后插入:

Insertintostudentvalues(…);

Insertintocoursevalues(…);

(3)分别对SCORE、student和Course表更改一个元组;

updateSCOREsetDEGREE=…WHERE…;

updatestudentsetSBIRTHDAY…WHERE…

updatecoursesetCNAME=…WHERE…;

--(4)分别对SCORE、student和Course表删除一个元组。

DeletefromSCOREWHERE…

DeletefromstudentWHERE…

DeletefromCourseWHERE…;

--◆以用户Stu2登录学生数据库:

--

(1)分别向SCORE、student和Course表中插入一组合法数据(自定);

insert

intoSCORE

values(…);

insert

intostudent

values(…);

insert

intocourse

values(…);

--

(2)更新Course表中课程号为’3-105’的课程的名称为’人工智能’;

updatecourse

setCname='人工智能'

whereCno='3-105';

--(3)更新Course表中课程号为’3-105’的tno改为804。

updatecourse

settnot=‘804’

whereCno='3-105';

--◆以用户Stu1登录学生数据库:

--

(1)收回stu1对SCORE表的select权限,对student表的update和insert权限,对Course表的delete权限;并测试

revokeselect

onSCORE

fromstu1;

revokeupdate,insert

onstudent

fromstu1;

revokedelete

onCourse

fromstu1;

--

(2)查询SCORE、student和Course表中的数据,观察运行结果;

select*

fromSCORE;

select*

fromstudent;

select*

fromcourse;

--(3)分别向SCORE、student和Course表中插入一组合法数据,观察运行结果;

insert

intoSCORE

values(…);

insert

intostudent

values(…);

insert

intocourse

values(…);

--(4)分别对SCORE、student和Course表更改一个元组,观察运行结果;

updateSCORE

setDEGREE=…WHERE…;

updatestudent

setSBIRTHDAY=….;

updatecourse

setCNAME=…WHERE…;

;

--(5)分别对SCORE、student和Course表删除一个元组,观察运行结果。

delete

fromSCORE

WHERE…;

delete

fromstudent

WHERE…

delete

fromCourse

WHERE…;

--6.创建数据库角色Myrole,设置访问student表的select和insert权限,并添加用户成员stu3。

以stu3登录查看验证。

createroleMyrole;

grantselect,insert

onstudent103

toMyrole;

execsp_addrolememberMyrole,stu3;

select*

fromstudent;

insert

intostudent

values…;

--7.删除登录名login1、login2和login3;删除用户名stu1、stu2和stu3;删除角色Myrole。

droploginlogin1;

droploginlogin2;

droploginlogin3;

dropuserstu1;

dropuserstu2;

dropuserstu3;

droproleMyrole;

8.固定服务器

由于固定服务器是在服务器层次上定义的,因此它们位于从属于数据库服务器的数据库外面。

下表列出了所有现有的固定服务器角色。

固定服务器角色

说明

sysadmin

执行SQLServer中的任何动作

serveradmin

配置服务器设置

setupadmin

安装复制和管理扩展过程

securityadmin

管理登录和CREATEDATABASE的权限以及阅读审计

processadmin

管理SQLServer进程

dbcreator

创建和修改数据库

diskadmin

管理磁盘文件

系统过程用来添加或删除固定服务器角色成员:

sp_addsrvrolemember

如:

sp_addsrvrolemember'LOGIN1',''sysadmin''

sp_dropsrvrolemember

如:

sp_dropsrvrolemember'LOGIN1','sysadmin'

(1)添加login2为固定服务器角色dbcreator成员,并验证相关权限(创建修改删除数据库(自定))

注意:

您不能添加、修改或删除固定服务器角色。

另外,只有固定服务器角色的成员才能执行上述两个系统过程来从角色中添加或删除登录账户。

创建一个登录,并添加到某固定服务器角色成员,测试其权限,如dbcreator。

9.固定数据库角色

固定数据库角色在数据库层上进行定义,因此它们存在于属于数据库服务器的每个数据库中。

下表列出了所有的固定数据库角色。

固定数据库角色

说明

db_owner

可以执行数据库中技术所有动作的用户

db_accessadmin

可以添加、删除用户的用户

db_datareader

可以查看所有数据库中用户表内数据的用户

db_datawriter

可以添加、修改或删除所有数据库中用户表内数据的用户

db_ddladmin

可以在数据库中执行所有DDL操作的用户

db_securityadmin

可以管理数据库中与安全权限有关所有动作的用户

db_backoperator

可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)

db_denydatareader

不能看到数据库中任何数据的用户

db_denydatawriter

不能改变数据库中任何数据的用户

除了上表中列出的固定数据库角色之外,还有一种特殊的固定数据库角色,名为public,这里将首先介绍这一角色。

public角色

public角色是一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。

它为数据库中的用户提供了所有默认权限。

这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。

public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。

系统过程用来添加或删除固定数据库角色成员:

sp_addrolemember

将安全帐户作为当前数据库中现有数据库角色的成员进行添加。

用法

sp_addrolemember[@rolename=]'role',    [@membername=]'security_account'

EXECsp_addrolemember'db_ddladmin','dbuser1'

sp_droprolemember

从当前数据库中的角色中删除安全帐户。

语法

sp_droprolemember[@rolename=]'role',    [@membername=]'security_account'

EXECsp_droprolemember'db_ddladmin','dbuser1'

创建一个数据库用户,并添加到某固定数据库角色成员,测试其权限,如db_ddladmin。

(2)添加stu3固定数据库角色db_ddladmin成员,并验证相关权限(创建修改删除表(自定),添加修改删除数据)

五、实验小结:

1、实验一开始login1登录不了,一直在找原因,后来在网上看到文章,具体解决办法如下:

然后重启

2、实验5中插入不了,有一些外键约束,不知道这个怎么搞,下来再研究一下。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1