SQL server 2008 系统安全管理.ppt

上传人:本田雅阁 文档编号:2108030 上传时间:2019-02-14 格式:PPT 页数:58 大小:3.37MB
返回 下载 相关 举报
SQL server 2008 系统安全管理.ppt_第1页
第1页 / 共58页
SQL server 2008 系统安全管理.ppt_第2页
第2页 / 共58页
SQL server 2008 系统安全管理.ppt_第3页
第3页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SQL server 2008 系统安全管理.ppt》由会员分享,可在线阅读,更多相关《SQL server 2008 系统安全管理.ppt(58页珍藏版)》请在三一文库上搜索。

1、第8章 系统安全管理,SQL Server 2008的身份验证模式,建立和管理用户账户,服务器角色与数据库角色,数据库权限的管理,数据库架构的定义和使用,综合应用训练,8.1 SQL Server 2008的身份验证模式,SQL Server 2008的身份认证模式是指系统确认用户的方式。SQL Server2008有两种身份认证模式:Windows验证模式和SQL Server验证模式,图8.1给出了这两种方式登录SQL Server服务器的情形。,图8.1 两种验证方式登录SQL Server服务器的情形,8.1 SQL Server 2008的身份验证模式,1Windows验证模式 用户

2、登录Windows时进行身份验证,登录SQL Server时就不再进行身份验证。以下是对于Windows验证模式登录的几点重要说明: (1)必须将Windows账户加入到SQL Server中,才能采用Windows账户登录SQL Server。 (2)如果使用Windows账户登录到另一个网络的SQL Server,必须在Windows中设置彼此的托管权限。 2SQL Server认证模式 在SQL Server验证模式下,SQL Server服务器要对登录的用户进行身份验证。当SQL Server在Windows操作系统上运行时,系统管理员设定登录验证模式的类型可为Windows验证模式和

3、混合模式。当采用混合模式时,SQL Server系统既允许使用Windows登录账号登录,也允许使用SQL Server登录账号登录。,8.2建立和管理用户账户,8.2.1界面方式管理用户账户 1建立Windows验证模式的登录名 对于Windows操作系统,安装本地SQL Server 2008的过程中,允许选择验证模式。例如,安装时选择Windows身份验证方式,在此情况下,如果要增加一个Windows的新用户liu,如何授权该用户,使其能通过信任连接访问SQL Server呢?步骤如下(在此以Windows XP为例): (1)创建Windows的用户。以管理员身份登录到Windows

4、XP,选择“开始”打开“控制面板”中的“性能和维护”选择其中的“管理工具”双击“计算机管理”,进入“计算机管理”窗口。,8.2.1界面方式管理用户账户,在该窗口中选择“本地用户和组”中的“用户”图标右击,在弹出的快捷菜单中选择 “新用户”菜单项,打开“新用户”窗口。如图8.2所示,在该窗口中输入用户名、密码,单击“创建”按钮,然后单击“关闭”按钮,完成新用户的创建。,图8.2 创建新用户的界面,8.2.1界面方式管理用户账户,(2)将Windows账户加入到SQL Server中。以管理员身份登录到SQL Server Management Studio,在“对象资源管理器”中,找到并选择如图

5、8.3所示的“登录名”项。,图8.3 新建登录名,8.2.1界面方式管理用户账户,右击鼠标,在弹出的快捷菜单中选择“新建登录名”,打开“登录名-新建”窗口。如图8.4所示,可以通过单击“常规”选项卡的“搜索”按钮,在“选择用户或组”对话框中选择相应的用户名或用户组添加到SQL Server 2008登录用户列表中。例如,本例的用户名为:0BD7E57C949A420liu(0BD7E57C949A420为本地计算机名)。,图8.4 新建登录名,8.2.1界面方式管理用户账户,2建立SQL Server验证模式的登录名 要建立SQL Server验证模式的登录名,首先应将验证模式设置为混合模式。

6、如果用户在安装SQL Server时验证模式没有设置为混合模式,则先要将验证模式设为混合模式。步骤如下: (1)以系统管理员身份登录SQL Server Management Studio,在“对象资源管理器”中选择要登录的SQL Server服务器图标,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“服务器属性”窗口。 (2)在打开的“服务器属性”窗口中选择“安全性”选项卡。选择服务器身份验证为“SQL Server和Windows身份验证模式”,单击“确定”按钮,保存新的配置,重启SQL Server服务即可。 创建SQL Server验证模式的登录名也在如图8.4所示的界面中进行,

