实验三:SQL SERVER20052008 账户及权限管理.docx

上传人:小飞机 文档编号:5175100 上传时间:2023-06-11 格式:DOCX 页数:20 大小:803.28KB
返回 下载 相关 举报
实验三:SQL SERVER20052008 账户及权限管理.docx_第1页
第1页 / 共20页
实验三:SQL SERVER20052008 账户及权限管理.docx_第2页
第2页 / 共20页
实验三:SQL SERVER20052008 账户及权限管理.docx_第3页
第3页 / 共20页
实验三:SQL SERVER20052008 账户及权限管理.docx_第4页
第4页 / 共20页
实验三:SQL SERVER20052008 账户及权限管理.docx_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《实验三:SQL SERVER20052008 账户及权限管理.docx》由会员分享,可在线阅读,更多相关《实验三:SQL SERVER20052008 账户及权限管理.docx(20页珍藏版)》请在三一办公上搜索。

1、实验三:SQL SERVER2005/2008账户及权限管理1、实训目的熟悉SQL Server中安全主题、安全对象以及权限的概念掌握账户创建以及权限授予撤销的T-SQL语法熟悉架构的概念、用途以及创建架构的方法熟悉登录账户和数据库用户之间的区别2、实验准备专业实验室机房、SQL Server 2008R2企业版、Word、Visio3、相关知识介绍(1)、SQL Server 账户SQL Server中的账户属于安全主体的范畴,根据账户的作用范围,存在着“登 录账户”和“数据库用户”两种类型的账户。其中登录账户被设计成只是进ASQL Server服务器实例的一种账户,并非想使用它直接访问实例

2、下的数据库,在使用 登录账户进入服务器实例后,如果想访问实例下某个数据库,还必须将登录账户 映射到该数据库中的一个数据库用户,最后以该数据库用户的身份访问数据库中 的对象。在使用登录账户登录SQL Server服务器实例的过程中,系统首先要对所使用 的登录账户及其密码是否有效进行检查(称为“身份验证”),以避免非法用户的 访问。身份验证的工作根据设置既可以由Windows进行也可以由SQL Server来进 行。SQL Server的登录账户是SQL Server服务器实例级别的安全主体,无论 windows级别的安全主体还是数据库级别的安全主体,都需要和它建立映射关 系,以便数据库的正常访问

3、。(2)、登录账户与数据库用户的映射过程除了 windows账户需要映射到登录账户外,各数据库中的用户也需要映射 到登录账户才能实现数据库的正确访问。在设置登录账户和数据库用户的映射关 系时,可以将一个登录账户设置为同时与多个数据库中的用户相映射。但是一个 登录账户在一个数据库中只能和该数据库的一个用户相映射。(3)、架构(Schema)在SQL Server2005/2008中,架构是存放数据库对象的容器,用于将数据库中的对象按 其性质、用途、功能等在逻辑上进行分类,逻辑上不同类的数据库对象存储在不同的架构下。 架构同数据库对象之间的关系有点像Windows中的文件夹和文件的关系一样。在Wi

4、ndows 中,一个文件夹可以包含多个不同类型的文件,而一个文件只能存在于一个文件夹下。同样, 一个架构可以包含多个不同类型的对象,而一个对象只能存在于一个架构之下。而数据库用 户同架构之间则是一种拥有和被拥有的关系,一个用户可以拥有零个或多个架构,而一个架 构只能且必须被一个用户所拥有,数据库中不存在没有拥有者的架构。用户拥有某个架构, 表明该用户对该架构具有执行ALTER、CONTROL、SELECT、UPDATE等十多种系统预定 义操作的权力,该用户基本上可以对架构本身以及架构中包含的对象执行任何操作。数据库 用户除了可以拥有架构之外,还必须为其指定一个默认架构,默认架构是用户默认的一个

