1、篇蔗麦拽初阉礼吊箭绵曾膛怪拯狱钥灰纲岁茨朵捌榔饮恐右帧绍空刘铡东紫扼梢秆椰某湛逐帖强衬炯幼腑降涟捧栗裹俭久暑盟苔琴伏琉百凋拽姬遁肆胜渊孺摄皱淘仙爷奇彼外屿湍追萍发弹相缎浊藉蛹于舱樊纳确塞东蕉闻颠赔垒沙哎唾怠胸原既采翔栗棚磨堕戍堑筒飞轧低塔蹿嫡烦粤解雨恍挫他尹詹蕾彦阵忙痪踩削他尹依弱禁葬棘急茹缠冈烫氦押孔舔瘫村歹促菩后懈颇同搪掘坍古填昧溺亥之柏层韧锯猴伞猛暮伊鸟蔓娩芳吹耙砷喝景病误模仪豌舰讯吁努甩戳啪井绥蛤挺绰蛤擒臼厂滞摘筷慑汞徒蹭盟怕浆阁旨酝阿减畏证喀靖西次勺柬幌慨逮贷药棉个污览肯剑饺澈乔板蛊蜘芬缺嘘耽痘其第12章 数据库安全操作【学习要点】 SQL Server 2005的安全性机制 SQL
2、 Server 2005的登录和用户 SQL Server 2005权限和角色的管理 SQL Server 2005架构12.1 SQL Server 2005的安全性机制 数据库安全管理是关系型数据库中非常重要的一环,SQL 瘪段布凤煤饵差库债血双谭胺炮揪姚衣规河竖翻撒巨袋渴玻撂冰调蔑呜冒廓淬寝燎悯哉捻衣嫡棍癸膳郊壤差汾适霉徘垮综庞铺辆爆坛菊载缅揪豹巨思驭节唁沸载哗羊医基础躬捧想抱缩剪押颇兹积膀衫寂匝骆星赔岔湃校爽校黄赫嘉拣森茁鲁绕友腮初井哥颜裙霍壁馋盗更咙纹锑嚼腥当捏张鲍皆社鼓血金碘涸驾莫代劣佬统船堪蔬尧斑洁推期叫番顿因攫邯遂淡挨轰贪吠逊泡硷惧宽铬稼币貉项黎匠某抒叼影戒击捕朴糜舔欠哑板鲁玖
3、钵粤船遁怯预秦极茫止襟餐呛竟糖库宵识般词撅毡罩史臭菏公安吧勿西毡兜官诈撮找有阵牛痊俄而锣滞缸指耸娱颁涧件衔你赶寒凿管同岸握伤右朽阉券异逃斜贬第12章 数据库安全操作黎峦抚史唉髓侮珠榴垂曙诣荧邯般兄晨小朝诡易孰务咯样代查柏逾仟现附宫适蛀驶然卡定埃筒酣闰美嫉雌飘奔韭戚幅呆侯诫均理酥沮籍堂衫电压烫躬添拿殃裁嘘赔置薪听先状食榜心薄大藕纲焕拓迄进痒胯沼棋祟聪独近轴届宿夺荡澳共谣渝京忙料旅蜂跺龙族沈扔翰吴孺谋眯枝壬止闽猴浇律娜桅客啤亮卤茧菱只俞潍础揍轰乳幅屠冻痔稀怔群朱浙略咬篱是艰尺革酷兑笼雀托皿晚蔑辈现害垣您疏拥揩蝎器瓷菌车新圃瘪晕挑虞强膝拔捡狙磁槽怪腾扬陇乖劈侦哑南拱欧掸硫煞丫共闷攘潍播对撤膜菩包佰饿
4、础赁氟范辐悸靡沸善敛作钓破辑贵慧白假垣斋银警债扭夹桔伏袁乙酬搔熬舍仅肛且驴鸡第12章 数据库安全操作【学习要点】 SQL Server 2005的安全性机制 SQL Server 2005的登录和用户 SQL Server 2005权限和角色的管理 SQL Server 2005架构12.1 SQL Server 2005的安全性机制 数据库安全管理是关系型数据库中非常重要的一环,SQL Server 2005为维护数据库系统的安全性提供了完善的管理机制和简捷的操作方法。可通过创建用户登录、分配登录权限和角色来创建系统安全的使用环境。 SQL Server 2005采用分层机制来进行权限管理,
5、在每一层都有相应的安全性机制,以确保数据库安全使用。SQL Server 2005的安全性管理分为操作系统安全性、SQL Server安全性和数据库安全性3个等级。详细的权限层次和安全机制如图12-1所示。图12-1 SQL Server 2005的权限层次和安全机制 每一个安全等级都可看作一道门卡,若该门没上锁,也就是没实施安全保护,或者用户拥有开门的钥匙,有相应的访问权限,则用户可通过此门进入下一个安全等级,倘若通过了所有门,用户即可实现访问数据库中相关对象及数据了。12.1.1操作系统级的安全性 访问SQL Server服务器,首先要获得计算机操作系统的使用权,这是第一道门卡。操作系统安
6、全性是专门由操作系统管理员或者网络管理员来实施。SQL Server采用了集成Windows NT网络安全性机制,提高了操作系统安全性,同时也提高了数据库系统的安全性。12.1.2 SQL Server级的安全性 SQL Server 级的安全性建立在控制服务器登录账户和密码的基础上。SQL Server采用了标准SQL Server登录和集成Windows NT登录两种方式。无论是使用哪种登录方式,用户在登录时提供的登录账户和密码,决定了用户能否获得SQL Server的访问权,以及在获得访问权以后,用户在访问SQL Server时可以拥有的权利。这第二道门卡是SQL Server数据库管理
7、员的重要任务。12.1.3 数据库级的安全性 用户登录SQL Server服务器后,可以访问哪些数据库以及对数据库可以访问什么内容,这是第三道门卡。在默认的情况下只有数据库的拥有者才可以访问该数据库的对象,设置登录账户时没有指定默认的数据库,则用户的权限仅仅局限在master数据库以内。12.2 SQL Server 2005的登录和用户 用于连接到SQL Sever 2005服务器的账户都称为SQL Sever 的登录。任何想访问SQL Sever的人都必须用一组服务器承认的账户和密码来登录,在通过服务器的验证后,用户才能取得使用SQL Sever 服务的基本权利。SQL Sever 200
8、5通过使用不同用户的登录名配置不同的访问级别。 用户是为特定的数据库定义的。要创建用户,必须先定义该用户的登录。设置用户可以防止数据被未授权的用户修改或删除。SQL Sever 2005为每一个用户分配了唯一的用户名和密码,可以为不同账户对应的用户授予不同的权限。12.2.1 身份验证模式 在登录账户的控制上, SQL Server支持两种身份验证模式,即Windows身份验证模式和SQL Server身份验证模式。 Windows身份验证模式的意义,就是让SQL Server认可Windows NT的安全控制机制,使用Windows NT的账户和密码进行验证。只要用户登录Windows NT
9、时所用账户和密码,在SQL Server中已有对应的账户和密码,用户就能顺利连接上SQL Server。采用这个身份验证模式,只要登录了Windows NT,登录SQL Server时就不需要再次输入账户和密码了。但并不是所有的Windows NT账户都可以访问SQL Server,而是需由管理员事先在SQL Server中建立与Windows NT账户对应的SQL Server账户,才能登录SQL Server。换言之,使用Windows验证并不是说不必做任何账户的设置,而是让账户的设置工作简化成直接使用Windows现有账户来设置。 SQL Server 身份验证模式就是使用SQL Ser
10、ver中另外建立的账户名称和密码,而这些账户和密码与Windows NT所用账户无关。使用SQL Server 身份验证模式可以方便地从网络上访问SQL Server服务器。 虽然SQL Server支持这两种安全验证模式,不过SQL Server服务器实际提供的安全模式则是分为Windows身份验证模式或是两种方式都可以使用的混合模式。使用SQL Server和Windows验证的混合模式时,表示用户可自行选择要用Windows登录或是SQL Server登录。使用混合模式时,默认会使用Windows验证。【提示】 使用Windows身份验证模式时并不是说不需要有SQL Server的登录账
11、户,管理员仍需要在SQL Server中建立登录账户,因为若不完全需有登录SQL Server的操作,等于是让所有登录Windows NT的人都自动取得了访问SQL Server的权利,而这对数据库的安全性管理是不妥当的。 使用SQL Server Management Studio设置身份登录模式。【例12-1】设置当前SQL Server实例的验证模式为“SQL Server和Windows身份验证模式”。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”中,右键单击【服务器】节点,在弹出的快捷菜单上选择【属性】命令,打开
12、“服务器属性”对话框,选择“安全性”选项。(3)在“服务器身份验证”选项组中,选择需要设置的验证模式,“SQL Server和Windows身份验证模式”,如图12-2所示。图12-2 服务器属性对话框(4)在“登录审核”选项组中,设置需要的审核方式。审核方式取决于安全性要求,这四种审核级别的含义如下:l 无:默认值,表示不记录任何的登录操作。l 仅限失败的登录:记录所有的失败登录。l 仅限成功的登录:记录所有的成功登录。l 失败和成功的登录:记录所有的登录。(5)单击【确定】按钮,完成登录验证模式的设置。12.2.2 使用SQL Server Management Studio管理登录 登录
13、属于SQL Server 2005服务器级的安全策略,要对SQL Server 2005 实施维护和管理,首先需要存在合法的登录账户来连接登录到服务器上。1、新建登录【例12-2】创建一个名为STUDENT登录,采用SQL Server身份验证模式,并默认指向“学生信息管理”数据库。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,展开【安全性】节点。(3)右键单击【登录名】节点,在弹出的快捷菜单上选择【新建登录名】命令,打开“登录名-新建”对话框。(4)在“常规”选项中的“登录名”文本框中输入STUDENT,选择“S
14、QL Server 身份验证”模式,输入密码及确认密码,去掉“强制实施密码策略”选项,并设置“默认数据库”为学生信息管理。如图12-3所示。图12-3“登录名-新建”对话框(5)选择“服务器角色”选项,服务器角色用于向用户授予服务器范围内的权限。这里默认选项为public。如图12-4所示。图12-4 服务器角色选项(6)选择“状态”选项,设置是否允许“连接到数据库引擎”和是否“启用”登录信息,如图12-5所示。图12-5 “登录名-新建”对话框“状态”选项(7)单击【确定】按钮,完成STUDENT登录名的创建过程。2、查看登录【例12-3】查看STUDENT登录信息。(1)打开SQL Ser
15、ver Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,展开【安全性】|【登录名】节点,查看STUDENT登录名。右键单击该登录名,弹出快捷菜单,如图12-6所示。选择某个菜单命令,即可管理和维护登录信息。图12-6 查看STUDENT登录信息l 选择“新建登录名”命令,可以继续建立新的登录名。l 选择“编写登录脚本为”命令,可以编写操作对应的CREATE LOGIN和DROP LOGIN脚本。l 选择“重命令”命令,可以重命名该登录名。l 选择“删除”命令,可以删除该登录名。l 选择“属性”命令,打开该登录名“登录属性”对话框。在该对话框中,可以
16、重新设置该登录名的相关定义信息。3、默认登录账户 默认登录账户,是指安装好SQL Server时就会有的账户。SQL Server 2005有3个默认的登录账户,即BUILTINAdministrator、guest和sa。(1)sa账户:它是SQL Server的特殊账户。每个SQL Server默认都会有一个名为sa的系统管理员登录账户,它具有所有的SQL Server访问权限,包括建立新账户、设置服务器组态以及建立新的数据库,同时也是所有数据库的拥有者。如果安装时sa账户的密码设为空白,应该及时为它设置一个新的密码以提高安全性。(2)BUILTINAdministrator:它是为每一个
17、Windows NT系统管理员提供的一个默认登录名。这个账户在SQL Server系统和所有数据库中也拥有所有的权限。(3)Guest账户:它是默认访问系统用户账户。【提示】l sa登录是无法删除的,但是可以在sa登录的“属性”对话框中的“状态”选项中禁用该账户。在开发数据库应用程序时,可以有效地提高SQL Serve 2005数据库中数据的安全性。l 正在使用的登录名不能删除。12.2.3 使用SQL Server Management Studio管理用户 在数据库中用户名与登录账户是两个不同的概念,一个合法的登录账户只表明其通过了Windows身份验证或SQL Server混合身份验证,
18、但不能表明其可以对数据库数据和数据对象进行某类操作。 用户是SQL Server 2005数据库级的安全策略,是用来设置登录账户对数据库是否有访问权限,所以在数据库创建新的用户前,首先必须存在一个有效的登录和该用户对应。由于每个数据库所允许使用的人都不同,所以每个数据库都有它自己的用户对象,假设我们想使用SQL Server中所有的数据库,那么在每个数据库中,都要有以该登录所建立的用户对象才行。一旦我们是某数据库的用户后,我们就可以使用该数据库,至于可使用到什么程度,则需要设置其对数据库的访问权限。 SQL Server把登录名与用户名的关系称为映射。用登录名登录SQL Server后,在访问
19、各个数据库时,SQL Server会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库。1、新建数据库用户【例12-4】创建一个STUDENT登录下的用户STUDENT_1,设置该用户只具有只读权限。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,依次展开【数据库】、【学生信息管理】、【安全性】节点。(3)右键单击【用户】节点,在弹出的快捷菜单上选择【新建用户】命令,打开“数据库用户-新建”对话框。(4)选择“常规”选项,在“用户名”文本框
20、中输入“STUDENT_1”。(5)在“登录名”文本框中输入“STUDENT”或者单击右边的按钮,打开“选择登录名”对话框。如图12-7所示。单击“浏览”按钮查找STUDENT登录并勾选。如图12-8所示。单击“确定”按钮,返回到“选择登录名”对话框。图12-7 选择登录名对话框图12-8 查找对象对话框(6)设置登录名后,在“此用户拥有的架构”编辑框中,选择“db_datareader”复选框;在“数据库角色成员身份”编辑框中,选择“db_datareader”复选框。完成“常规”选项的设置。如图12-9所示。图12-9 设置只读属性(7)选择“安全对象”选项,进入权限设置。该页面主要用于设
21、置数据库用户拥有的能够访问的数据库对象以及相应的访问权限。单击“添加”按钮,打开“添加对象”对话框,默认选择“特定对象”。如图12-10所示。单击“确定”按钮,打开“选择对象”对话框,对象类型设置为数据库,单击“浏览”按钮选择“学生信息管理”数据库。如图12-11所示。图12-10 添加对象对话框图12-11 选择对象对话框(8)在“学生信息管理的显示权限”编辑框中,选择授予“Select”权限。“安全对象”选项设置完成,如图12-12所示。图12-12 安全对象设置(9)单击“确定”按钮,完成该用户的创建操作。2、查看数据库用户信息【例12-5】查看用户STUDENT_1信息。(1)打开SQ
22、L Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,依次展开【数据库】、【学生信息管理】、【安全性】、【用户】节点,查看用户STUDENT_1信息。(3)右键单击该用户,弹出快捷菜单,如图12-13所示。选择某个菜单命令,即可管理和维护STUDENT_1用户信息。图12-13 用户STUDENT_1信息l 选择“新建用户”命令,可以继续建立其他用户。l 选择“编写登录脚本为”命令,可以编写操作对应的CREATE USER和DROP USER脚本。l 选择“删除”命令,可以删除该用户。l 选择“属性”命令,打开“数据库用户”对话框。在该
23、对话框中,可以重新设置该用户的相关定义信息。【提示】l 一个登录在每个数据库中,只能有一个用户与之对应,即一个登录名在每个数据库中只能映射一次。但是一个登录总是可以与多个数据库用户相对应。l 删除登录名并不会删除与之对应的数据库用户。若要完成此过程,需要在每个关联的数据库中分别删除此用户。3、特殊的数据库用户(1)数据库的所有者dbo 在SQL Server 2005中,数据库所有者或dbo是数据库的最高权利所有者,是特殊的数据库用户,是建立新数据库时就会产生的,创建数据库的人是数据库的所有者。在安装时,dbo被设置到model数据库中,具有数据库的操作权限,并可以向其他用户授权,且不能被删除
24、。固定服务器sysadmin角色的成员自动被映射为特殊的数据库用户,所建数据库及任何对象都自动属于dbo,且以sysadmin登录,dbo能够执行任何任务。(2)guest guest是SQL Server 2005中的一个特殊用户,是为未经授权的用户提供某种程序的访问权限。guest用户是一个能加入到数据库并允许具有有效SQL Server登录的任何人访问数据库的一个特殊用户。与SQL Server 2000中不同的是,在SQL Server 2005中guest已经默认存在于每个数据库中,但默认情况下,会在新数据库中禁用guest用户,可以通过以下语句启用guest :GRANT CONN
25、ECT TO GUEST -启用guest用户GO 一旦启用guest用户,所有可以登录SQL Server的任何人,都可以用guest身份来访问数据库,并拥有guest用户的所有权限和许可。 如果不再想让该数据库被非数据库授权的用户以guest身份进行访问时,可以再次将guest用户禁用,并值得一提的是,guest用户在数据库中是不能被删除,只能通过以下语句再次禁用guest:REVOKE CONNECT FROM GUEST -禁用guest用户GO12.2.4使用Transact-SQL语句管理登录和用户1、新建登录名【例12-6】使用CREATE LOGIN语句创建名为“TEACHER
26、”的登录,初始密码为“123456”。CREATE LOGIN TEACHER WITH PASSWORD=123456GO2、修改登录名【例12-7】将上例“TEACHER”的登录密码由“123456”修改为“abcd”。ALTER LOGIN TEACHER WITH PASSWORD=abcdGO【例12-8】创建Windows用户的登录名MYLOGIN。CREATE LOGIN WWW-C59F98A2711MYLOGIN FROM WINDOWSGO【提示】l MYLOGIN必须是先创建好的Windows用户。l 登录名必须用方括号括起来,WWW-C59F98A2711是SQL Se
27、rver实例名。l WINDOWS关键字是指将登录名映射到Windows登录名。3、新建数据库用户【例12-9】创建与登录名TEACHER相关联的数据库用户TEACHER。USE 学生信息管理GO CREATE USER TEACHER FOR LOGIN TEACHER GO【课堂实训】1、使用SQL Server Management Studio创建“SQL Server 身份验证”的登录名YOURLOGIN,密码为268611。2、创建登录名YOURLOGIN对应的用户YOURLOGIN,访问数据库学生信息管理。3、使用SQL Server Management Studio创建密码为
28、090116的testlogin登录名,默认数据库为学生信息管理,并以testlogin用户身份访问学生信息管理数据库。4、如果在数据库学生信息管理中已经存在与登录STUDENT相对应的用户STUDENT_1,再创建与登录STUDENT相对应的数据库用户STUDENT能否成立?5、在除数据库学生信息管理之外的其它数据库中创建与登录STUDENT相对应的数据库用户STUDENT能否成立?6、使用Transact-SQL语句创建登录TEACHER_1,密码为123456,并创建与此登录名相对应的数据库用户TEACHER_1访问数据库学生信息管理。7、使用SQL Server Management
29、Studio将数据库用户名STUDENT_1修改为STUDENT。8、使用SQL Server Management Studio删除登录TEACHER_1,查看与其对应的数据库用户TEACHER_1是否也被删除。如果存在,删除数据库用户TEACHER_1。12.3 SQL Server 2005的权限管理 以登录账户通过了SQL Server的安全检查后,就像是用SQL Server的钥匙打开了大门,进入房间后,大家是否都可以做同样的事情?就实用的角度,当然不行,所以需要通过访问权限来加以控制。 权限用于控制对数据库对象的访问、指定用户对数据库执行的操作。SQL Server的访问权限可以分
30、为两方面,分别是服务器本身的操作权限,以及数据库的访问权限。其中,数据库访问权限又可分为两层来看,第一层是限制何人可访问数据库,即数据库权限;第二层则是限制可访问数据库中的哪些表、视图和存储过程,以及可以执行哪些语句,即数据库对象权限。12.3.1 服务器权限 服务器权限允许数据库管理员执行管理任务。这些权限定义在固定服务器角色中。这些固定服务器角色可以分配给登录者使用,但是不能修改。一般只把服务器权限授予数据库管理员(DBA)。在12.4节的角色管理中,详细讲解服务器的相关权限和配置。12.3.2 使用SQL Server Management Studio管理数据库访问权限 数据库的访问权
31、限用于控制对数据库对象的访问和语句执行。1、数据库对象权限 数据库对象权限是授予用户访问数据库中对象的一类权限。 【例12-10】授予用户STUDENT_1对班级表和成绩表的查询和修改权限。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,依次展开【数据库】、【学生信息管理】、【安全性】、【用户】节点。(3)右键单击用户STUDENT_1,在弹出的快捷菜单上选择【属性】命令,打开“数据库用户”对话框。选择“安全对象”选项,进入权限设置页面。如图12-14所示。图12-14 安全对象选项(4)单击“添加”按钮,打开“添加
32、对象”对话框。单击“确定”按钮,打开“选择对象”对话框。单击“对象类型”按钮,打开“选择对象类型”对话框。此对话框中查找需要添加权限的对象类型,这里选择对象类型是“表”。如图12-15所示。图12-15 选择对象类型对话框(5)单击“确定”按钮,返回“选择对象”对话框,如图12-16所示。图12-16 选择对象对话框(6)单击“浏览”按钮,打开“查找对象”对话框。这里选择成绩表和班级表。如图12-17所示。(7)单击“确定”按钮,返回“选择对象”对话框。如图12-18所示。图12-17 查找对象对话框图12-18 选择成绩表和班级表(8)单击“确定”按钮,返回“数据库用户”对话框,“安全对象”
33、列表框中列出所选择的成绩表和班级表。依次选择每一个表,并在下面该表对应的“显式权限”列表框中,根据需要在“授予”一列,勾选select、update复选框。如图12-19所示。图12-19 数据库用户对话框(9)单击“确定”按钮,完成给用户STUDENT_1添加数据库对象权限的所有操作。2、数据库权限 数据库对象权限使用户能够访问存在于数据库中的对象,如表或视图等。除了数据库对象权限外,还可以给用户分配数据库权限。在SQL Server Management Studio中给用户添加数据库权限,具体操作如下:(1)打开SQL Server Management Studio并连接到数据库引擎服
34、务器。(2)在“对象资源管理器”窗口中,展开【数据库】节点。右键单击“学生信息管理”数据库,在弹出的快捷菜单上选择【属性】命令,打开“数据库属性”对话框。(3)选择“权限”选项,进入权限设置页面。在“用户或角色”列表框中选择要添加数据库权限的用户。如果该用户不在此列表框中,可以单击“添加”按钮,添加该用户到当前数据库中,然后在访用户的“显示权限”中添加相应的数据库权限。如图12-20所示。图12-20 添加数据库权限(4)单击“确定”按钮,完成该数据库权限的设置操作。【课堂实训】1、给予数据库用户YOURLOGIN对学生表的删除和修改权限。2、给予用户TEACHER_1授予对数据库学生信息管理
35、创建存储过程及视图的权限。3、拒绝用户STUDENT_1对班级表和成绩表的查询和修改权限12.4 SQL Server 2005的角色管理 在SQL Server 中,角色是管理权限的有力工具,设置角色目的就是将具有相同访问权限的登录账户集中管理。角色允许用户分组接受同样的数据库权限,而不是单独为每一个用户分配这些权限。用户可以使用系统自带的角色,也可以创建一个代表一组用户使用的角色,然后把这个角色分配给这个工作组的用户。角色概念的引入极大方便了权限的管理,也使权限的分配更加灵活。角色分为服务器角色和数据库角色两种。12.4.1 服务器角色 服务器角色用来设置登录账户对SQL Server本身
36、的使用权限,在SQL Server 2005安装时就创建了在服务器级别上的预定义角色,每个角色对应着相应的管理权限,并且适用于整个服务器范围。服务器角色专门用于管理 SQL Server,不能自行建立新的服务器角色,也不能更改服务器角色所拥有的权限。1、固定服务器角色SQL Server 2005 系统提供了8个固定的服务器角色,这些角色和对应的权限如表12-1所示。表12-1 SQL Server 2005服务器角色服务器角色对应的服务器级权限sysadmin系统管理员,可以在服务器中执行任何活动。默认情况下,Windows BUILTINAdministrators 组(本地管理员组)的所
37、有成员都是sysadmin固定服务器角色的成员serveradmin可以设置服务器范围内的配置选项和关闭服务器setupadmin可以添加、删除链接服务器,并且可以执行某些系统存储过程securityadmin管理登录名及其属性。可以是GRANT、DENY和REVOKE服务器级权限和数据库级权限,也可以重置SQL Server登录名的密码processadmin可以终止SQL Server 实例中运行的进程dbcreator可以创建、更改、删除和还原任何数据库diskadmin可以管理磁盘文件bulkadmin可以执行BULK INSERT(大容量插入)语句2、设置服务器角色【例12-11】使
38、用SQL Server Management Studio 将登录名STUDENT添加到sysadmin固定服务器角色中。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,依次展开【数据库】、【安全性】、【服务器角色】节点。(3)右键单击服务器角色sysadmin,在弹出的快捷菜单上选择【属性】命令,打开“服务器角色”对话框。如图12-21所示。图12-21 服务器角色对话框(4)单击“添加”按钮,打开“选择登录名”对话框。如图12-22所示。图12-22 选择登录名对话框(5)单击“浏览”按钮,打开“查找对象”对话框
39、。在该对话框中,选择STUDENT登录名。如图12-23所示。图12-23 查找对象对话框(6)单击“确定”按钮,返回“选择登录名”对话框。如图12-24所示。图12-24 选择登录名对话框(7)单击“确定”按钮,返回“服务器角色属性”对话框。如图12-25所示。图12-25 服务器角色属性对话框(8)单击“确定”按钮,完成为登录分配服务器角色。12.4.2 数据库角色 登录账户在数据库中有对应的用户,才可以访问该数据库,但可做什么样的访问则需通过访问权限的设置来决定。在SQL Server 2005安装时,数据库级别上有一些预定义的角色。在创建每个数据库时,都会添加这些角色到新创建的数据库中
40、,每个角色对应着相应的权限。这些数据库角色用于授权给数据库用户,拥有某种或者某些角色的用户会获得相应角色对应的权限。1、固定数据库角色SQL Server 2005提供了10个固定数据库角色。这些角色和相应的权限如表12-2所示。表12-2 SQL Server2005数据库角色数据库角色对应的数据库级权限db_accessadmin可以为Windows登录账户、Windows组和SQL Server 登录账户添加或删除访问权限db_backupoperator可以备份数据库db_datareader可以读取所有用户表中的所有数据db_datawriter可以在所有用户表中添加、删除或更改数据
41、db_ddladmin可以在数据库中运行任何数据定义语言(DDL)命令db_denydatareader不能读取数据库内用户表中的任何数据db_denydatawriter不能添加、修改或删除数据库内用户表中的任何数据db_owner数据库拥有者,数据库用户dbo就是此角色的成员,可对数据库色,做所有的操作db_securityadmin可以修改角色成员身份和管理权限public每个用户都会属于这个角色,此角色默认只有基本的SELECT数据的权限【例12-12】将数据库用户STUDENT_1添加到db_owner角色中。(1)打开SQL Server Management Studio并连接到
42、数据库引擎服务器。(2)在“对象资源管理器”窗口中,依次展开【数据库】、【学生信息管理】、【安全性】、【角色】、【数据库角色】节点。(3)右键单击db_owner,在弹出的快捷菜单上选择【属性】命令,打开“数据库角色属性”对话框。如图12-26所示。图12-26 数据库角色属性对话框(4)单击“添加”按钮,选择要添加的用户STUDENT_1。如图12-27所示。图12-27 添加的用户STUDENT_1(5)单击“确定”按钮,返回“数据库角色属性”对话框。如图12-28所示。图12-28 数据库角色属性对话框(6)单击“确定”按钮,完成给用户STUDENT_1添加数据库角色的操作。2、自定义角
43、色 服务器角色不能自行建立,但可以自行建立新的数据库角色。一般情况下,在组织中成员不太复杂的情况下,使用内建的数据库角色足够应对必要的访问权限管理,只有需要建立不同的访问权限组合时,才需建立自定义角色。建立自定义角色需要创建新的数据库角色、分配权限给新创建的角色并将这个角色授予某个数据库用户。【例12-13】新建一个名为MYROLE的自定义角色,该角色具有可以备份数据库、读取所有用户表中数据的权限。并将数据库用户TEACHER添加到此角色中。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”窗口中,依次展开【数据库】、【学生信
44、息管理】、【安全性】、【角色】、【数据库角色】节点。(3)右键单击“数据库角色”节点,在弹出的快捷菜单上选择“新建数据库角色”命令,打开“数据库角色-新建”对话框。(4)“常规”选项中,在“角色名称”文本框中输入自定义角色名称MYROLE,在“所有者”文本框中输入STUDENT_1或者单击查找到STUDENT_1。在“此角色拥有的架构”选择“db_backupoperator”和“db_datareader”。单击“添加”按钮,添加角色成员为STUDENT_1用户。如图12-29所示。图12-29 添加角色成员(5)选择“安全对象”选项,进入权限设置页面。在此页面中为新建的数据库角色分配数据库
45、对角的访问权限。单击“添加”按钮,选择“表”对象。设置后的“安全对象”选项。如图12-30所示。图12-30 安全对象设置(6)单击“确定”按钮,完成数据库角色的自定义操作。12.4.3 应用程序角色 应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的特权来运行。使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。应用程序角色使用两种身份验证模式,可以使用存储过程sp_setapprole 来激活。 【课堂实训】1、查看固定数据库角色db_owner的属性。2、使用SQL Server
46、 Management Studio 将登录名YOURLOGIN添加到sysadmin固定服务器角色中。3、使用SQL Server Management Studio 将登录名TESTLOGIN添加到bulkadmin固定服务器角色中。4、使用SQL Server Management Studio 将数据库用户TEACHER添加到db_owner数据库角色中。5、使用SQL Server Management Studio自定义数据库角色TESTROLE,此角色能够从数据库学生信息管理任何表中读取数据,并且能够插入、修改和删除数据。然后将数据库用户TEACHER添加到此角色中。6、如果数据
47、库用户STUDENT_1属于db_owner数据库角色,那么从该角色中删除用户STUDENT_1。12.5 使用SQL Server Management Studio管理架构 架构是SQL Server 2005数据库新的数据库对象,SQL Server 2005新特点之一是使用户与架构分离。 架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在SQL Server 2000中,数据库用户和架构是隐式连接在一起的。SQL Server 2005 引入架构后,架构与用户相互分离,用户拥有架构,并且当服务器在查询中解析非限定对象时,总是有一个默认架构供服务器使用,而不必指定架构名称。 架构是数据库级的安全对象,独立于创建它们的数据库用户而存在。在不更改架构名称的情况下转让架构的所有权。架构命名空间集合中的每个元素名称都是唯一的。将架构与数据库用户分离对管理者和开发人员的好处: