《SQLServer数据库开发教程第11章》由会员分享,可在线阅读,更多相关《SQLServer数据库开发教程第11章(99页珍藏版)》请在金锄头文库上搜索。
1、SQLServer2012SQLServer2012数据库开发教程数据库开发教程数据库开发教程数据库开发教程(第(第(第(第33版)版)版)版) 授课教师:授课教师:职务:职务:第第11章章SQLServer安全管理安全管理课程描述课程描述课程描述课程描述对于任何数据库系统而言,保证对于任何数据库系统而言,保证对于任何数据库系统而言,保证对于任何数据库系统而言,保证数据的安全性都是最重要的问题数据的安全性都是最重要的问题数据的安全性都是最重要的问题数据的安全性都是最重要的问题之一。安全性包括什么样的用户之一。安全性包括什么样的用户之一。安全性包括什么样的用户之一。安全性包括什么样的用户能够登录
2、到能够登录到能够登录到能够登录到SQL ServerSQL ServerSQL ServerSQL Server,以及用,以及用,以及用,以及用户登录后所能进行的操作。维护户登录后所能进行的操作。维护户登录后所能进行的操作。维护户登录后所能进行的操作。维护数据库的安全是数据库管理员的数据库的安全是数据库管理员的数据库的安全是数据库管理员的数据库的安全是数据库管理员的重要职责。在很多小规模的数据重要职责。在很多小规模的数据重要职责。在很多小规模的数据重要职责。在很多小规模的数据库环境中,管理员都使用库环境中,管理员都使用库环境中,管理员都使用库环境中,管理员都使用sasasasa用户用户用户用户
3、登录管理数据库,这并不是好的登录管理数据库,这并不是好的登录管理数据库,这并不是好的登录管理数据库,这并不是好的习惯。特别是在管理员比较多的习惯。特别是在管理员比较多的习惯。特别是在管理员比较多的习惯。特别是在管理员比较多的大型数据库环境中,必须明确每大型数据库环境中,必须明确每大型数据库环境中,必须明确每大型数据库环境中,必须明确每个管理员的职责,为每个管理员个管理员的职责,为每个管理员个管理员的职责,为每个管理员个管理员的职责,为每个管理员分配不同的用户,并定义其权限。分配不同的用户,并定义其权限。分配不同的用户,并定义其权限。分配不同的用户,并定义其权限。这样一方面可以使大家各司其职,这
4、样一方面可以使大家各司其职,这样一方面可以使大家各司其职,这样一方面可以使大家各司其职,不会出现一件事件所有人都管理,不会出现一件事件所有人都管理,不会出现一件事件所有人都管理,不会出现一件事件所有人都管理,可又谁都不管的情况;另一方面,可又谁都不管的情况;另一方面,可又谁都不管的情况;另一方面,可又谁都不管的情况;另一方面,当出现问题时也可以明确是谁的当出现问题时也可以明确是谁的当出现问题时也可以明确是谁的当出现问题时也可以明确是谁的责任。责任。责任。责任。 本章知识点本章知识点11.1 11.1 安全管理概述安全管理概述 11.2 11.2 登录登录 11.3 11.3 数据库用户数据库用
5、户 11.4 11.4 角色角色 11.5 11.5 权限管理权限管理 11.1安全管理概述安全管理概述pSQL ServerSQL Server的安全管理模型中包括的安全管理模型中包括SQL ServerSQL Server登录、数据库用登录、数据库用户、权限和角色户、权限和角色4 4个主要方面,具体如下。个主要方面,具体如下。p(1 1)SQL ServerSQL Server登录登录:要想连接到:要想连接到SQL ServerSQL Server服务器实例,必服务器实例,必须拥有相应的登录账户和密码。须拥有相应的登录账户和密码。SQL ServerSQL Server的身份认证系统验的身
6、份认证系统验证用户是否拥有有效的登录账户和密码,从而决定是否允许该证用户是否拥有有效的登录账户和密码,从而决定是否允许该用户连接到指定的用户连接到指定的SQL ServerSQL Server服务器实例。服务器实例。p(2 2)数据库用户数据库用户:通过身份认证后,用户可以连接到:通过身份认证后,用户可以连接到SQL SQL ServerServer服务器实例。但是,这并不意味着该用户可以访问到指服务器实例。但是,这并不意味着该用户可以访问到指定服务器上的所有数据库。在每个定服务器上的所有数据库。在每个SQL ServerSQL Server数据库中,都存数据库中,都存在一组在一组SQL Se
7、rverSQL Server用户账户。登录账户要访问指定数据库,就用户账户。登录账户要访问指定数据库,就要将自身映射到数据库的一个用户账户上,从而获得访问数据要将自身映射到数据库的一个用户账户上,从而获得访问数据库的权限。一个登录账户可以对应多个用户账户。库的权限。一个登录账户可以对应多个用户账户。p(3 3)权限权限:权限规定了用户在指定数据库中所能进行的操作。:权限规定了用户在指定数据库中所能进行的操作。p(4 4)角色角色:类似于:类似于WindowsWindows的用户组,角色可以对用户进行分的用户组,角色可以对用户进行分组管理。可以对角色赋予数据库访问权限,此权限将应用于角组管理。可
8、以对角色赋予数据库访问权限,此权限将应用于角色中的每一个用户。色中的每一个用户。 11.2登录登录p登录指用户连接到指定登录指用户连接到指定SQL ServerSQL Server数数据库实例的过程。在此期间,系统要据库实例的过程。在此期间,系统要对该用户进行身份验证。对该用户进行身份验证。p只有拥有正确的登录账户和密码,才只有拥有正确的登录账户和密码,才能连接到指定的数据库实例。能连接到指定的数据库实例。11.2.1 11.2.1 身份验证模式身份验证模式11.2.2 11.2.2 创建登录名创建登录名11.2.3 11.2.3 修改和删除登录名修改和删除登录名 11.2.1身份验证模式身份
9、验证模式p用户要访问用户要访问SQL SQL ServerServer中的数中的数据,首先需要据,首先需要登录到登录到SQL SQL ServerServer数据库数据库实例。登录时实例。登录时要从系统中获要从系统中获得授权,并通得授权,并通过系统的身份过系统的身份验证。验证。pSQL ServerSQL Server的的身份验证模式身份验证模式如图如图11-111-1所示。所示。 1Windows身份验证模式身份验证模式p当用户通过当用户通过WindowsWindows用户账户进行连接时,用户账户进行连接时,SQL SQL ServerServer通过回叫通过回叫WindowsWindows
10、操作系统以获得信息,操作系统以获得信息,重新验证账户名和密码。重新验证账户名和密码。pSQL ServerSQL Server通过使用网络用户的安全特性控制通过使用网络用户的安全特性控制登录访问,以实现与登录访问,以实现与WindowsWindows的登录安全集成。的登录安全集成。用户的网络安全特性在网络登录时建立,并通用户的网络安全特性在网络登录时建立,并通过过WindowsWindows域控制器进行验证。当网络用户尝试域控制器进行验证。当网络用户尝试连接时,连接时,SQL ServerSQL Server使用基于使用基于WindowsWindows的功能确的功能确定经过验证的网络用户名。定
11、经过验证的网络用户名。2SQLServer身份验证身份验证p在在SQL Server SQL Server Management Management StudioStudio中,用鼠中,用鼠标右击数据库服标右击数据库服务器实例名,在务器实例名,在弹出的快捷菜单弹出的快捷菜单中选择中选择“属性属性”命令,打开命令,打开“属属性性”对话框,选对话框,选择择“安全性安全性”页,页,即可设置即可设置SQL SQL ServerServer的身份认的身份认证模式,如图证模式,如图11-11-2 2所示。所示。 11.2.2创建登录名创建登录名p1 1在在SQL Server Management St
12、udioSQL Server Management Studio中创建登录名中创建登录名p在在SQL Server Management StudioSQL Server Management Studio中,选中中,选中“安全性安全性”/ /“登录名登录名”项,可以查看项,可以查看SQL ServerSQL Server数据库中当前数据库中当前的登录名信息,如图的登录名信息,如图11-311-3所示。所示。“新建登录新建登录”对话框对话框p右键单击右键单击“登登录名录名”,在弹,在弹出菜单中选择出菜单中选择“新建登录名新建登录名”命令,打开命令,打开“新建登录新建登录”对话框,如图对话框,如
13、图11-411-4所示。所示。2使用使用SQL语句创建登录名语句创建登录名p可以使用可以使用CREATE LOGINCREATE LOGIN语句创建登录名,语法如下:语句创建登录名,语法如下:CREATE LOGIN login_name WITH | CREATE LOGIN login_name WITH | FROM FROM p其中其中login_namelogin_name是新建的登录名,是新建的登录名,为登为登录选项设置,录选项设置,为新建登录名的来源(例如为新建登录名的来源(例如WindowsWindows登录、证书或非对称密钥等)。登录、证书或非对称密钥等)。p的语法如下:的语
14、法如下: := := PASSWORD = password HASHED MUST_CHANGE PASSWORD = password HASHED MUST_CHANGE , ,. , ,. option_list2poption_list2option_list2指定更多选项设置,语法如下:指定更多选项设置,语法如下: := := SID = sid SID = sid | DEFAULT_DATABASE = database | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | DEFAULT_LANGUAGE
15、= language | CHECK_EXPIRATION = ON | OFF | CHECK_EXPIRATION = ON | OFF | CHECK_POLICY = ON | OFF | CHECK_POLICY = ON | OFF CREDENTIAL = credential_name CREDENTIAL = credential_name 【例例11-1】p创建登录名创建登录名leelee,采用,采用SQL ServerSQL Server验证方验证方式,密码为式,密码为Abc12345Abc12345,代码如下:,代码如下:CREATE LOGIN lee WITH PA
16、SSWORD = CREATE LOGIN lee WITH PASSWORD = Abc12345 MUST_CHANGE, Abc12345 MUST_CHANGE, CHECK_EXPIRATION=ONCHECK_EXPIRATION=ONGOGOCREATELOGIN语句中语句中子句的语法子句的语法结构结构 := := WINDOWS WITH WINDOWS WITH ,. ,. | CERTIFICATE certname | CERTIFICATE certname | ASYMMETRIC KEY asym_key_name | ASYMMETRIC KEY asym_key
17、_namep指定指定WindowsWindows登录名的登录名的更多选项,语法如下:更多选项,语法如下: := := DEFAULT_DATABASE = database DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | DEFAULT_LANGUAGE = language【例例11-2】p从从WidnowsWidnows域中创建登录名的代码如下:域中创建登录名的代码如下:CREATE LOGIN DBServerdbuser FROM WINDOWS;CREATE LOGIN DBServerdbuser FROM W
18、INDOWS;GOGOp执行时需将执行时需将DBServerdbuserDBServerdbuser替换为已经替换为已经存在的存在的WindowsWindows帐户。帐户。3使用系统存储过程创建登录账户使用系统存储过程创建登录账户p(1 1)使用系统存储过程创建)使用系统存储过程创建WindowsWindows身份身份验证模式登录账户验证模式登录账户p使用使用sp_grantloginsp_grantlogin存储过程可以创建新存储过程可以创建新的的WindowsWindows身份验证模式登录账户,基本身份验证模式登录账户,基本语法如下:语法如下:sp_grantlogin sp_grantl
19、ogin 登录名称登录名称 【例例11-3】p使用使用sp_grantloginsp_grantlogin存储过程将用户存储过程将用户LEEpublicLEEpublic映射到映射到SQL ServerSQL Server登录账户。登录账户。p具体语句如下:具体语句如下:sp_grantlogin LEEpublicsp_grantlogin LEEpublicp执行结果为:执行结果为:已向已向 LEEpublic LEEpublic 授予登录访问权。授予登录访问权。(2)使用系统存储过程创建)使用系统存储过程创建SQLServer身份身份验证模式的登录账户验证模式的登录账户p使用使用sp_a
20、ddloginsp_addlogin存储过程可以创建新的登录账存储过程可以创建新的登录账户,基本语法如下:户,基本语法如下:sp_addlogin sp_addlogin 登录名称登录名称, , 登录密码登录密码, , 默默认数据库认数据库, , 默认语言默认语言pSQL Server SQL Server 登录名称和密码可以包含登录名称和密码可以包含1 1128128个个字符,包括任何字母、符号和数字。但是,登字符,包括任何字母、符号和数字。但是,登录名不能出现如下情况。录名不能出现如下情况。p 含有反斜线(含有反斜线( )。)。p 是保留的登录名称,例如是保留的登录名称,例如sasa或或p
21、ublicpublic,或者,或者已经存在。已经存在。p 为为NULLNULL,或为空字符串,或为空字符串()()。【例例11-4】p使用使用sp_addloginsp_addlogin存储过程创建存储过程创建SQL SQL ServerServer登录账户登录账户leelee,密码为,密码为111111111111,默,默认数据库为认数据库为HrSystemHrSystem。p具体语句如下:具体语句如下:sp_addlogin lee, 111111, sp_addlogin lee, 111111, HrSystemHrSystemp执行结果为:执行结果为:已创建新登录。已创建新登录。11
22、.2.3修改和删除登录名修改和删除登录名p1 1使用使用Management StudioManagement Studio修改账户修改账户p2 2使用使用Management StudioManagement Studio删除账户删除账户p3 3使用系统存储过程修改和删除账户使用系统存储过程修改和删除账户1使用使用ManagementStudio修改账户修改账户p(1 1)修改)修改WindowsWindows身份验证模式账户身份验证模式账户p(2 2)修改)修改SQL ServerSQL Server身份验证模式账户身份验证模式账户(1)修改)修改Windows身份验证模式账户身份验证模式
23、账户p如果是如果是WindowsWindows身份验证模式身份验证模式账户,则可以账户,则可以修改该账户的修改该账户的安全性访问方安全性访问方式、默认数据式、默认数据库和默认语言库和默认语言等,如图等,如图11-511-5所示。所示。 (2)修改)修改SQLServer身份验证模式账户身份验证模式账户 (如果是如果是SQL SQL ServerServer身份身份验证模式账验证模式账户,则可以户,则可以修改该账户修改该账户的密码、默的密码、默认数据库和认数据库和默认语言等,默认语言等,如图如图11-611-6所所示。示。 2使用使用ManagementStudio删除账户删除账户p在在Mana
24、gement StudioManagement Studio中,用鼠标右键中,用鼠标右键单击单击SQL ServerSQL Server账户,在弹出的快捷菜账户,在弹出的快捷菜单中选择单中选择“删除删除”命令,在弹出的确认命令,在弹出的确认对话框中单击对话框中单击“是是”按钮,可以删除该按钮,可以删除该账户。账户。3使用系统存储过程修改和删除账户使用系统存储过程修改和删除账户(1 1)sp_denyloginsp_denylogin存储过程存储过程sp_denyloginsp_denylogin存储过程用于阻止存储过程用于阻止WindowsWindows用户或用户组连用户或用户组连接到接到SQ
25、L ServerSQL Server实例,它的基本语法如下:实例,它的基本语法如下:sp_denylogin sp_denylogin 用户或用户组名用户或用户组名 sp_denyloginsp_denylogin只能和只能和WindowsWindows账户一起使用,账户一起使用,“用户或用用户或用户组名户组名”格式为格式为“域名域名 用户名用户名”。sp_denyloginsp_denylogin无法用无法用于通过于通过sp_addloginsp_addlogin添加的添加的SQL ServerSQL Server登录。登录。sp_denyloginsp_denylogin和和sp_gran
26、tloginsp_grantlogin是对应的两个存储过程,是对应的两个存储过程,它们可以互相反转对方的效果,允许和拒绝用户访问它们可以互相反转对方的效果,允许和拒绝用户访问SQL SQL ServerServer。【例例11-5】p使用使用sp_denyloginsp_denylogin存储过程拒绝用户存储过程拒绝用户LEEpublicLEEpublic访问访问SQL ServerSQL Server实例。实例。p具体语句如下:具体语句如下:sp_denylogin LEEpublicsp_denylogin LEEpublic执行结果为:执行结果为:已拒绝对已拒绝对 LEEpublic L
27、EEpublic 的登录访问权。的登录访问权。(2)sp_revokelogin存储过程存储过程psp_revokeloginsp_revokelogin存储过程用于删除存储过程用于删除SQL ServerSQL Server中使用中使用sp_denyloginsp_denylogin或或sp_grantloginsp_grantlogin创建的创建的WindowsWindows身份认证模式登录名,它的基本语法如下:身份认证模式登录名,它的基本语法如下:sp_revokelogin sp_revokelogin 用户或用户组名用户或用户组名 【例例11-6】p使用使用sp_revokelogi
28、nsp_revokelogin存储过程删除用户存储过程删除用户LEEpublicLEEpublic对应的对应的SQL ServerSQL Server登录账户。登录账户。p具体语句如下:具体语句如下:sp_revokelogin LEEpublicsp_revokelogin LEEpublicp执行结果为:执行结果为:已废除已废除 LEEpublic LEEpublic 的登录访问权。的登录访问权。从登录列表中可以看到,从登录列表中可以看到,LEEpublicLEEpublic已经被删已经被删除。除。(3)sp_password存储过程存储过程psp_passwordsp_password存
29、储过程用于修改存储过程用于修改SQL ServerSQL Server登录登录的密码,它的基本语法如下:的密码,它的基本语法如下:sp_password sp_password 旧密码旧密码, , 新密码新密码, , 登录名登录名 p【例例11-711-7】使用使用sp_passwordsp_password存储过程将登录账存储过程将登录账户户leelee的密码修改为的密码修改为222222222222。p具体语句如下:具体语句如下:sp_password 111111, 222222, leesp_password 111111, 222222, leep执行结果为:执行结果为:密码已更改。
30、密码已更改。(4)sp_droplogin存储过程存储过程(3 3)sp_droploginsp_droplogin存储过程用于删除存储过程用于删除SQL SQL ServerServer登录账户,以阻止使用该登录账户登录账户,以阻止使用该登录账户访问访问SQL ServerSQL Server,它的基本语法如下:,它的基本语法如下:sp_droplogin sp_droplogin 登录名称登录名称 【例例11-811-8】使用使用sp_droploginsp_droplogin存储过程删除登存储过程删除登录账户录账户leelee。具体语句如下:具体语句如下:sp_droplogin lee
31、sp_droplogin lee执行结果为:执行结果为:登录已除去。登录已除去。11.3数据库用户数据库用户11.3.1 数据库用户概述11.3.2 新建数据库用户11.3.3 修改和删除数据库用户11.3.1数据库用户概述数据库用户概述pSQL ServerSQL Server中有两个特殊的数据库用户,中有两个特殊的数据库用户,即即dbodbo和和guestguest。pdbodbo也称数据库所有者,是具有在数据也称数据库所有者,是具有在数据库中执行所有活动的权限的用户,它与库中执行所有活动的权限的用户,它与登录账户登录账户sasa相对应。相对应。pguestguest用户账户允许没有用户账
32、户的登用户账户允许没有用户账户的登录访问数据库。当满足下列所有条件时,录访问数据库。当满足下列所有条件时,登录采用登录采用guestguest用户的标识用户的标识11.3.2新建数据库用户新建数据库用户1 1在在SQL SQL Server Server Management Management StudioStudio中中管管理理用用户户2 2使用使用CREATE USERCREATE USER语句创建用户语句创建用户3 3使使用用sp_grantdbaccesssp_grantdbaccess存存储储过过程程创创建建数数据据库库用户用户1在在SQLServerManagementStud
33、io中管中管理用户理用户在在SQL Server Management StudioSQL Server Management Studio中,展开要添中,展开要添加用户的数据库,例如加用户的数据库,例如HrSystemHrSystem,双击,双击“安安全性全性”/ /“用户用户”项,可以查看当前数据库中项,可以查看当前数据库中所有存在的用户,如图所有存在的用户,如图11-711-7所示。所示。“新建用户新建用户”对话框对话框右击右击“用户用户”项,在弹出菜项,在弹出菜单中选择单中选择“新新建用户建用户”,打,打开开“新建用户新建用户”对话框,如对话框,如图图11-811-8所示。所示。 2使
34、用使用CREATEUSER语句创建用户语句创建用户pCREATE USERCREATE USER语句创建用户的基本语法结构如语句创建用户的基本语法结构如下:下:CREATE USER user_nameCREATE USER user_name FOR | FROM FOR | FROM LOGIN login_name LOGIN login_name | WITHOUT LOGIN | WITHOUT LOGIN WITH DEFAULT_SCHEMA = schema_name WITH DEFAULT_SCHEMA = schema_name 【例例11-9】p创建登录名创建登录名le
35、elee,然后创建同名的用户,代码,然后创建同名的用户,代码如下:如下:CREATE LOGIN lee CREATE LOGIN lee WITH PASSWORD = Abc12345; WITH PASSWORD = Abc12345;GOGOUSE HrSystem;USE HrSystem;GOGOCREATE USER lee;CREATE USER lee;GOGO3使用使用sp_grantdbaccess存储过程创建数存储过程创建数据库用户据库用户p使用使用sp_grantdbaccesssp_grantdbaccess存储过程可以存储过程可以将将SQL ServerSQL S
36、erver登录和登录和WindowsWindows用户(用用户(用户组)指定为当前数据库用户,并使户组)指定为当前数据库用户,并使其能够被授予在数据库中执行活动的其能够被授予在数据库中执行活动的权限。它的基本语法如下:权限。它的基本语法如下:sp_grantdbaccess sp_grantdbaccess 登录名登录名, , 数据库数据库用户名用户名【例例11-10】p使用使用sp_grantdbaccesssp_grantdbaccess存储过程为登录账户存储过程为登录账户leelee创建数据库用户。创建数据库用户。p具体语句如下:具体语句如下:sp_grantdbaccess leesp
37、_grantdbaccess lee1.3.3修改和删除数据库用户修改和删除数据库用户p1 1使用使用SQL Server Management StudioSQL Server Management Studio修修改数据库用户改数据库用户p2 2使用使用SQL Server Management StudioSQL Server Management Studio删删除数据库用户除数据库用户p3 3使用使用ALTER USERALTER USER语句修改用户信息语句修改用户信息p4 4使用使用DROP USERDROP USER语句删除数据库用户语句删除数据库用户 1使用使用SQLServ
38、erManagementStudio修修改数据库用户改数据库用户p在在SQL Server Management StudioSQL Server Management Studio中,右键中,右键单击用户,选择单击用户,选择“属性属性”命令,就可以打开命令,就可以打开“属性属性”对话框。对话框。“用户属性用户属性”对话框与图对话框与图11-811-8所示的所示的“新建用户新建用户”对话框格式相同,对话框格式相同,可以在此对话框中修改用户信息。不能修改可以在此对话框中修改用户信息。不能修改数据库用户名,但可以设置用户所属的架构数据库用户名,但可以设置用户所属的架构和角色。和角色。2使用使用SQ
39、LServerManagementStudio删删除数据库用户除数据库用户p在在SQL Server Management StudioSQL Server Management Studio中,右击用中,右击用户名,选择户名,选择“删除删除”命令,可以删除用户命令,可以删除用户IDID。3使用使用ALTERUSER语句修改用户信息语句修改用户信息p使用使用ALTER USERALTER USER语句只能修改用户名语句只能修改用户名和架构信息,语法如下:和架构信息,语法如下:ALTER USER user_name ALTER USER user_name WITH ,.n WITH ,.n
40、:= := NAME = new_user_name NAME = new_user_name | DEFAULT_SCHEMA = schema_name| DEFAULT_SCHEMA = schema_name【例例11-11】p将用户将用户leelee改名为改名为johneyjohney,可以使用下,可以使用下面的语句:面的语句:ALTER USER lee WITH NAME = johneyALTER USER lee WITH NAME = johney3使用使用sp_revokedbaccess存储过程删除数存储过程删除数据库用户据库用户p存储过程sp_revokedbacce
41、ss的功能是删除指定的数据库用户,它的基本语法如下:sp_revokedbaccess 数据库用户名【例11-12】p使用使用sp_revokedbaccesssp_revokedbaccess存储过程删除数存储过程删除数据库用户据库用户leelee。p具体语句如下:具体语句如下:sp_revokedbaccess leesp_revokedbaccess leep执行结果为:执行结果为:用户已从当前数据库中除去。用户已从当前数据库中除去。4使用使用DROPUSER语句删除数据库用户语句删除数据库用户pDROP USERDROP USER语句的语法结构如下:语句的语法结构如下:DROP USE
42、R DROP USER 数据库用户名数据库用户名 p【例例11-1311-13】要删除用户要删除用户johneyjohney,可以,可以使用下面的语句:使用下面的语句:DROP USER johneyDROP USER johney11.4角色角色p11.4.1 11.4.1 角色管理角色管理p11.4.2 11.4.2 管理角色中的用户管理角色中的用户11.4.1角色管理角色管理p1 1固定服务器角色固定服务器角色p2 2固定数据库角色固定数据库角色p3 3用户自定义的数据库角色用户自定义的数据库角色1固定服务器角色固定服务器角色角 色 名说 明sysadmin可以在SQL Server中执
43、行任何活动serveradmin可以设置服务器范围的配置选项,关闭服务器setupadmin可以管理链接服务器和启动过程securityadmin可以管理登录和CREATE DATABASE权限,还可以读取错误日志和更改密码processadmin可以管理在SQL Server中运行的进程dbcreator可以创建、更改和除去数据库diskadmin可以管理磁盘文件bulkadmin可以执行BULK INSERT(大容量数据插入)语句2固定数据库角色固定数据库角色固定数据库角色说 明public每个数据库用户都属于public角色db_owner在数据库中有全部权限db_accessadmin
44、可以增加或者删除数据库用户、用户组和角色db_securityadmin管理数据库角色的角色和成员,并管理数据库中的语句和对象权限db_ddladmin可以添加、修改或除去数据库中的对象(运行所有DDL)db_backupoperator可以备份和恢复数据库db_datareader可以选择数据库内任何用户表中的所有数据db_datawriter可以更改数据库内任何用户表中的所有数据db_denydatareader不能选择数据库内任何用户表中的任何数据db_denydatawriter不能更改数据库内任何用户表中的任何数据3用户自定义的数据库角色用户自定义的数据库角色p打开打开SQL Ser
45、ver Management StudioSQL Server Management Studio,在对象资源管理器中,展,在对象资源管理器中,展开要在其中创建角色的数据库,然后展开开要在其中创建角色的数据库,然后展开“安全性安全性”“角色角色”。如果要创建数据库角色,则右键单击如果要创建数据库角色,则右键单击“数据库角色数据库角色”, ,在弹出菜单在弹出菜单中选择中选择“新建数据库角色新建数据库角色”,打开,打开“新建数据库角色新建数据库角色”窗口,如窗口,如图图11-911-9所示。所示。新建应用程序角色新建应用程序角色p如果要创建应用程序角如果要创建应用程序角色,则右键单击色,则右键单击
46、“应用应用程序角色程序角色”,在弹出菜,在弹出菜单中单击单中单击“新建应用程新建应用程序角色序角色”命令,打开如命令,打开如图图11-1011-10所示的对话框。所示的对话框。在在“角色名称角色名称”文本框文本框中输入新角色名称,选中输入新角色名称,选择或输入角色的所有者,择或输入角色的所有者,然后选中角色拥有的架然后选中角色拥有的架构。与数据库角色不同,构。与数据库角色不同,在创建应用程序角色时,在创建应用程序角色时,需要指定角色的密码,需要指定角色的密码,而且不能向角色中添加而且不能向角色中添加用户。配置完成后,单用户。配置完成后,单击击“确定确定”按钮按钮. .使用使用CREATEROL
47、E语句语句可以使用可以使用CREATE ROLECREATE ROLE语句创建数据库角色,其语语句创建数据库角色,其语法结构如下:法结构如下:CREATE ROLE role_name AUTHORIZATION CREATE ROLE role_name AUTHORIZATION owner_name owner_name 参数说明如下:参数说明如下:prole_namerole_name指定角色名称。指定角色名称。pAUTHORIZATION owner_nameAUTHORIZATION owner_name指定拥有新角色的指定拥有新角色的数据库用户或角色。如果未指定用户,则执行数据库
48、用户或角色。如果未指定用户,则执行 CREATE ROLECREATE ROLE的用户将拥有该角色。的用户将拥有该角色。【例例11-14】p在数据库在数据库HrSystemHrSystem中创建数据库角色中创建数据库角色new_dbrolenew_dbrole,可以使用如下代码:,可以使用如下代码:USE HrSystemUSE HrSystemCREATE ROLE new_dbroleCREATE ROLE new_dbrole使用使用CREATEAPPLICATIONROLE语句语句可以使用可以使用CREATE APPLICATION ROLECREATE APPLICATION ROL
49、E语句创建应用程序角色,其语法语句创建应用程序角色,其语法结构如下:结构如下:CREATE APPLICATION ROLE application_role_name CREATE APPLICATION ROLE application_role_name WITH PASSWORD = password , DEFAULT_SCHEMA = WITH PASSWORD = password , DEFAULT_SCHEMA = schema_name schema_name 参数说明如下:参数说明如下:papplication_role_nameapplication_role_name
50、指定应用程序角色的名称。指定应用程序角色的名称。pPASSWORD = passwordPASSWORD = password指定用于激活应用程序角色的密码。指定用于激活应用程序角色的密码。pDEFAULT_SCHEMA = schema_nameDEFAULT_SCHEMA = schema_name指定服务器在解析该角色的对象指定服务器在解析该角色的对象名称时将搜索的第一个架构。如果未定义名称时将搜索的第一个架构。如果未定义DEFAULT_SCHEMADEFAULT_SCHEMA,则应,则应用程序角色将使用用程序角色将使用DBODBO作为其默认架构。作为其默认架构。schema_name
51、schema_name 可以是数据可以是数据库中不存在的架构。库中不存在的架构。 【例例11-15】p在数据库在数据库HrSystemHrSystem中创建应用程序角色中创建应用程序角色new_approlenew_approle,密码为,密码为approleapprole,代码如下:,代码如下:USE HrSystemUSE HrSystemCREATE APPLICATION ROLE new_approle CREATE APPLICATION ROLE new_approle WITH PASSWORD = approleWITH PASSWORD = approlesp_addrol
52、e存储过程存储过程psp_addrolesp_addrole存储过程的功能是创建存储过程的功能是创建SQL ServerSQL Server角色,它的基本语法如下:角色,它的基本语法如下:sp_addrole sp_addrole 数据库角色名数据库角色名 p【例例11-1611-16】使用使用sp_addrolesp_addrole存储过程创建数据存储过程创建数据库角色库角色newrolenewrole。p具体语句如下:具体语句如下:sp_addrole newrolesp_addrole newrolep执行结果为:执行结果为:新角色已添加。新角色已添加。sp_droprole存储过程存储
53、过程psp_droprolesp_droprole存储过程的功能是删除存储过程的功能是删除SQL ServerSQL Server角色,它的基本语法如下:角色,它的基本语法如下:sp_droprole sp_droprole 数据库角色名数据库角色名 p【例例11-1711-17】使用使用sp_droprolesp_droprole存储过程删除数存储过程删除数据库角色据库角色newrolenewrole。p具体语句如下:具体语句如下:sp_droprole newrolesp_droprole newrolep执行结果为:执行结果为:角色已除去。角色已除去。11.4.2管理角色中的用户管理角色
54、中的用户p1 1在在SQL SQL Server Server Management Management StudioStudio中中添加和删除角色成员添加和删除角色成员p2 2使使用用sp_addrolemembersp_addrolemember存存储储过过程程添添加加角色成员角色成员p3 3使使用用sp_droprolemembersp_droprolemember存存储储过过程程删删除角色成员除角色成员1在在SQLServerManagementStudio中添中添加和删除角色成员加和删除角色成员p在在SQL SQL Server Server Management Manageme
55、nt StudioStudio中右中右键单击数据键单击数据库角色,在库角色,在快捷菜单中快捷菜单中选择选择“属性属性”命令,打命令,打开开“数据库数据库角色属性角色属性”窗口,如图窗口,如图11-1111-11所示。所示。 选择数据库用户或角色选择数据库用户或角色p单击单击“添加添加”按钮,打开按钮,打开“选择数据库用户或角色选择数据库用户或角色”对话框,如对话框,如图图11-1211-12所示。所示。p以直接输入用户名,也可以单击以直接输入用户名,也可以单击“浏览浏览”按钮,打开按钮,打开“查找对象查找对象”对话框,从列表中选择用户,如图对话框,从列表中选择用户,如图11-1311-13所示
56、。列表框中显示了所示。列表框中显示了当前数据库中所有用户名和角色,不包括当前数据库中所有用户名和角色,不包括dbodbo。选择一个用户,单。选择一个用户,单击击“确定确定”按钮,可以将用户添加到角色中。按钮,可以将用户添加到角色中。 2使用使用sp_addrolemember存储过程添加角存储过程添加角色成员色成员psp_addrolemembersp_addrolemember存储过程的功能是向角色中存储过程的功能是向角色中添加用户,基本语法如下:添加用户,基本语法如下:sp_addrolemember sp_addrolemember 数据库角色名数据库角色名, , 数据库用数据库用户名户
57、名 p【例例11-1811-18】使用使用sp_addrolemembersp_addrolemember存储过程向存储过程向数据库角色数据库角色new_dbrolenew_dbrole中添加用户中添加用户johneyjohney,具,具体语句如下:体语句如下:USE HrSystemUSE HrSystemsp_addrolemember new_dbrole, johneysp_addrolemember new_dbrole, johneyp注意,语句中指定的角色和用户必须已经存在。注意,语句中指定的角色和用户必须已经存在。 3使用使用sp_droprolemember存储过程删除存储过
58、程删除角色成员角色成员psp_droprolemembersp_droprolemember存储过程的功能是从角色中存储过程的功能是从角色中删除用户,它的基本语法如下:删除用户,它的基本语法如下:sp_droprolemember sp_droprolemember 数据库角色名数据库角色名, , 数据库用数据库用户名户名 p【例例11-1911-19】使用使用sp_addrolemembersp_addrolemember存储过程从存储过程从数据库角色数据库角色new_dbrolenew_dbrole中删除用户中删除用户johneyjohney,具,具体语句如下:体语句如下:USE HrSy
59、stemUSE HrSystemGOGOsp_droprolemember new_dbrole, johneysp_droprolemember new_dbrole, johney11.5权限管理权限管理p11.5.1 11.5.1 权限的种类权限的种类p11.5.2 11.5.2 设置权限设置权限11.5.1权限的种类权限的种类p1 1对象权限对象权限p2 2语句权限语句权限p3 3暗示性权限暗示性权限1对象权限对象权限对象权限表示一个用户对特定的数据库对象,如表、视图、对象权限表示一个用户对特定的数据库对象,如表、视图、字段等的操作权限,如用户能否进行查询、删除、插入字段等的操作权限,
60、如用户能否进行查询、删除、插入和修改一个表中的行,或能否执行一个存储过程。对象和修改一个表中的行,或能否执行一个存储过程。对象权限如下。权限如下。 SELECTSELECT、INSERTINSERT、UPDATEUPDATE和和DELETEDELETE语句权限,它们可以语句权限,它们可以应用到整个表或视图中。应用到整个表或视图中。 SELECTSELECT和和UPDATEUPDATE语句权限,它们可以有选择性地应用到语句权限,它们可以有选择性地应用到表或视图中的单个列上。表或视图中的单个列上。 SELECTSELECT权限,它们可以应用到用户定义函数。权限,它们可以应用到用户定义函数。 INS
61、ERTINSERT和和DELETEDELETE语句权限,它们会影响整行,因此只可语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。以应用到表或视图中,而不能应用到单个列上。 EXECUTEEXECUTE语句权限,它可以影响存储过程和函数。语句权限,它可以影响存储过程和函数。2语句权限语句权限语句权限表示一个用户对数据库的操作权限,如能否执行语句权限表示一个用户对数据库的操作权限,如能否执行创建和删除对象的语句,能否执行备份和恢复数据库的创建和删除对象的语句,能否执行备份和恢复数据库的语句等。语句权限如下。语句等。语句权限如下。 BACKUP DATABASEBACKU
62、P DATABASE:备份数据库的权限。:备份数据库的权限。 BACKUP LOGBACKUP LOG:备份数据库日志的权限。:备份数据库日志的权限。 CREATE DATABASECREATE DATABASE:创建数据库的权限。:创建数据库的权限。 CREATE DEFAULTCREATE DEFAULT:创建默认值对象的权限。:创建默认值对象的权限。 CREATE FUNCTIONCREATE FUNCTION:创建函数的权限。:创建函数的权限。 CREATE PROCEDURECREATE PROCEDURE:创建存储过程的权限。:创建存储过程的权限。 CREATE RULECREAT
63、E RULE:创建规则的权限。:创建规则的权限。 CREATE TABLECREATE TABLE:创建表的权限。:创建表的权限。 CREATE VIEWCREATE VIEW:创建视图的权限。:创建视图的权限。3暗示性权限暗示性权限p暗示性权限指系统安装以后有些用户和角暗示性权限指系统安装以后有些用户和角色不必授权就有的权限。例如,色不必授权就有的权限。例如,sysadminsysadmin固定服务器角色成员自动继承在固定服务器角色成员自动继承在SQL SQL ServerServer安装中进行操作或查看的全部权限。安装中进行操作或查看的全部权限。p数据库对象所有者拥有暗示性权限,可以数据库
64、对象所有者拥有暗示性权限,可以对所拥有的对象执行一切活动。例如,拥对所拥有的对象执行一切活动。例如,拥有表的用户可以查看、添加或删除数据,有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进更改表定义,或控制允许其他用户对表进行操作的权限。行操作的权限。11.5.2设置权限设置权限p1 1使用使用SQL Server Management StudioSQL Server Management Studio管理对象权限管理对象权限p2 2使用使用SQL Server Management StudioSQL Server Management Studio管理数据库权限管理
65、数据库权限p3 3使用使用SQL Server Management StudioSQL Server Management Studio管理用户的权限管理用户的权限p4 4使用使用GRANTGRANT语句语句 p5 5使用使用DENYDENY语句语句p6 6使用使用REVOKEREVOKE语句语句1使用使用SQLServerManagementStudio管管理对象权限理对象权限p在在SQL Server SQL Server Management StudioManagement Studio中,右键单击一个表、中,右键单击一个表、视图和存储过程(例视图和存储过程(例如右键单击表如右键单击
66、表EmployeesEmployees),在快),在快捷菜单中选择捷菜单中选择“属性属性”,打开表属性窗口。,打开表属性窗口。在在“选择项选择项”列表中列表中选择选择“权限权限”,可以,可以设置表的权限,如图设置表的权限,如图11-1411-14所示。所示。选择用户或角色选择用户或角色p单击单击“搜索搜索”按按钮,打开钮,打开“选择选择用户或角色用户或角色”对对话框,如图话框,如图11-1511-15所示。可以直接所示。可以直接输入用户或角色输入用户或角色名,也可以单击名,也可以单击“浏览浏览”按钮,按钮,打开打开“查找对象查找对象”对话框,选择对话框,选择用户或角色,如用户或角色,如图图11
67、-1611-16所示。所示。管理数据库对象权限管理数据库对象权限2使用使用SQLServerManagementStudio管管理数据库权限理数据库权限p在在SQL Server SQL Server Management StudioManagement Studio中,右键单击数据库,中,右键单击数据库,在弹出菜单中选择在弹出菜单中选择“属性属性”,打开数据库,打开数据库属性对话框。在属性对话框。在“选选择页择页”列表中单击列表中单击“权限权限”,可以设置数,可以设置数据库权限。如图据库权限。如图11-11-1818所示。所示。3使用使用SQLServerManagementStudio管
68、管理用户的权限理用户的权限p在在SQL Server SQL Server Management Management StudioStudio中,右键中,右键单击一个用户,单击一个用户,在弹出菜单中选在弹出菜单中选择择“属性属性”,打,打开开“数据库用户数据库用户属性属性”窗口,在窗口,在“选择页选择页”列表列表中单击中单击“安全对安全对象象”,可以设置,可以设置数据库权限,如数据库权限,如图图11-1911-19所示。所示。“添加对象添加对象”对话框对话框p单击单击“搜索搜索”按钮,打开按钮,打开“添加对象添加对象”对对话框,如图话框,如图11-2011-20所示。所示。选择对象选择对象p
69、这里选择这里选择“选定选定对象对象”,单击,单击“确定确定”按钮,打按钮,打开开“选择对象选择对象”对话框,如图对话框,如图11-2111-21所示。所示。p单击单击“对象类型对象类型”按钮,打开按钮,打开“选择对象类型选择对象类型”对话框,如图对话框,如图11-2211-22所示。所示。“查找对象查找对象”对话框对话框设置用户权限设置用户权限4使用使用GRANT语句语句p(1 1)授予语句权限)授予语句权限p使用使用GRANTGRANT语句授予用户或角色语句权限语句授予用户或角色语句权限的基本语法如下:的基本语法如下:GRANT ALL | GRANT ALL | 语句语句 , .n TO
70、, .n TO 安全账安全账户户 , .n, .np其中,安全账户必须是当前数据库中的用其中,安全账户必须是当前数据库中的用户、角色或组,包括:户、角色或组,包括:SQL Server SQL Server 角色;角色;SQL ServerSQL Server用户;用户;Windows NTWindows NT组;组;Windows NTWindows NT用户。用户。【例例11-20】p使用使用GRANTGRANT语句对用户语句对用户leelee授予创建表和创授予创建表和创建视图的权限。建视图的权限。p具体语句如下:具体语句如下:USE HrSystem;USE HrSystem;GOGOG
71、RANT CREATE TABLE, CREATE VIEW TO GRANT CREATE TABLE, CREATE VIEW TO leelee(2)授予对象权限)授予对象权限p使用使用GRANTGRANT语句授予用户或角色对象权限的基本语法如语句授予用户或角色对象权限的基本语法如下:下:GRANTGRANT ALL | ALL | 权限权限 ,.n ,.n ( ( 列名列名 ,.n ) ON ,.n ) ON 表表 | | 视图视图 | ON | ON 表表 | | 视图视图 ( ( 列名列名 ,.n ) ,.n ) | ON | ON 存储过程存储过程 | ON| ON用户自定义函数
72、用户自定义函数 TO TO 安全账户安全账户 ,.n ,.n WITH GRANT OPTION WITH GRANT OPTION AS AS 组组 | | 角色角色 【例例11-21】p使用使用GRANTGRANT语句对角色语句对角色newrolenewrole授予对表授予对表EmployeesEmployees的的INSERTINSERT、UPDATEUPDATE和和DELETEDELETE的的权限。权限。p具体语句如下:具体语句如下:USE HrSystem;USE HrSystem;GRANT INSERT, UPDATE, DELETE ON GRANT INSERT, UPDAT
73、E, DELETE ON Employees TO newroleEmployees TO newrole【例例11-22】p使用使用GRANTGRANT语句授予用户语句授予用户MaryMary、JohnJohn和和TomTom对表对表EmployeesEmployees的插入、修改、删除权的插入、修改、删除权限。限。p具体语句如下:具体语句如下:USE HrSystemUSE HrSystemGRANT INSERT, UPDATE, DELETE ON GRANT INSERT, UPDATE, DELETE ON Employees TO Mary, John, TomEmployees
74、 TO Mary, John, Tom【例例11-23】p使用使用GRANTGRANT语句授予用户语句授予用户Log1Log1对表对表EmployeesEmployees的的Emp_nameEmp_name和和TitleTitle列具有修改权限。列具有修改权限。p具体语句如下:具体语句如下:USE HrSystemUSE HrSystemGRANT UPDATE(Emp_name , Title) ON GRANT UPDATE(Emp_name , Title) ON Employees TO Log1Employees TO Log1p也可以写成:也可以写成:USE HrSystemUSE
75、 HrSystemGRANT UPDATE ON Employees (Emp_name , GRANT UPDATE ON Employees (Emp_name , Title) TO Log1Title) TO Log1【例例11-24】p使用使用GRANTGRANT语句将对语句将对MarketMarket数据库的数据库的CustumersCustumers表的表的SELECTSELECT、INSERTINSERT权限授予权限授予用户用户ZhangZhang,并允许用户,并允许用户ZhangZhang再将该权限再将该权限授予其他用户或角色。授予其他用户或角色。p具体语句如下:具体语句如下
76、:USE MarketUSE MarketGRANT SELECT , INSERT ON Custumers TO GRANT SELECT , INSERT ON Custumers TO Zhang WITH GRANT OPTIONZhang WITH GRANT OPTION【例例11-25】p用户用户TomTom将对表将对表Table1Table1的的SELECTSELECT权限授予权限授予Role1Role1角色,指定角色,指定WITH GRANT OPTIONWITH GRANT OPTION子句。子句。p相应的相应的GRANTGRANT语句如下:语句如下:GRANT SELE
77、CT ON Table1 TO Role1 WITH GRANT GRANT SELECT ON Table1 TO Role1 WITH GRANT OPTIONOPTION p设用户设用户JerryJerry是是Role1Role1的成员,他要将表的成员,他要将表Table1Table1上的上的SELECTSELECT权限授予用户权限授予用户JackJack(设(设JackJack不是不是Role1Role1的成员)。相应的的成员)。相应的GRANTGRANT语句如下:语句如下:GRANT SELECT ON Table1 TO Jack AS role1GRANT SELECT ON T
78、able1 TO Jack AS role15使用使用DENY语句语句p使用使用DENYDENY语句可以拒绝用户或角色的语句语句可以拒绝用户或角色的语句权限和对象权限。权限和对象权限。p(1 1)拒绝语句权限)拒绝语句权限p使用使用DENYDENY语句拒绝用户的语句权限的基本语句拒绝用户的语句权限的基本语法如下:语法如下:DENY ALL | DENY ALL | 语句语句 , .n TO , .n TO 安全账安全账户户 , .n, .n【例例11-26】p使用使用DENYDENY语句对用户语句对用户leelee拒绝创建表和创拒绝创建表和创建视图的权限。建视图的权限。p具体语句如下:具体语句
79、如下:DENY CREATE TABLE, CREATE VIEW TO leeDENY CREATE TABLE, CREATE VIEW TO lee(2)拒绝对象权限)拒绝对象权限p使用使用DENYDENY语句拒绝用户或角色对象权限的基本语句拒绝用户或角色对象权限的基本语法如下:语法如下:DENYDENY ALL | ALL | 权限权限 ,.n ,.n ( ( 列名列名 ,.n ) ON ,.n ) ON 表表 | | 视图视图 | ON | ON 表表 | | 视图视图 ( (列名列名 ,.n ) ,.n ) | ON | ON 存储过程存储过程| | 用户自定义函数用户自定义函数
80、TO TO 安全账户安全账户 ,.n ,.n CASCADE CASCADE 【例例11-27】p使用使用DENYDENY语句拒绝角色语句拒绝角色newrolenewrole对表对表EmployeesEmployees的的INSERTINSERT、UPDATEUPDATE和和DELETEDELETE的的权限。权限。p具体语句如下:具体语句如下:USE HrSystemUSE HrSystemDENY INSERT, UPDATE, DELETE ON DENY INSERT, UPDATE, DELETE ON Employees TO newroleEmployees TO newrole【
81、例例11-28】pCASCADECASCADE选项的作用。选项的作用。p设管理员使用以下设管理员使用以下GRANTGRANT语句对语句对LiuLiu进行授权,使用户进行授权,使用户LiuLiu具有对具有对SalesSales表的表的SELECTSELECT权限。权限。GRANT SELECT ON Sales TO Liu WITH GRANT OPTIONGRANT SELECT ON Sales TO Liu WITH GRANT OPTIONp因此,用户因此,用户LiuLiu具有了将具有了将salessales对象的对象的SELECTSELECT权限授予其权限授予其他用户的权限,于是用户
82、他用户的权限,于是用户LiuLiu执行以下授权:执行以下授权:GRANT SELECT ON Sales TO GaoGRANT SELECT ON Sales TO Gaop这时,管理员执行下面语句将拒绝用户这时,管理员执行下面语句将拒绝用户LiuLiu和和GaoGao对对salessales表的表的SELECTSELECT权限,以及权限,以及LiuLiu的的WITH GRANT OPTIONWITH GRANT OPTION权限。权限。DENY SELECT ON sales TO Liu CASCADEDENY SELECT ON sales TO Liu CASCADE6使用使用REV
83、OKE语句语句p使用使用REVOKEREVOKE语句可以废除语句权限和对象权限。语句可以废除语句权限和对象权限。p(1 1)废除语句权限)废除语句权限p使用使用REVOKEREVOKE语句废除语句权限的基本语法如下:语句废除语句权限的基本语法如下:REVOKE ALL | REVOKE ALL | 语句语句 , .n FROM , .n FROM 安全账户安全账户 , .n, .np【例例11-2911-29】使用使用REVOKEREVOKE语句废除用户语句废除用户leelee创建创建表和创建视图的权限。表和创建视图的权限。p具体语句如下:具体语句如下:REVOKE CREATE TABLE,
84、 CREATE VIEW FROM leeREVOKE CREATE TABLE, CREATE VIEW FROM lee(2)废除对象权限)废除对象权限p使用使用REVOKEREVOKE语句废除用户或角色对象权限的基本语法如语句废除用户或角色对象权限的基本语法如下:下:REVOKE GRANT OPTION FOR REVOKE GRANT OPTION FOR ALL | ALL | 权限权限 ,.n ,.n ( ( 列名列名 ,.n ) ON ,.n ) ON 表表 | | 视图视图 | ON | ON 表表 | | 视图视图 ( ( 列名列名 ,.n ) ,.n ) | ON | O
85、N 存储过程存储过程 | | 用户自定义函数用户自定义函数 TO | FROM TO | FROM 安全账户安全账户 ,.n ,.n CASCADE CASCADE AS AS 组组 | | 角色角色 【例例11-30】p使用使用REVOKEREVOKE语句废除角色语句废除角色newrolenewrole对表对表EmployeesEmployees的的INSERTINSERT、UPDATEUPDATE和和DELETEDELETE的的权限。权限。p具体语句如下:具体语句如下:USE HrSystemUSE HrSystemREVOKE INSERT, UPDATE, DELETE ON REVO
86、KE INSERT, UPDATE, DELETE ON Employees TO newroleEmployees TO newrole【例例11-31】p废除用户废除用户yuanyuan对对publisherspublishers表的表的pub_idpub_id列列的修改权限。的修改权限。p具体语句如下:具体语句如下:REVOKE UPDATE(pub_id) ON publishers REVOKE UPDATE(pub_id) ON publishers FROM yuanFROM yuan【例例11-32】pCASCADECASCADE选项的作用。选项的作用。p设管理员使用以下设管理
87、员使用以下GRANTGRANT语句对语句对LiuLiu进行授权,使用户进行授权,使用户LiuLiu具有对具有对SalesSales表的表的SELECTSELECT权限。权限。pGRANT SELECT ON Sales TO Liu WITH GRANT OPTIONGRANT SELECT ON Sales TO Liu WITH GRANT OPTIONp因此,用户因此,用户LiuLiu具有了将具有了将salessales对象的对象的SELECTSELECT权限授予其他用户的权限授予其他用户的权限,于是用户权限,于是用户LiuLiu执行以下授权:执行以下授权:GRANT SELECT ON
88、 Sales TO GaoGRANT SELECT ON Sales TO Gaop这时,管理员执行以下语句可废除用户这时,管理员执行以下语句可废除用户LiuLiu的的WITH GRANT OPTIONWITH GRANT OPTION权限,以及用户权限,以及用户GaoGao所获得的对所获得的对SalesSales表的表的SELECTSELECT权限,但权限,但LiuLiu仍具仍具有对有对SalesSales表的表的SELECTSELECT权限。权限。REVOKE GRANT OPTION FOR SELECT ON sales FROM Liu CASCADEREVOKE GRANT OPT
89、ION FOR SELECT ON sales FROM Liu CASCADE【例例11-33】p设用户设用户TomTom执行以下语句对角色执行以下语句对角色Role1Role1进行了授进行了授权:权:GRANT SELECT ON Table1 TO Role1 WITH GRANT GRANT SELECT ON Table1 TO Role1 WITH GRANT OPTIONOPTIONp用户用户JerryJerry是角色是角色Role1Role1中的成员,于是中的成员,于是JerryJerry作为角色作为角色Role1Role1的成员执行以下授权:的成员执行以下授权:1.1.GRANT SELECT ON Table1 TO Jack AS role1GRANT SELECT ON Table1 TO Jack AS role1p现在,用户现在,用户JerryJerry要废除用户要废除用户JackJack所获得的对所获得的对Table1Table1表的表的SELECTSELECT权限,可以使用以下语句:权限,可以使用以下语句:REVOKE SELECT ON Table1 FROM Jack AS Role1REVOKE SELECT ON Table1 FROM Jack AS Role1