5、“工 作区域”,用户在访问(比如创建、查询等)数据库对象时如果没有明确指出对象所处的架 构,就在这个默认的“工作区域”开始工作。一个架构可以被多个用户作为其默认架构,该 架构实际上成了这些用户公共的“默认区域”。在数据库中创建用户时,如果没有显式指定 其默认架构,系统自动将dbo架构作为该用户的默认架构,因此dbo架构是系统准备为用户 指定的默认“公共区域”,这也是其存在的主要目的。4、实验步骤及内容登录账户、数据库用户以及权限综合实验要求: 在windows操作系统中创建一个新的账号administrator2,让其隶属于users组。 基于 windows账户administrator2,

6、创建一个与之相映射的SQL Server登录账户“MAJIANMINGadministrator2”。 以新创建的登录账户“ MAJIANMINGadministrator2 ”登录SQL Server实例,尝试访问 该登录账户的默认数据库“master”,并观察master数据库中与登录账户“MAJIANMINGadministrator 2” 相映射的数据库用户。 尝试访问非默认的非系统数据库“AdventureWorks2008R2”,分析不能访问该数据库的 原因。 给“ AdventureWorks2008R2”数据库下的用户guest授予连接数据库的权限(connect权限), 然后

7、再次以“ MAJIANMINGadministrator 2”登录账户登录实例并访问数据库 AdventureWorks2008R2,看能否成功。 在“AdventureWorks2008R2”数据库下创建一个新的数据库用户AW_User1,并将其映 射到登录账户。 使用该数据库用户AW_User1访问AdventureWorks2008R2,查看登录账户和数据库用户 映射情况。 使用AW_User1身份在AdventureWorks2008R2创建表t1,并在表中插入测试数据。 将AW_User1用户加入到db_owner数据库角色,使其成为该数据库角色的成员使用AW_User1 身份在Ad

8、ventureWorks2008R2中创建新的架构AW_User1_Schema,并将 该架构作为自己的默认架构,在该架构下创建表t2,并将db。架构下的t1表转到 AW_User1_Schema架构下。操作步骤:第一步:实验前准备工作(1):创建windows账户administrator?,并让其隶属于users组。确定取消(2):以系统管理身份登录SQL SERVER,创建一个新的数据库,用于后面的测试(注意:为了确保连接的是本机的SQL实例,红色园圈处可以使用本机IP地、本机主机 名、localhost、127.0.0.1 等几种方式。)确定即可完成新数据库Mydatabasel的创建

9、。(3):修改登录帐户sa的密码,以便于后面的测试连接但)暮 囱- J localhost (SQL Server 9.0.3042 - STV65student)-一J数据库+ 一J系统数冤库+ 一J数据库快照-一J安全性-一J登录名务 EUILTINVAdmini strators R HT AUTHORITYSYSTEMsa+贸ETU 贸ETU 忿|ETU & STU Ca服务器 _J凭据 服务器对置 复制 管理新建登录名编写登录脚本为危)报表重命名册除刷新(I)属性d)I2O$MSSQLSERVERI2O$MSSQLSERVER:STU20$MSSQLSERVERNoti fi cat

10、SQL Serve修改成自己的密码后确定即可。第二步:基于windows账户administrator?,创建一个与之相映射的SQL Server登录账户。图形方式创建如下:然后确定,即可创建基于windows帐户administrator2的SQL SERVER登录帐户STU65administrator结果如下:localhost CSQL Server 9. 0. 3042 - STU65student)一J数据库一J安全性-1 D登录名 BUILTINVAdmimstrators沃 NT AUTHORITYSYSTEM.气sa STU20SQLServer2005MSFTEUser$S

11、TU20$MSSQLSERVER STU20SQLServer2005MSSQLUser$STU20$MSSQLSERVER STU20SQLServer2005SQIAgentUser$STU20$MSSQLSERVERR STU65.adniin.istratorZ+ 一J服务器角色+ 一J凭据吕吕国田田田田田服务器对象复制管理Nuti fi cati on Servi cesSQL Server 代理(请大家注意: 这是登录帐户STU65student在创建新登录帐户STU65administrator2)命令方式创建如下:(如果用图形方式创建了登录帐户,就不需要再使用命令方式了-以sa

12、登录账户或windows管理员身份登录SQL Server实例-在新的查询分析器中输入以下命令创建新的SQL Server登录账户MAJIANMINGadministrator2”USE masterGOCREATE LOGIN STU65administrator2 FROM WINDOWS WITHDEFAULT_DATABASE=masterGO从上图观察,新的登录账户“STU65administrator2”创建成功。第三步:以新创建的登录账户“STU65administrator2”登录SQL Server实例,检查它与各 个数据库在数据库用户在映射情况。尝试访问该登录账户的默认数据

13、库“ master”,并观察master数据库中与登录账户 “ STU65administrator 2”相映射的数据库用户。Use master goselect distinct hostname,loginame, name as user_name,program_name from master.sysprocesses a left join sysusers b on a.uid=b.uidwhere hostname!=* and islogin=1goUm 已 inast 已 izm已 1 已ut. clist iliet hostn;3irie ,r logiii;airi

14、E r ii;ain已 as user_ii;ain已口r ugr;3ii_ii;airi已 f roin inast-Eiz n n sysprocessps a left, join sysusers toon a n uicl=l:i n uidwhere host.ii:airiE ! = 1 1 and islogin= 1go J结果L*消息hostname loginameuser_name program_nameSTU65S TIESwdiriini 或rmt顷2guestMicrosoft SQL Server Management Studio -查ifil可以清楚的发现

15、“Microsoft SQL Server Management Studio -查询”这个程序在访问master 数据库时,是将该数据库用户guest与登录账号“STU65administrator2”相映射。 尝试访问非默认的数据库“Mydatabase1”,分析不能访问该数据库的原因。us e iriydat. ato as e 1go口匚二二二i二二|叫一二二二消息消息泌,级别皿状态,第行、-二服务器主阵STU6S- administrator2无法在当前安全上下文下访问数据库My膈匕ah点w 1即:STU65administrator2在访问Mydatabase1时出现下列提示:不能

16、访问的原因:是因为登录帐户STU65administrator2映射到了 Mydatabase1数据库下的 guest用户,而uest用户默认是没有connect权限的;所以导致Mydatabase1不能访问。 可以发现,在 Mydatabase1数据库3”安全性”3”用户”下有:dbo、guest、 INFORMATION_SCHEMA、sys这4个默认存在的数据库用户。其中,dbo用户只能和sa 登录账户映射;另外两个未知;第四步:数据库用户dbo给数据库用户guest授予权限 请sa登录帐户所映射的dbo数据库用户给“Mydatabasel”数据库下的用户guest授予连接 数据库的权限

17、(connect权限)。使用SA登录账户,新建一个到SQL Server实例的连接。对象资源管理器 P X连接敏,莪二+ ijj STU65 CSQL Server 9.0.3042 - STUS5adminiStrator2)+ ijj STU65 GQL Server 9.0.3042 - sa)在SA登录账户的会话中,新建查询分析,并输入以下授予语句给Mydatabase1数据库的用户 guest授予 connect权限。USE MydatabaselGOGRANT CONNECT TO guestGO 再次切换到“STU65administrator2”登录账户的会话中,尝试访问数据库

18、Mydatabasel。 use Mydatabasel go注意:上图是在“STU65administrator2”登录账户的会话中进行操作的,这在右边的“对象资源管理器” 窗口中进行了高亮显示,以后涉及到多个会话的,都以此方法高亮显示当前的会话环境。 验证“STU65administrator2”登录账户与Mydatabase1数据库用户的映射关系。use Mydatabaselgo select distinct hostname,loginame, name as user_name,program_name frommaster.sysprocesses a left join sy

