1、1安全管理概述安全管理概述10.1登录登录10.2数据库用户数据库用户10.3角色角色10.4权限管理权限管理10.52 对于网络环境下的多用户数据库而言,安全问对于网络环境下的多用户数据库而言,安全问题是至关重要的。必须对不同的用户赋予不同的题是至关重要的。必须对不同的用户赋予不同的访问权限,才能保证数据库中的数据不被泄露或访问权限,才能保证数据库中的数据不被泄露或破坏。本章将介绍破坏。本章将介绍SQL Server 2000实现安全管理实现安全管理的方法。的方法。3n安全管理概述安全管理概述 n登录登录 n数据库用户数据库用户 n角色角色 n权限管理权限管理 4 SQL Server 20
2、00的安全管理模型中包括的安全管理模型中包括SQL Server登录、数据库用户、权限和角色登录、数据库用户、权限和角色4个主要方个主要方面,具体如下。面,具体如下。nSQL Server登录:要想连接到登录:要想连接到SQL Server服务器服务器实例,必须拥有相应的登录账户和密码。实例,必须拥有相应的登录账户和密码。SQL Server的身份认证系统验证用户是否拥有有效的的身份认证系统验证用户是否拥有有效的登录账户和密码,从而决定是否允许该用户连接登录账户和密码,从而决定是否允许该用户连接到指定的到指定的SQL Server服务器实例。服务器实例。5n数据库用户:通过身份认证后,用户可以
3、连接数据库用户:通过身份认证后,用户可以连接到到SQL Server服务器实例。但是,这并不意味服务器实例。但是,这并不意味着该用户可以访问到指定服务器上的所有数据着该用户可以访问到指定服务器上的所有数据库。在每个库。在每个SQL Server数据库中,都存在一组数据库中,都存在一组SQL Server用户账户。登录账户要访问指定数用户账户。登录账户要访问指定数据库,就要将自身映射到数据库的一个用户账据库,就要将自身映射到数据库的一个用户账户上,从而获得访问数据库的权限。一个登录户上,从而获得访问数据库的权限。一个登录账户可以对应多个用户账户。账户可以对应多个用户账户。6n权限:权限规定了用户
4、在指定数据库中所能进权限:权限规定了用户在指定数据库中所能进行的操作。行的操作。n角色:类似于角色:类似于Windows的用户组,角色可以对用的用户组,角色可以对用户进行分组管理。可以对角色赋予数据库访问户进行分组管理。可以对角色赋予数据库访问权限,此权限将应用于角色中的每一个用户。权限,此权限将应用于角色中的每一个用户。7n登录指用户连接到指定登录指用户连接到指定SQL Server数据库实例的数据库实例的过程。在此期间,系统要对该用户进行身份验证。过程。在此期间,系统要对该用户进行身份验证。n只有拥有正确的登录账户和密码,才能连接到指只有拥有正确的登录账户和密码,才能连接到指定的数据库实例
5、。定的数据库实例。8 登录到登录到SQL Server实例必须经过两个过程。首实例必须经过两个过程。首先要从系统中获得此权限,即得到授权;然后就是先要从系统中获得此权限,即得到授权;然后就是要通过系统的身份验证。要通过系统的身份验证。SQL Server提供以下两种提供以下两种身份验证模式。身份验证模式。nWindows 身份验证模式身份验证模式 n混合模式(混合模式(Windows身份验证和身份验证和SQL Server身身份验证)份验证) 9nSQL Server数据库系统通常运行在数据库系统通常运行在Windows NT服务器平服务器平台上,而台上,而NT作为网络操作系统,本身就具备管理
6、登录、作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,验证用户合法性的能力,Windows身份验证模式正是利身份验证模式正是利用了这一用户安全性和账户管理的机制,允许用了这一用户安全性和账户管理的机制,允许SQL Server也可以使用也可以使用Windows的用户名和密码。在这种模式的用户名和密码。在这种模式下,用户只需要通过下,用户只需要通过Windows的身份验证,就可以连接的身份验证,就可以连接到到SQL Server,而,而SQL Server本身也就不需要管理一套本身也就不需要管理一套登录数据。登录数据。n当用户通过当用户通过Windows NT 4.0、Windows
7、 2000或或Windows 2003用户账户进行连接时,用户账户进行连接时,SQL Server通过回叫通过回叫Windows系统以获得信息,重新验证账户名和密码。系统以获得信息,重新验证账户名和密码。10nSQL Server可以设置其自己的可以设置其自己的SQL Server登录账登录账户。用户登录时,户。用户登录时,SQL Server将对用户的账户进将对用户的账户进行验证。如果行验证。如果SQL Server未设置该登录账户,或未设置该登录账户,或该账户的用户名、密码不正确,则身份验证将失该账户的用户名、密码不正确,则身份验证将失败,而且用户将收到错误信息。败,而且用户将收到错误信息
8、。n混合模式允许用户使用混合模式允许用户使用Windows NT安全性或安全性或SQL Server安全性连接到安全性连接到SQL Server,这就意味,这就意味着用户可以使用他的着用户可以使用他的Windows账户,或使用他的账户,或使用他的SQL Server账户登录到账户登录到SQL Server系统。系统。11n对于对于Windows NT的用户,既可以使用的用户,既可以使用Windows身份验证模式,也可以使用身份验证模式,也可以使用SQL Server的身份验的身份验证模式。而对于证模式。而对于Windows 9.x的用户只能使用的用户只能使用SQL Server的身份验证模式。
9、的身份验证模式。n应用程序开发人员和数据库用户也许更喜欢应用程序开发人员和数据库用户也许更喜欢“SQL Server身份验证身份验证”模式,因为他们可以通模式,因为他们可以通过对登录账户和密码的管理实现权限控制。过对登录账户和密码的管理实现权限控制。12Windows身份验证模式身份验证模式 混合模式混合模式 用户连接请求用户连接请求 身份验证模式?身份验证模式? 使用使用SQL Server账户连接吗?账户连接吗? 是有效账户吗?是有效账户吗? SQL ServerSQL Server拒绝连接拒绝连接 有效的有效的NTNT帐户吗帐户吗 SQL Server接受用户连接接受用户连接 是是 是是
10、 是是 否否 否否 否否 1314nSQL Server有以下两个默认的登录账户:有以下两个默认的登录账户:sa:即系统管理员(:即系统管理员(system administrator)账户,该账户在账户,该账户在SQL Server系统和所有数据系统和所有数据库中拥有所有的权限。库中拥有所有的权限。BUILTINAdministrators:该账户为:该账户为Windows NT系统管理员账户,具有与系统管理员账户,具有与sa有相有相同的权限。同的权限。可以使用以下两种方式新建登录帐户:可以使用以下两种方式新建登录帐户:在企业管理器中创建登录账户在企业管理器中创建登录账户 使用命令创建登录账
11、户使用命令创建登录账户 15n展开指定服务器实例下的展开指定服务器实例下的“安全性安全性”文件夹,文件夹,用鼠标右击用鼠标右击“登录登录”项,在弹出菜单中选择项,在弹出菜单中选择“新建登录新建登录”命令,打开饼设置命令,打开饼设置“新建登录新建登录”对话框:对话框:16使用系统存储过程创建使用系统存储过程创建Windows身份验证模式身份验证模式登录账户;登录账户;使用系统存储过程创建使用系统存储过程创建SQL Server身份验证模身份验证模式的登录账户式的登录账户17n使用使用sp_grantlogin存储过程可以创建新的存储过程可以创建新的Windows身份验证模式登录账户,语法如下:身
12、份验证模式登录账户,语法如下: sp_grantlogin 登录名称登录名称登录名称指要添加的登录名称指要添加的Windows用户或组的名用户或组的名称。称。Windows组和用户必须用组和用户必须用Windows域名域名限定,格式为限定,格式为“域名域名用户名用户名”,例如,例如“LondonJoeb”。只有只有sysadmin或或securityadmin固定服务器角固定服务器角色的成员可以执行色的成员可以执行sp_grantlogin。18n使用使用sp_grantlogin存储过程将用户存储过程将用户LEEpublic映射到映射到SQL Server登录账户。登录账户。 sp_gran
13、tlogin LEEpublicn执行结果为:执行结果为: 已向已向 LEEpublic 授予登录访问权。授予登录访问权。19n使用使用sp_addlogin存储过程可以创建新的登录账存储过程可以创建新的登录账户,语法如下:户,语法如下: sp_addlogin 登录名称登录名称, 登录密码登录密码 , 默认数据库默认数据库, 默认语言默认语言nSQL Server 登录名称和密码不能含有反斜线登录名称和密码不能含有反斜线();不能是保留的登录名称,例如);不能是保留的登录名称,例如sa或或public,或者已经存在的登录名称;不能为,或者已经存在的登录名称;不能为NULL;不能为空字符串;不
14、能为空字符串()。20n使用使用sp_addlogin存储过程创建存储过程创建SQL Server登录登录账户账户lee,密码为,密码为111111,默认数据库为,默认数据库为“学生学生管理管理”。 sp_addlogin lee, 111111, 学生管理学生管理n执行结果为:执行结果为: 已创建新登录。已创建新登录。21n使用企业管理器修改账户使用企业管理器修改账户 n使用企业管理器删除账户使用企业管理器删除账户 n使用存储过程修改和删除账户使用存储过程修改和删除账户22n展开指定服务器实例下的展开指定服务器实例下的“安全性安全性”文件夹,文件夹,用鼠标单击用鼠标单击“登录登录”项,可以在
15、右侧窗格中查项,可以在右侧窗格中查看到已经存在的看到已经存在的SQL Server登录账户。用鼠标登录账户。用鼠标右键单击登录账户名,在弹出的快捷菜单中选右键单击登录账户名,在弹出的快捷菜单中选择择“属性属性”命令,打开命令,打开“登录属性登录属性”对话框,对话框,在该对话框中可以对账户信息进行修改。在该对话框中可以对账户信息进行修改。23n修改修改Windows身份验证模式账户身份验证模式账户24n修改修改SQL Server身份验证模式账户身份验证模式账户25n在企业管理器中,用鼠标右键单击在企业管理器中,用鼠标右键单击SQL Server账户,在弹出的快捷菜单中选择账户,在弹出的快捷菜单
16、中选择“删除删除”命令,命令,在弹出的确认对话框中单击在弹出的确认对话框中单击“是是”按钮,可以按钮,可以删除该账户。删除该账户。26nsp_denylogin存储过程存储过程 nsp_revokelogin存储过程存储过程 nsp_password存储过程存储过程 nsp_droplogin存储过程存储过程 27n用于阻止用于阻止Windows用户或用户组连接到用户或用户组连接到SQL Server实例,基本语法:实例,基本语法: sp_denylogin 用户或用户组名用户或用户组名nsp_denylogin只能和只能和Windows账户一起使用,账户一起使用,“用户或用户组名用户或用户组
17、名”格式为格式为“域名域名用户名用户名”。sp_denylogin无法用于通过无法用于通过sp_addlogin添加的添加的SQL Server登录。登录。nsp_denylogin和和sp_grantlogin是对应的两个存储是对应的两个存储过程,它们可以互相反转对方的效果,允许和过程,它们可以互相反转对方的效果,允许和拒绝用户访问拒绝用户访问SQL Server。28n使用使用sp_denylogin存储过程拒绝用户存储过程拒绝用户LEEpublic访问访问SQL Server实例。实例。 sp_denylogin LEEpublicn执行结果为:执行结果为: 已拒绝对已拒绝对 LEEpu
18、blic 的登录访问权。的登录访问权。29n用于删除用于删除SQL Server中使用中使用sp_denylogin或或sp_grantlogin创建的创建的Windows身份认证模式登身份认证模式登录账户,基本语法如下:录账户,基本语法如下: sp_revokelogin 用户或用户组名用户或用户组名【例【例10-4】使用】使用sp_revokelogin存储过程删除用户存储过程删除用户LEEpublic对应的对应的SQL Server登录账户。登录账户。 sp_revokelogin LEEpublic执行结果为:执行结果为: 已废除已废除 LEEpublic 的登录访问权。的登录访问权。
19、 从登录列表中可以看到,从登录列表中可以看到,LEEpublic已经被删除。已经被删除。30n用于修改用于修改SQL Server登录的密码,基本语法如登录的密码,基本语法如下:下: sp_password 旧密码旧密码, 新密码新密码, 登录账户名登录账户名【例【例10-5】使用】使用sp_password存储过程将登录账户存储过程将登录账户lee的密码修改为的密码修改为222222。 sp_password 111111, 222222, lee执行结果为:执行结果为: 密码已更改。密码已更改。31n用于删除用于删除SQL Server登录账户,以阻止使用该登录账户,以阻止使用该登录账户访
20、问登录账户访问SQL Server,基本语法如下:,基本语法如下: sp_droplogin 登录名称登录名称【例【例10-6】使用】使用sp_droplogin存储过程删除登录账存储过程删除登录账户户lee。 sp_droplogin lee 执行结果为:执行结果为: 登录已除去。登录已除去。32本节介绍:本节介绍:n数据库用户概述数据库用户概述 n新建数据库用户新建数据库用户 n修改和删除数据库用户修改和删除数据库用户 拥有登录账户的用户才能通过拥有登录账户的用户才能通过SQL Server身份身份验证,从而获得对验证,从而获得对SQL Server实例的访问权限。实例的访问权限。但通过但
21、通过SQL Server的身份验证并不代表用户就能的身份验证并不代表用户就能够访问够访问SQL Server中的数据,要访问某个具体的中的数据,要访问某个具体的数据库,还必须使登录账户成为某数据库的用户。数据库,还必须使登录账户成为某数据库的用户。33两个特殊的数据库用户:两个特殊的数据库用户:nDbo:数据库所有者,是具有在数据库中执行所:数据库所有者,是具有在数据库中执行所有活动的权限的用户,它与登录账户有活动的权限的用户,它与登录账户sa相对应。相对应。nGuest:允许没有用户账户的登录访问数据库。:允许没有用户账户的登录访问数据库。当满足下列所有条件时,登录采用当满足下列所有条件时,
22、登录采用guest用户的用户的标识。标识。登录有访问登录有访问SQL Server实例的权限,但没实例的权限,但没有通过自己的用户账户访问数据库的权限。有通过自己的用户账户访问数据库的权限。数据库中含有数据库中含有guest用户账户。用户账户。34n 可以将权限应用到可以将权限应用到guest用户,就如同它是任何其他用用户,就如同它是任何其他用户账户一样。可以在除户账户一样。可以在除master和和tempdb外(在这两个数外(在这两个数据库中据库中guest用户必须始终存在)的所有数据库中添加或用户必须始终存在)的所有数据库中添加或删除删除guest用户。默认情况下,新建的数据库中没有用户。
23、默认情况下,新建的数据库中没有guest用户账户。用户账户。n创建数据库对象的用户称为数据库对象所有者。创建数创建数据库对象的用户称为数据库对象所有者。创建数据库对象的权限必须由数据库所有者或系统管理员授予。据库对象的权限必须由数据库所有者或系统管理员授予。但是,在授予数据库对象这些权限后,数据库对象所有但是,在授予数据库对象这些权限后,数据库对象所有者就可以创建对象并授予其他用户使用该对象的权限。者就可以创建对象并授予其他用户使用该对象的权限。数据库对象所有者没有特殊的登录数据库对象所有者没有特殊的登录 ID 或密码。对象创或密码。对象创建者被隐性授予数据库的所有权限,但其他用户必须被建者被
24、隐性授予数据库的所有权限,但其他用户必须被显式授予权限后才能访问该对象。显式授予权限后才能访问该对象。 35n使用企业管理器创建数据库用户使用企业管理器创建数据库用户 nsp_grantdbaccess存储过程创建数据库用户存储过程创建数据库用户 36n展开指定的数据库,选择展开指定的数据库,选择“用户用户”项,可以查项,可以查看该数据库中用户的信息,如下图。默认情况看该数据库中用户的信息,如下图。默认情况下,用户创建的数据库中只有一个用户,即下,用户创建的数据库中只有一个用户,即dbo。37n用鼠标右击用鼠标右击“用户用户”项,从快捷菜单中选择项,从快捷菜单中选择“新建数据库用户新建数据库用
25、户”命令,打开命令,打开“新建用户新建用户”对话框,如下图。对话框,如下图。38n使用使用sp_grantdbaccess存储过程可以将存储过程可以将SQL Server登录和登录和Windows用户(用户组)指定为当用户(用户组)指定为当前数据库用户,并使其能够被授予在数据库中前数据库用户,并使其能够被授予在数据库中执行活动的权限。基本语法如下:执行活动的权限。基本语法如下: sp_grantdbaccess 登录名登录名, 数据库用户名数据库用户名 数据库用户名:可以包含数据库用户名:可以包含1128个字符,包括个字符,包括字母、符号和数字,但不能包含反斜线符号字母、符号和数字,但不能包含
26、反斜线符号()、不能为)、不能为NULL或空字符串。如果没有指或空字符串。如果没有指定数据库用户名,则默认为与定数据库用户名,则默认为与“登录名登录名”相同相同39n使用使用sp_grantdbaccess存储过程为登录账户存储过程为登录账户lee创创建数据库用户。建数据库用户。 sp_grantdbaccess lee 执行结果为:执行结果为: 已向已向 lee 授予数据库访问权。授予数据库访问权。40n使用企业管理器修改数据库用户:右击数据库使用企业管理器修改数据库用户:右击数据库用户名,从弹出菜单中选择用户名,从弹出菜单中选择“属性属性”命令,打命令,打开开“用户属性用户属性”对话框。(
27、与对话框。(与“新建用户新建用户”对对话框类似,但其话框类似,但其“权限权限”按钮变为有效)可以按钮变为有效)可以在此对话框中修改用户信息。在此对话框中修改用户信息。n使用企业管理器删除数据库用户:右击数据库使用企业管理器删除数据库用户:右击数据库用户名,从弹出菜单中选择用户名,从弹出菜单中选择“删除删除”命令。命令。n使用使用sp_revokedbaccess存储过程删除数据库用存储过程删除数据库用户,基本语法如下:户,基本语法如下: sp_revokedbaccess 数据库用户名数据库用户名41n使用使用sp_revokedbaccess存储过程删除数据库用存储过程删除数据库用户户lee
28、。 sp_revokedbaccess lee 执行结果为:执行结果为: 用户已从当前数据库中除去。用户已从当前数据库中除去。42 角色是一个强大的工具。利用角色,角色是一个强大的工具。利用角色,SQL Server管理者可以将某些用户设置为某一角色,管理者可以将某些用户设置为某一角色,对一个角色授予、拒绝或废除的权限也适用于该对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员,这样只需对角色进行权限设置角色的任何成员,这样只需对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了便可以实现对所有用户权限的设置,大大减少了管理员的工作量。管理员的工作量。43角色角色固定服务器角色固
29、定服务器角色数据库角数据库角色色固定的数据库角色固定的数据库角色用户自定义的数据库角色用户自定义的数据库角色44 根据根据SQL Server的管理任务,以及这些任务的的管理任务,以及这些任务的相对重要性等级,把具有相对重要性等级,把具有SQL Server管理职能的管理职能的用户划分为不同的用户组,每一组定义为一种固用户划分为不同的用户组,每一组定义为一种固定服务器角色。每一组所具有的管理定服务器角色。每一组所具有的管理SQL Server的权限都是的权限都是SQL Server内置的,即不能对其权限内置的,即不能对其权限进行添加、修改和删除,可以在这些角色中添加进行添加、修改和删除,可以在
30、这些角色中添加用户以获得相关的管理权限。用户以获得相关的管理权限。45nSysadmin:可以在:可以在SQL Server中执行任何活动中执行任何活动nServeradmin:可以设置服务器范围的配置选项,关闭:可以设置服务器范围的配置选项,关闭服务器服务器nSetupadmin:可以管理链接服务器和启动过程:可以管理链接服务器和启动过程nSecurityadmin:可以管理登录和:可以管理登录和CREATE DATABASE权限,还可以读取错误日志和更改密码权限,还可以读取错误日志和更改密码nProcessadmin:可以管理在:可以管理在SQL Server中运行的进程中运行的进程nDb
31、creator:可以创建、更改和除去数据库:可以创建、更改和除去数据库nDiskadmin:可以管理磁盘文件:可以管理磁盘文件nBulkadmin:可以执行:可以执行BULK INSERT(大容量数据插(大容量数据插入)语句入)语句46 每个数据库还有一系列的固定数据库角色。在每个数据库还有一系列的固定数据库角色。在添加用户时,可以指定该用户属于哪一个数据库添加用户时,可以指定该用户属于哪一个数据库角色。虽然不同的数据库中可以存在名称相同的角色。虽然不同的数据库中可以存在名称相同的角色,但各个角色的作用域只是在特定的数据库角色,但各个角色的作用域只是在特定的数据库内。内。 例如,如果例如,如果
32、Database1和和Database2中都有叫中都有叫UserX的用户,将的用户,将Database1中的中的UserX添加到添加到Database1的的db_owner固定数据库角色中,对固定数据库角色中,对Database2中的中的UserX是否是是否是Database2的的db_owner角色成员没有任何影响角色成员没有任何影响47nPublic:每个数据库用户都属于:每个数据库用户都属于public角色角色ndb_owner:在数据库中有全部权限:在数据库中有全部权限ndb_accessadmin:可以增加或者删除数据库用:可以增加或者删除数据库用户、用户组和角色户、用户组和角色nd
33、b_securityadmin:管理数据库角色的角色和成:管理数据库角色的角色和成员,并管理数据库中的语句和对象权限员,并管理数据库中的语句和对象权限ndb_ddladmin:可以添加、修改或除去数据库中:可以添加、修改或除去数据库中的对象(运行所有的对象(运行所有DDL)ndb_backupoperator:可以备份和恢复数据库:可以备份和恢复数据库ndb_datareader:可以选择数据库内任何用户表:可以选择数据库内任何用户表中的所有数据中的所有数据48ndb_datawriter:可以更改数据库内任何用户表:可以更改数据库内任何用户表中的所有数据中的所有数据ndb_denydatar
34、eader:不能选择数据库内任何用:不能选择数据库内任何用户表中的任何数据户表中的任何数据ndb_denydatawriter:不能更改数据库内任何用:不能更改数据库内任何用户表中的任何数据户表中的任何数据49n用户还可以自定义数据库角色。可以:用户还可以自定义数据库角色。可以:使用企业管理器管理自定义数据库角色使用企业管理器管理自定义数据库角色使用存储过程管理自定义数据库角色。使用存储过程管理自定义数据库角色。50n展开指定的数据库,选择数据库中的展开指定的数据库,选择数据库中的“角色角色”项,可以查看到指定数据库的所有角色。项,可以查看到指定数据库的所有角色。n右击右击“角色角色”项,在弹
35、出菜单中选择项,在弹出菜单中选择“新建数新建数据库角色据库角色”,打开新建数据库角色对话框,打开新建数据库角色对话框51n在角色列表中,用鼠标右击角色名,在弹出菜在角色列表中,用鼠标右击角色名,在弹出菜单中选择单中选择“属性属性”命令,打开数据库角色属性命令,打开数据库角色属性对话框。用户可以在角色属性对话框中修改角对话框。用户可以在角色属性对话框中修改角色的属性。如修改角色权限,添加用户或删除色的属性。如修改角色权限,添加用户或删除角色中的用户等。角色中的用户等。52n用鼠标右击角色名称,在弹出的快捷菜单中选用鼠标右击角色名称,在弹出的快捷菜单中选择择“删除删除”命令,可以删除数据库角色。但
36、是命令,可以删除数据库角色。但是无法删除固定的数据库角色。无法删除固定的数据库角色。53nsp_addrole存储过程的功能是创建存储过程的功能是创建SQL Server角角色,基本语法如下:色,基本语法如下: sp_addrole 数据库角色名数据库角色名【例【例10-9】使用】使用sp_addrole存储过程创建数据库角存储过程创建数据库角色色newrole。 sp_addrole newrole 执行结果为:执行结果为: 新角色已添加。新角色已添加。54nsp_droprole存储过程的功能是删除存储过程的功能是删除SQL Server角色,基本语法如下:角色,基本语法如下: sp_dr
37、oprole 数据库角色名数据库角色名【例【例10-10】使用】使用sp_droprole存储过程删除数据库存储过程删除数据库角色角色newrole。 sp_droprole newrole 执行结果为:执行结果为: 角色已除去。角色已除去。55 角色只有包含了用户后才有存在的意义。向角角色只有包含了用户后才有存在的意义。向角色中添加用户后,用户就拥有了角色的所有权限;色中添加用户后,用户就拥有了角色的所有权限;将用户从角色中删除后,用户从角色得到的权限将用户从角色中删除后,用户从角色得到的权限将被取消。将被取消。n在企业管理器中添加和删除角色成员在企业管理器中添加和删除角色成员n使用使用sp
38、_addrolemember存储过程添加角色成员存储过程添加角色成员n使用使用sp_droprolemember存储过程删除角色成员存储过程删除角色成员本小节介绍:本小节介绍:56 右击角色名,在弹出菜单中选择右击角色名,在弹出菜单中选择“属性属性”命令,打开命令,打开“数据库角色属性数据库角色属性”对话框对话框(如左图如左图),单击单击“添加添加”按钮,按钮,打开打开“添加角色成员添加角色成员”对话框对话框(如右图如右图) 。列表框中显示了。列表框中显示了当前数据库中所有用户名,不包括当前数据库中所有用户名,不包括dbo。选择一个用户,。选择一个用户,单击单击“确定确定”按钮,可以将用户添加
39、到角色中。按钮,可以将用户添加到角色中。57nsp_addrolemember存储过程的功能是向角色中添加用户,存储过程的功能是向角色中添加用户,基本语法如下:基本语法如下: sp_addrolemember 数据库角色名数据库角色名, 数据库用户名数据库用户名【例【例10-11】使用】使用sp_addrolemember存储过程向数据库角存储过程向数据库角色色newrole中添加用户中添加用户lee。 sp_addrolemember newrole, lee 执行结果为:执行结果为: lee 已添加到角色已添加到角色 newrole 中。中。58 权限决定了用户在数据库中可以进行的操作。权
40、限决定了用户在数据库中可以进行的操作。可以对数据库用户或角色设置权限。可以对数据库用户或角色设置权限。本节介绍:本节介绍:权限的种类权限的种类设置权限设置权限593种类型:种类型:n对象权限对象权限n语句权限语句权限n暗示性权限。暗示性权限。60 对象权限表示一个用户对特定的数据库对象,对象权限表示一个用户对特定的数据库对象,如表、视图、字段等的操作权限,如用户能否进如表、视图、字段等的操作权限,如用户能否进行查询、删除、插入和修改一个表中的行,或能行查询、删除、插入和修改一个表中的行,或能否执行一个存储过程。否执行一个存储过程。61nSELECT、INSERT、UPDATE和和DELETE语
41、句权语句权限,它们可以应用到整个表或视图中。限,它们可以应用到整个表或视图中。nSELECT和和UPDATE语句权限,它们可以有选择语句权限,它们可以有选择性地应用到表或视图中的单个列上。性地应用到表或视图中的单个列上。nSELECT权限,它们可以应用到用户定义函数。权限,它们可以应用到用户定义函数。nINSERT和和DELETE语句权限,它们会影响整行,语句权限,它们会影响整行,因此只可以应用到表或视图中,不能应用到列上。因此只可以应用到表或视图中,不能应用到列上。nEXECUTE语句权限,它们可以影响存储过程和语句权限,它们可以影响存储过程和函数。函数。对象权限如下:对象权限如下:62nB
42、ACKUP DATABASE。nBACKUP LOG。nCREATE DATABASE。nCREATE DEFAULT。nCREATE FUNCTION。nCREATE PROCEDURE。nCREATE RULE。nCREATE TABLE。nCREATE VIEW。 语句权限表示一个用户对数据库的操作权限,如语句权限表示一个用户对数据库的操作权限,如能否执行创建和删除对象的语句,能否执行备份和能否执行创建和删除对象的语句,能否执行备份和恢复数据库的语句等。语句权限如下:恢复数据库的语句等。语句权限如下:63n暗示性权限指系统安装以后有些用户和角色不必暗示性权限指系统安装以后有些用户和角色不
43、必授权就有的权限。例如,授权就有的权限。例如,sysadmin固定服务器角固定服务器角色成员自动继承在色成员自动继承在SQL Server安装中进行操作或安装中进行操作或查看的全部权限。查看的全部权限。n数据库对象所有者拥有暗示性权限,可以对所拥数据库对象所有者拥有暗示性权限,可以对所拥有的对象执行一切活动。例如,拥有表的用户可有的对象执行一切活动。例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。允许其他用户对表进行操作的权限。64设置权限包括:设置权限包括:n授予权限:授予用户、组或角色的语句权限和对授予
44、权限:授予用户、组或角色的语句权限和对象权限,使数据库用户在当前数据库中具有执行象权限,使数据库用户在当前数据库中具有执行活动或处理数据的权限。活动或处理数据的权限。n拒绝权限:包括删除以前授予用户、组或角色的拒绝权限:包括删除以前授予用户、组或角色的权限,停用从其他角色继承的权限,确保用户、权限,停用从其他角色继承的权限,确保用户、组或角色将来不继承更高级别的组或角色的权限。组或角色将来不继承更高级别的组或角色的权限。n废除权限:废除以前授予或拒绝的权限。废除类废除权限:废除以前授予或拒绝的权限。废除类似于拒绝,因为二者都是在同一级别上删除已授似于拒绝,因为二者都是在同一级别上删除已授予的权
45、限。但是,废除权限是删除已授予的权限,予的权限。但是,废除权限是删除已授予的权限,并不妨碍用户、组或角色从更高级别继承已授予并不妨碍用户、组或角色从更高级别继承已授予的权限。的权限。65 用鼠标右击一个表、视图或存储过程,在弹出菜用鼠标右击一个表、视图或存储过程,在弹出菜单中选择单中选择“所有任务所有任务管理权限管理权限”,如图:,如图:66 打开打开“对象属性对象属性”对话框:对话框:67 用鼠标右击数据库,在弹出菜单中选择用鼠标右击数据库,在弹出菜单中选择“属性属性”,打开数据库属性对话框。单击打开数据库属性对话框。单击“权限权限”选项卡,可选项卡,可以设置用户的语句权限。如下图:以设置用
46、户的语句权限。如下图:68 用鼠标右击用户名,在弹出菜单中选择用鼠标右击用户名,在弹出菜单中选择“所有任所有任务务管理权限管理权限”,打开,打开“数据库用户属性数据库用户属性”对话框,对话框,可以设置用户的权限。如下图:可以设置用户的权限。如下图:69 用鼠标右击角色名,在弹出的快捷菜单中选择用鼠标右击角色名,在弹出的快捷菜单中选择“属性属性”,打开,打开“数据库角色属性数据库角色属性”对话框,单击对话框,单击 “权限权限”按钮,打开按钮,打开“数据库角色属性数据库角色属性”对话框,对话框,在在“权限权限”选项卡中可以设置角色对各种数据库对选项卡中可以设置角色对各种数据库对象的权限。如下图:象
47、的权限。如下图:70n授予语句权限授予语句权限n授予对象权限授予对象权限71n基本语法如下:基本语法如下: GRANT ALL | 语句语句 , .n TO 安全账户安全账户 , .n安全账户:当前数据库中的用户、角色或组,安全账户:当前数据库中的用户、角色或组,包括:包括:SQL Server 角色;角色;SQL Server用户;用户;Windows NT组;组;Windows NT用户。用户。若权限被授予若权限被授予SQL Server角色或角色或Windows NT组,权限可影响到当前数据库中该组或该角色组,权限可影响到当前数据库中该组或该角色成员的所有用户。成员的所有用户。【例【例1
48、0-13】使用】使用GRANT语句对用户语句对用户lee授予创建表授予创建表和创建视图的权限。和创建视图的权限。 GRANT CREATE TABLE, CREATE VIEW TO lee72n基本语法如下:基本语法如下: GRANT ALL | 权限权限 ,.n ( 列名列名 ,.n ) ON 表表 | 视图视图 | ON 表表 | 视图视图 ( 列名列名 ,.n ) | ON 存储过程存储过程 | ON用户自定义函数用户自定义函数 TO 安全账户安全账户 ,.n WITH GRANT OPTION AS 组组 | 角色角色 73n参数说明:参数说明:ALL:表示授予所有可用的权限。:表示
49、授予所有可用的权限。权限:当前授予的对象权限。如在表、视图权限:当前授予的对象权限。如在表、视图上可授予上可授予SELECT、INSERT、DELETE或或UPDATE权限。在列上可授予权限。在列上可授予SELECT和和UPDATE权限。权限。安全账户:权限将应用的安全账户。可以是:安全账户:权限将应用的安全账户。可以是:SQL Server用户用户 ;SQL Server角色;角色;Windows NT用户;用户;Windows NT组。组。WITH GRANT OPTION:使被授予权限的用:使被授予权限的用户或角色拥有再将该权限授予其他用户的权限。户或角色拥有再将该权限授予其他用户的权限
50、。AS 组组 | 角色角色:作为角色或组的成员使用角:作为角色或组的成员使用角色或组的权限。色或组的权限。74【例【例10-14】使用】使用GRANT语句对角色语句对角色newrole授予授予对表对表“学生学生”的的INSERT、UPDATE和和DELETE的权限。的权限。 GRANT INSERT, UPDATE, DELETE ON 学生学生 TO newrole【例【例10-15】使用】使用GRANT语句授予用户语句授予用户Mary、John和和Tom对对pubs数据库的数据库的authors表的插入、表的插入、修改、删除权限。修改、删除权限。 USE pubs GRANT INSERT