7、输入一个自己定义的登录名,例如david,选中“SQL Server身份验证”选项,输入密码,并将“强制密码过期”复选框中的勾去掉,设置完单击“确定”按钮即可。,8.2.1界面方式管理用户账户,为了测试创建的登录名能否连接SQL Server,可以使用新建的登录名david来进行测试,具体步骤如下: 在“对象资源管理器”窗口中单击“连接”,在下拉框中选择“数据库引擎”,弹出“连接到服务器”对话框。在该对话框中,“身份验证”选择“SQL Server身份验证”,“登录名”填写david,输入密码,单击“连接”按钮,就能连接SQL Server了。登录后的“对象资源管理器”界面如图8.5所示。,图

8、8.5 使用SQL Server验证方式登录,8.2.1界面方式管理用户账户,3管理数据库用户 使用SSMS创建数据库用户账户的步骤如下(以XSBOOK数据库为例): 以系统管理员身份连接SQL Server,展开“数据库”“XSBOOK”“安全性”选择“用户”,右击鼠标,选择“新建用户”菜单项,进入“数据库用户-新建”窗口。在“用户名”框中填写一个数据库用户名,“登录名”框中填写一个能够登录SQL Server的登录名,如david。注意:一个登录名在本数据库中只能创建一个数据库用户。选择默认架构为dbo,如图8.6所示,单击“确定”按钮完成创建。,图8.6 新建数据库用户账户,8.2.2

9、命令方式管理用户账户,1创建登录名 在SQL Server 2008中,创建登录名可以使用CREATE LOGIN命令。语法格式: CREATE LOGIN login_name WITH PASSWORD = password HASHED MUST_CHANGE , ,. /*WITH子句用于创建SQL Server登录名*/ | FROM /*FROM子句用户创建其他登录名*/ WINDOWS WITH ,. | CERTIFICATE certname | ASYMMETRIC KEY asym_key_name ,8.2.2 命令方式管理用户账户,其中: := SID = sid |

10、 DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = ON | OFF | CHECK_POLICY = ON | OFF CREDENTIAL = credential_name := DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language,8.2.2 命令方式管理用户账户,(1)创建Windows验证模式登录名。创建Windows登录名使用FROM子句,在FROM子句的语法格式中,WINDOWS关键字指定将登录名映射到Wind

11、ows登录名,其中,为创建Windows登录名的选项,DEFAULT_DATABASE指定默认数据库,DEFAULT_LANGUAGE指定默认语言。 【例8.1】 使用命令方式创建Windows登录名tao(假设Windows用户tao已经创建,本地计算机名为0BD7E57C949A420),默认数据库设为XSBOOK。 USE master GO CREATE LOGIN 0BD7E57C949A420tao FROM WINDOWS WITH DEFAULT_DATABASE= XSBOOK 命令执行成功后在“登录名”“安全性”列表上就可以查看到该登录名。,8.2.2 命令方式管理用户账户

12、,(2)创建SQL Server验证模式登录名。创建SQL Server登录名使用WITH子句,其中: PASSWORD:用于指定正在创建的登录名的密码,password为密码字符串。HASHED 选项指定在PASSWORD参数后输入的密码已经过哈希运算,如果未选择此选项,则在将作为密码输入的字符串存储到数据库之前,对其进行哈希运算。如果指定MUST_CHANGE选项,则SQL Server会在首次使用新登录名时提示用户输入新密码。 :用于指定在创建SQL Server登录名时的一些选项。 【例8.2】 创建SQL Server登录名sql_tao,密码为123456,默认数据库设为XSBOO

13、K。 CREATE LOGIN sql_tao WITH PASSWORD=123456, DEFAULT_DATABASE=XSBOOK,8.2.2 命令方式管理用户账户,2删除登录名 删除登录名使用DROP LOGIN命令。语法格式: DROP LOGIN login_name 【例8.3】 删除Windows登录名tao。 DROP LOGIN 0BD7E57C949A420tao 【例8.4】 删除SQL Server登录名sql_tao。 DROP LOGIN sql_tao 3创建数据库用户 创建数据库用户使用CREATE USER命令。语法格式: CREATE USER user