19、susers b on a.uid=b.uidwhere hostname!=* and islogin=1 go对象资源管理器P X田 0 STU65 (SQL Server 9. 0. 3042 - STUB 田16STU65 (SQL Server 9.0. 3042 -羿)USE Mydat.:anas巳 1GOGRAI-IT CONNECT TO 目u已muGOus已 Mydat.;anmm已 1goselect distinct- host-f 1 ogin:ainef left- join sysusers bon a uid=b uidwhere hostname 1 = 1

20、1 and islogin=l gonarr旧 as uaeL_ri:siriEz pirograrn_riarr旧f roin mas ter .sysprocessesaSTU65. lydat. . . Query2. sql* STU65. Mydat. . . Queryl. sql*对象资源管理器详细信息回结果q消息hostnameloginameuser_nameprogram_name1_|STU65NT AUTHORITYSYSTEMdboSQLgerit - Generic Refresher2STU 65sadboMicrosoft SQL Server Manageme

21、nt Studio3STU65sadboMicrosoft SQL Server Management Studio 查询4STU65STU65administrator2guestMicrosoft SQL Server Management Studio5STU65STU65administrator2guestMicrosoft SQL Server Management Studio 查询可以发现,登录账户“STU65administrator2”和数据用户guest映射成功。第五步:为数据库Mydatabase 1创建新的数据库用户AW_User1,并人为的指定AW_User1 和登

22、录账户的映射方式在“Mydatabasel”数据库下创建一个新的数据库用户AW_User1,并将其映射到登录 账户 STU65administrator2。使用sa登录账户登录实例,撤销Mydatabase1数据库guest用户的connect权限,消除 该用户的影响。use Mydatabase1gorevoke connect from guestgoSTUBS CSQL Server 9.0.3042 - STUBSTUBS CSQL Server 9.0.3042 - sa)STU65. Ifdat. . . Query2. sql* STUBS Mydat. . . Qu left

23、join syausers b on a uid=b uid where hostname!=11 and islogin 1use Mydatafciasel9口revoke connect from guest go 按照提示给数据库用户AW_User1授予创建表的权限(即:CREATE TABLE权限) 注意:这里是sa给它授予CREATE TABLE权限,需要切换到SA会话中操作。USE MydatabaselGO-授予用户C REATE TABLE权限GRANT CREATE TABLE TO AW_User1GO-查看AW_User1用户的权限状况exec sp_helprotec

24、t username = *AW_User1*GO结果: 再次尝试创建表tl。注意:此操作在“STU65administrator2”登录账户会话下执行。use Mydatabase1 go create table t1 (id int primary key not null, name varchar(20) not null )Go结果:指定的架构名称dbo不存在,或者您没有使用该名称的权限。提示显示,用户AW_User1没有在默认架构dbo下创建表的权限,因此还有授予AW_User1 (安全主体)在dbo (安全对象)上的一些适当权限。 授予AW_User1在dbo上的控制权(CON

25、TROL)注意:这里是sa给AW_User1权限,需要切换到SA会话中操作。USE MydatabaselGO-授予用户AW_User1在dbo上的控制权限GRANT CONTROL ON SCHEMA:dbo TO AW_User1GO执行此语句后,AW_User1拥有了 dbo架构的CONTROL权限。dbo的权限崖):权限授权者授予具有授予.拒绝查看更改跟踪dho更改db u更新db u接管所有权db u控制dbo0列权限().V:显式.:有效 再次尝试创建表tl。use Mydatabaselgocreate table t1(id int primary key not null,

26、name varchar(20) not null )Go-| Adventur eW orks2008R2I _J数据库关系图-一I表+ 一J系统表+ dbo. AWBuildVersion+ _J dbo. D at abas eLog+ _J dbo. ErrorLogBfcldbo. tl | 向表tl中插入数据由于表T1是AW_User1用户所创建,该用户拥有该表,具备该表的众多权限。可以对表进 行诸如:插入、查询、删除、更改等各种操作。insertintot1values(1,xiangmeng)insertintot1values(2,xiangsicheng)insertint

27、ot1values(3,zhangshimeng)goselect * from t1go结果:idname1xiangmeng2xiangsicheng3zhangshimeng 将AW_User1用户加入到db_owner数据库角色,使其成为该数据库角色的成员由于AW_User1只是Mydatabasel数据库中一个普通的用户,其对各种安全对象所具有 的权限非常少。需要Sa等高权限用户授予权限,才能执行相应的操作。将AW_User1加入 到db_owner数据库角色,该用户便自动继承了该数据库角色所具有的一切权限。注意:SA会话中操作。USE MydatabaselGOEXEC sp_ad

28、drolemember ,db_owner, AW_User1GO-查看数据库用户所属数据库角色select DbRole = g.name, MemberName = u.name, MemberSID = u.sidfrom sys.database_principals u, sys.database_principals g, sys.database_role_members mwhere g.principal_id = m.role_principal_idand u.principal_id = m.member_principal_idorder by 1, 2goDbRol

29、eMemberNameMemberSID1db_ownerAW_User10x0105000000000005150000001199B9786C79806975B9755.2db_ownerdbo:山5D5加戋5FEF7匚爵.: 在Mydatabasel中创建新的架构AW_User1_Schema,并将该架构作为自己的默认架构。(在 stu65administrator2 会话中操作)USE Mydatabase1GO-创建新的架构CREATE SCHEMA AW_User1_SchemaGO-更改用户的默认架构ALTER USER AW_User1 WITH DEFAULT_SCHEMA=

30、AW_User1_SchemaGO-J ST1J65 (SQL Server 9. 0. 3042 - STU65.adniini strator A.日口数据库田口系统数据库田学数据库快照-,Mydatabasel国数据库关系圈+ _1表+ 视图同曳词田可编程性+ _| Servi ce Broker+ _j存储-O安全性-以用户AW_Userl色dbo、guest命 IHFORMATION_SCHEMA sys+ P角色-O架构AW_UEer 1_S chem adb_ac c e e e :=h1iti i n db_backup up erati db_datar eader db_d

31、atawri ter db_ddl:=LiiiriirL db_derLydat ar 已 adi db_deny dat awr i ti db_owner db_s e cur i tyaiiri i GO一一仓CREGO-JALTGO高消息命令已新建架构更).编写架构脚本为匿)报表册臃廷)刷新届性遂厂-STU65.adjnin.i strator AS STU65 tSQL Server 9.0. 3042-_J数据库+ _J系统数据库+ _J数据库快照-| Mydatabasel【_J数据库关系图+ n表+ _j视图_j同义词+ _j可端程性+ _J Servi ce Broker+

32、_|存储-_J安全性-一|用户AW_Userl& db u气 IHFOEMAT% sys+ _J角色-_J架构.W AW_Userl 蜀 db_acces 22) db_backu新建用户-.编写用户脚本为W)报表册除Q)刷新(I)屉性创建表t2在创建新表的时候,如果没有明确指定存放在那个架构下,新表存放在默认架构下。CREATE TABLE T2(st_id varchar(4) primary key not null,st_nm varchar(20) not null,stsex varchar (2) not null)INSERTINTOT2VALUES (0001,张三,男)IN

33、SERTINTOT2VALUES ( 0002,李四,男)INSERTGoINTOT2VALUES (0003,王五,女)- 3 STU65 tSQL Server 9.0.3042 - STU65administrator A- 一J数据库+ _J系统数据库+ _J数据库快照-| Mydatabasel;一数据库关系国-一表+ 一系统表AW_USerl_Schema. T2+ _J dbo. tl将tl表从dbo架构下转移到AW_User1_Schema架构下 ALTER SCHEMA AW_User1_Schema TRANSFER dbo.tl GO-,jj STU65 CSQL Ser

34、ver 9.0.3042 - STU65administrator A -一J数据库+ 一J系统数据库+ a数据库快照-j Mydatabasel+ 一J数据库关系图-表+ _系统表AWJJserl_Schema. tl+国|+AW_Vser 1 .Schema. T2 a in riSELECT * FROM tl5、思考与总结GOidname1xiangmeng2xiangsicheng3zhangshimeng从上面可以看见将表从一个架构转移到另外一个架构,对表中的数据不会产生影响。(1) 登录账户和数据库用户有何区别?(2) 登录账户和数据库用户如何映射?(3) 默认架构的含义是什么?(4) 角色的作用是什么?(5) 用什么语句实现表在架构之间的转移?

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号