14、_name FOR | FROM LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name | WITHOUT LOGIN WITH DEFAULT_SCHEMA = schema_name ,8.2.2 命令方式管理用户账户,说明: (1)user_name指定数据库用户名。FOR或FROM子句用于指定相关联的登录名。 (2)LOGIN login_name指定要创建数据库用户的SQL Server登录名。login_name必须是服务器中有效的登录名。当此登录名进入数据库时,它将获取正在创建的数据库用户的

15、名称和ID。 (3)WITHOUT LOGIN指定不将用户映射到现有登录名。 (4)WITH DEFAULT_SCHEMA指定服务器为此数据库用户解析对象名称时将搜索的第一个架构,默认为dbo。,8.2.2 命令方式管理用户账户,【例8.5】 使用SQL Server登录名sql_tao(假设已经创建)在XSBOOK数据库中创建数据库用户tao,默认架构名使用dbo。 USE XSBOOK GO CREATE USER tao FOR LOGIN sql_tao WITH DEFAULT_SCHEMA=dbo,8.2.2 命令方式管理用户账户,4删除数据库用户 删除数据库用户使用DROP US

16、ER语句。语法格式: DROP USER user_name user_name为要删除的数据库用户名,在删除之前要使用USE语句指定数据库。 【例8.6】 删除XSBOOK数据库的数据库用户tao。 USE XSBOOK GO DROP USER tao,8.3 服务器角色与数据库角色,8.3.1 固定服务器角色 服务器角色独立于各个数据库。如果在SQL Server中创建一个登录名后,要赋予该登录者具有管理服务器的权限,此时可设置该登录名为服务器角色的成员。SQL Server提供了以下固定服务器角色: (1)sysadmin:系统管理员,角色成员可对SQL Server服务器进行所有的管

17、理工作,为最高管理角色。这个角色一般适合于数据库管理员(DBA)。 (2)securityadmin:安全管理员,角色成员可以管理登录名及其属性。可以授予、拒绝、撤销服务器级和数据库级的权限。另外还可以重置SQL Server登录名的密码。 (3)serveradmin:服务器管理员,角色成员具有对服务器进行设置及关闭服务器的权限。 (4)setupadmin:设置管理员,角色成员可以添加和删除链接服务器,并执行某些系统存储过程。 (5)processadmin:进程管理员,角色成员可以终止SQL Server实例中运行的进程。 (6)diskadmin:用于管理磁盘文件。,8.3.1 固定服

18、务器角色,(7)dbcreator:数据库创建者,角色成员可以创建、更改、删除或还原任何数据库。 (8)bulkadmin:可执行BULK INSERT语句,但是这些成员对要插入数据的表必须有INSERT权限。BULK INSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图。 (9)public:其角色成员可以查看任何数据库。 用户只能将一个用户登录名添加为上述某个固定服务器角色的成员,不能自行定义服务器角色。例如,对于前面已建立的登录名“0BD7E57C949A420liu”,如果要给其赋予系统管理员权限,可通过“对象资源管理器”或“系统存储过程”将该登录名加入sysadm

19、in角色。,8.3.1 固定服务器角色,1通过“对象资源管理器”添加服务器角色成员 (1)以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“安全性”“登录名”选择登录名,例如“0BD7E57C949A420liu”,双击或右击选择“属性”菜单项,打开“登录属性”窗口。,(2)在打开的“登录属性”窗口中选择“服务器角色”选项卡。如图8.7所示,在“登录属性”窗口右边列出了所有的固定服务器角色,用户可以根据需要,在服务器角色前的复选框中打勾,来为登录名添加相应的服务器角色,此处默认已经选择了“public”服务器角色。单击“确定”按钮完成添加。,图8.7 SQL Ser

20、ver服务器角色设置窗口,8.3.1 固定服务器角色,2利用系统存储过程添加固定服务器角色成员 利用系统存储过程sp_addsrvrolemember可将一登录名添加到某一固定服务器角色中,使其成为固定服务器角色的成员。语法格式: sp_addsrvrolemember loginame = login, rolename = role 参数含义:login指定添加到固定服务器角色role的登录名,login可以是SQL Server登录名或Windows 登录名;对于Windows登录名,如果还没有授予SQL Server访问权限,将自动对其授予访问权限。固定服务器角色名role必须为sys

21、admin、securityadmin、serveradmin、setupadmin、processadmin、diskadmin、dbcreator、bulkadmin和public之一。 【例8.7】 将Windows登录名0BD7E57C949A420liu添加到sysadmin固定服务器角色中。 EXEC sp_addsrvrolemember 0BD7E57C949A420liu, sysadmin,8.3.1 固定服务器角色,3利用系统存储过程删除固定服务器角色成员 利用sp_dropsrvrolemember系统存储过程可从固定服务器角色中删除SQL Server 登录名或Win

22、dows登录名。语法格式: sp_dropsrvrolemember loginame = login , rolename = role login为将要从固定服务器角色删除的登录名。role为服务器角色名,默认值为NULL,必须是有效的固定服务器角色名。 【例8.8】 从sysadmin固定服务器角色中删除SQL Server登录名david。 EXEC sp_dropsrvrolemember david, sysadmin,8.3.2 固定数据库角色,1使用“对象资源管理器”添加固定数据库角色成员 (1)以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“数据

23、库”“XSBOOK”“安全性”“用户”选择一个数据库用户,例如“david”,双击或单击右键选择“属性”菜单项,打开“数据库用户”窗口。,(2)在打开的窗口中,在“常规”选项卡中的“数据库角色成员身份”栏,用户可以根据需要,在数据库角色前的复选框中打勾,来为数据库用户添加相应的数据库角色,如图8.8所示,单击“确定”按钮完成添加。,图8.8 添加固定数据库角色成员,8.3.2 固定数据库角色,(3)查看固定数据库角色的成员。在“对象资源管理器”窗口中,在XSBOOK数据库下的“安全性”“角色”“数据库角色”目录下,选择数据库角色,如db_owner,右击选择“属性”菜单项,在属性窗口中的“角色

24、成员”栏下可以看到该数据库角色的成员列表,如图8.9所示。,图8.9 数据库角色成员列表,8.3.2 固定数据库角色,2使用系统存储过程添加固定数据库角色成员 利用系统存储过程sp_addrolemember可以将一个数据库用户添加到某一固定数据库角色中,使其成为该固定数据库角色的成员。语法格式: sp_addrolemember rolename = role, membername = security_account role为当前数据库中的数据库角色的名称。security_account为添加到该角色的安全账户,可以是数据库用户或当前数据库角色。 说明: (1)当使用sp_addro

25、lemember将用户添加到角色时,新成员将继承所有应用到角色的权限。 (2)不能将固定数据库或固定服务器角色或者dbo添加到其他角色。例如,不能将 db_owner固定数据库角色添加成为用户定义的数据库角色的成员。 (3)在用户定义的事务中不能使用sp_addrolemember。 (4)只有sysadmin固定服务器角色和db_owner固定数据库角色中的成员可以执行 sp_addrolemember,以将成员添加到数据库角色。 (5)db_securityadmin固定数据库角色的成员可以将用户添加到任何用户定义的角色。,8.3.2 固定数据库角色,【例8.9】 将XSBOOK数据库上的

26、数据库用户david添加为固定数据库角色db_owner的成员。 USE XSBOOK GO EXEC sp_addrolemember db_owner, david,8.3.2 固定数据库角色,3使用系统存储过程删除固定数据库角色成员 利用系统存储过程sp_droprolemember可以将某一成员从固定数据库角色中去除。 语法格式: sp_droprolemember rolename = role , membername = security_account 说明:删除某一角色的成员后,该成员将失去作为该角色的成员身份所拥有的任何权限;不能删除public角色的用户,也不能从任何角色

27、中删除dbo。 【例8.10】 将数据库用户david从db_owner中去除。 EXEC sp_droprolemember db_owner, david,8.3.3 用户自定义数据库角色,1通过“对象资源管理器”创建数据库角色 (1)创建数据库角色。以Windows系统管理员身份连接SQL Server,在“对象资源管理器”中展开“数据库”选择要创建角色的数据库XSBOOK“安全性”“角色”,右击鼠标,在弹出的快捷菜单中选择“新建”菜单项在弹出的子菜单中选择“新建数据库角色”菜单项,如图8.10所示。进入“数据库角色-新建”窗口。,图8.10 新建数据库角色,8.3.3 用户自定义数据库

28、角色,(2)将数据库用户加入数据库角色。当数据库用户成为某一数据库角色的成员之后,该数据库用户就获得该数据库角色所拥有的对数据库操作的权限。 将用户加入自定义数据库角色的方法与8.3.2小节中将用户加入固定数据库角色的方法类似,这里不再重复。如图8.11所示的是将XSBOOK数据库的用户david加入角色ROLE。,图8.11 添加到数据库角色,8.3.3 用户自定义数据库角色,2通过SQL命令创建数据库角色 (1)定义数据库角色。创建用户自定义数据库角色可以使用CREATE ROLE语句。 语法格式: CREATE ROLE role_name AUTHORIZATION owner_nam

29、e 【例8.11】 如下示例在当前数据库中创建名为ROLE2的新角色,并指定dbo为该角色的所有者。 USE XSBOOK GO CREATE ROLE ROLE2 AUTHORIZATION dbo,8.3.3 用户自定义数据库角色,(2)给数据库角色添加成员。向用户定义数据库角色添加成员也使用存储过程sp_ addrolemember,用法与之前介绍的基本相同。 【例8.12】 使用Windows身份验证模式的登录名(如0BD7E57C949A420liu)创建XSBOOK数据库的用户(如0BD7E57C949A420liu),并将该数据库用户添加到数据库角色ROLE中。 USE XSBO

30、OK GO CREATE USER 0BD7E57C949A420liu FROM LOGIN 0BD7E57C949A420liu GO EXEC sp_addrolemember ROLE, 0BD7E57C949A420liu 【例8.13】 将SQL Server登录名创建的XSBOOK的数据库用户wang(假设已经创建)添加到数据库角色ROLE中。 EXEC sp_addrolemember ROLE,wang 【例8.14】 将数据库角色ROLE2添加到ROLE中。 EXEC sp_addrolemember ROLE,ROLE2,8.3.3 用户自定义数据库角色,3通过SQL命令

31、删除数据库角色 要删除数据库角色可以使用DROP ROLE语句。语法格式: DROP ROLE role_name 说明: (1)无法从数据库删除拥有安全对象的角色。若要删除拥有安全对象的数据库角色,必须首先转移这些安全对象的所有权,或从数据库删除它们。 (2)无法从数据库删除拥有成员的角色。若要删除拥有成员的数据库角色,必须首先删除角色的所有成员。 (3)不能使用DROP ROLE删除固定数据库角色。 【例8.15】 删除数据库角色ROLE2。 在删除ROLE2之前首先需要将ROLE2中的成员删除,可以使用界面方式,也可以使用命令方式。若使用界面方式,只需在ROLE2的属性页中操作即可。命令

32、方式在删除固定数据库成员时已经介绍,请参见前面内容。确认ROLE2可以删除后,使用以下命令删除ROLE2: DROP ROLE ROLE2,8.4 数据库权限的管理,8.4.1 授予权限 权限的授予可以使用命令方式或界面方式完成。 1使用命令方式授予权限。 利用GRANT语句可以给数据库用户或数据库角色授予数据库级别或对象级别的权限。语法格式: GRANT ALL PRIVILEGES | permission ( column ,.n ) ,.n ON securable TO principal ,.n WITH GRANT OPTION AS principal ,说明:,8.4.1 授

33、予权限,【例8.16】 给XSBOOK数据库上的用户david和wang授予创建表的权限。 以系统管理员身份登录SQL Server,新建一个查询,输入以下语句: USE XSBOOK GO GRANT CREATE TABLE TO david, wang GO 【例8.17】 首先在当前数据库XSBOOK中给 public 角色授予对XS表的SELECT 权限。然后,将特定的权限授予用户 liu、zhang 和 dong,使这些用户对 XS 表有所有操作权限。 GRANT SELECT ON XS TO public GO GRANT INSERT, UPDATE, DELETE ON X

34、S TO liu, zhang, dong GO 【例8.18】 将CREATE TABLE权限授予数据库角色ROLE的所有成员。 GRANT CREATE TABLE TO ROLE,8.4.1 授予权限,【例8.19】 以系统管理员身份登录SQL Server,将表XS的SELECT权限授予ROLE2角色(指定WITH GRANT OPTION子句)。用户li是ROLE2的成员(创建过程略),在li用户上将表XS上的SELECT权限授予用户huang(创建过程略),huang不是ROLE2的成员。 首先在以Windows系统管理员身份连接SQL Server,授予角色ROLE2在XS表上的

35、SELECT权限: USE XSBOOK GO GRANT SELECT ON XS TO ROLE2 WITH GRANT OPTION,8.4.1 授予权限,在“SQL Server Management Studio”窗口上单击“新建查询”按钮旁边的数据库引擎查询按钮“ ”,在弹出的连接窗口中以li用户的登录名登录,如图8.12所示。单击“连接”按钮连接到SQL Server服务器,出现“查询分析器”窗口。,图8.12 以li用户身份登录,8.4.1 授予权限,在“查询分析器”窗口中使用如下语句将用户li的在XS表上的SELECT权限授予huang: USE XSBOOK GO GRAN

36、T SELECT ON XS TO huang AS ROLE2 【例8.20】 在当前数据库XSBOOK中给public角色赋予对表XS的借书证号、姓名字段进行SELECT权限。 GRANT SELECT (借书证号,姓名) ON XS TO public GO,8.4.1 授予权限,2使用界面方式授予语句权限。 (1)授予数据库上的权限。 以给数据库用户david授予XSBOOK数据库的CREATE TABLE语句的权限(即创建表的权限)为例,在SQL Server Management Studio中授予用户权限的步骤如下: 以系统管理员身份登录到SQL Server服务器,在“对象资源

37、管理器”中展开“数据库”“XSBOOK”,右击鼠标,选择“属性”菜单项进入XSBOOK数据库的属性窗口,选择“权限”页。,8.4.1 授予权限,在用户或角色栏中选择需要授予权限的用户或角色,在窗口下方列出的权限列表中找到相应的权限(如“创建表”),在复选框中打勾,如图8.13所示。单击“确定”按钮即可完成。,图8.13 授予用户数据库上的权限,8.4.1 授予权限,(2)授予数据库对象上的权限。 以给数据库用户david授予BOOK表上的SELECT、INSERT的权限为例,步骤如下: 以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“数据库”“XSBOOK”“表”

38、“BOOK”,右击鼠标,选择“属性”菜单项进入BOOK表的属性窗口,选择“权限”选项卡。 单击“搜索”按钮,在弹出的“选择用户或角色”窗口中单击“浏览”按钮,选择需要授权的用户或角色(如david),选择后单击“确定”按钮回到BOOK表的属性窗口。在该窗口中选择用户,在权限列表中选择需要授予的权限,如“插入(INSERT)”、“选择(SELECT)”,如图8.14所示,单击“确定”按钮完成授权。,8.4.1 授予权限,图8.14 授予用户数据库对象上的权限,8.4.2 拒绝权限,使用DENY命令可以拒绝给当前数据库内的用户授予的权限,并防止数据库用户通过其组或角色成员资格继承权限。 语法格式:

39、 DENY ALL PRIVILEGES | permission ( column ,.n ) ,.n ON securable TO principal ,.n CASCADE AS principal 【例8.21】 对多个用户不允许使用CREATE VIEW和CREATE TABLE语句。 DENY CREATE VIEW, CREATE TABLE TO li, huang GO,8.4.2 拒绝权限,【例8.22】 拒绝用户li、huang、0BD7E57C949A420liu对表XS的一些权限,这样,这些用户就没有对XS表的操作权限了。 USE XSBOOK GO DENY SE

40、LECT, INSERT, UPDATE, DELETE ON XS TO li, huang, 0BD7E57C949A420liu GO 【例8.23】 对所有ROLE2角色成员拒绝CREATE TABLE权限。 DENY CREATE TABLE TO ROLE2,8.4.3 撤销权限,利用REVOKE命令可撤销以前给当前数据库用户授予或拒绝的权限。 语法格式: REVOKE GRANT OPTION FOR ALL PRIVILEGES | permission ( column ,.n ) ,.n ON securable TO | FROM principal ,.n CASCAD

41、E AS principal 【例8.24】 取消已授予用户wang的CREATE TABLE 权限。 REVOKE CREATE TABLE FROM wang 【例8.25】 取消授予多个用户的多个语句权限。 REVOKE CREATE TABLE, CREATE VIEW FROM wang, li GO,8.4.3 撤销权限,【例8.26】 取消对wang授予或拒绝的在XS表上的SELECT权限。 REVOKE SELECT ON XS FROM wang 【例8.27】 角色ROLE2在XS表上拥有SELECT权限,用户li是ROLE2的成员,li使用WITH GRANT OPTIO

42、N子句将SELECT权限转移给了用户huang,用户huang不是ROLE2的成员。现要以用户li的身份撤销用户huang的SELECT权限。 以用户“li”的身份登录SQL Server服务器,新建一个查询,使用如下语句撤销huang的SELECT权限: USE XSBOOK GO REVOKE SELECT ON XS TO huang AS ROLE2,8.5 数据库架构的定义和使用,8.5.1 使用界面方式创建架构 以在XSBOOK数据库中创建架构为例,具体步骤如下: (1)以系统管理员身份登录SQL Server,在“对象资源管理器”中展开“数据库”“XSBOOK”“安全性”选择“架

43、构”,右击鼠标,在弹出的快捷菜单中选择“新建架构”菜单项。 (2)在打开的“架构-新建”窗口中选择“常规”选项卡,在窗口的右边“架构名称”下面的文本框中输入架构名称(如test)。单击“搜索”按钮,在打开的“搜索角色和用户”对话框中单击“浏览”按钮。如图8.15所示,在打开的“查找对象”对话框中,在用户“david”前面的复选框打勾,单击“确定”按钮,返回“搜索角色和用户”对话框。单击“确定”按钮,返回“架构-新建”窗口。 创建完后在“数据库”“XSBOOK”“安全性”“架构”中,可以找到该创建后的新架构,打开该架构的属性窗口可以更改架构的所有者。,8.5.1 使用界面方式创建架构,图8.15

44、 新建架构,8.5.1 使用界面方式创建架构,(3)架构创建完后可以新建一个测试表来测试如何访问架构中的对象。在XSBOOK数据库中新建一个名为table_1的表,表的结构如图8.16所示。,图8.16 新建一个测试表,8.5.1 使用界面方式创建架构,在创建表时,表的默认架构为dbo,要将其架构修改为test。在进行表结构设计时,表设计窗口右边有一个表table_1的属性窗口,在创建表时,应在表的属性窗口中将该表的架构设置成test,如图8.17所示。如果没有找到属性窗口,单击“视图”菜单栏,选择“属性窗口”子菜单就能显示出属性窗口。,图8.17 属性窗口,8.5.1 使用界面方式创建架构,

45、设置完成后保存该表,保存后的表可以在“对象资源管理器”中找到,此时表名就已经变成test. table_1,如图8.18所示。,图8.18 新建的表test.table_1,8.5.1 使用界面方式创建架构,(4)在“对象资源管理器”中展开数据库“XSBOOK”“安全性”“架构”,选择新创建的架构test,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“架构属性”窗口,在该架构属性的“权限”选项卡中,单击“搜索”按钮,选择用户owner(创建过程略),为用户owner分配权限,如“选择(SELECT)”权限,如图8.19所示。,图8.19 分配权限,8.5.1 使用界面方式创建架构,(5

46、)重新启动SQL Server Management Studio,使用SQL Server身份验证方式以用户david的登录名连接SQL Server。在连接成功后,创建一个新的查询,在“查询分析器”窗口中输入查询表test. table_1中数据的T-SQL语句: USE XSBOOK GO SELECT * FROM test.table_1 执行结果如图8.20所示。,图8.20 查询语句的执行结果,8.5.1 使用界面方式创建架构,再新建一个SQL查询,在查询编辑器中输入删除表test. table_1的T-SQL语句: DELETE FROM test.table_1 执行结果如图

47、8.21所示。,图8.21 删除语句的执行结果,8.5.2 使用命令方式创建架构,可以使用CREATE SCHEMA语句创建数据库架构。 语法格式: CREATE SCHEMA , .n 其中: := schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name := table_definition | view_definition | grant_statement revoke_statement | deny_statement ,8.5.2 使用命令方式创建架构,说明: (1)schema

48、_name:在数据库内标识架构的名称,架构名称在数据库中要唯一。 (2)AUTHORIZATION owner_name:指定将拥有架构的数据库级主体(如用户、角色等)的名称。此主体还可以拥有其他架构,并且可以不使用当前架构作为其默认架构。 (3)table_definition:指定在架构内创建表的CREATE TABLE语句。执行此语句的主体必须对当前数据库具有CREATE TABLE权限。 (4)view_definition:指定在架构内创建视图的CREATE VIEW语句。执行此语句的主体必须对当前数据库具有CREATE VIEW权限。 (5)grant_statement:指定可对除新架构外的任何安全对象授予权限的GRANT语句。 (6)revoke_statement:指定可对除新架构外的任何安全对象撤销权限的REVOKE语句。 (7)deny_statement:指定可对除新架构外的任何安全对象拒绝授予权限的DENY语句。,8.5.2 使用命令方式创建架构,【例8.28】 创建架构test_schema,其所有者为用户

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1