《数据库安全管理》PPT课件.ppt

上传人:牧羊曲112 文档编号:1986628 上传时间:2022-12-29 格式:PPT 页数:65 大小:3.43MB
返回 下载 相关 举报
《数据库安全管理》PPT课件.ppt_第1页
第1页 / 共65页
《数据库安全管理》PPT课件.ppt_第2页
第2页 / 共65页
《数据库安全管理》PPT课件.ppt_第3页
第3页 / 共65页
《数据库安全管理》PPT课件.ppt_第4页
第4页 / 共65页
《数据库安全管理》PPT课件.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《《数据库安全管理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库安全管理》PPT课件.ppt(65页珍藏版)》请在三一办公上搜索。

1、第9章 系统安全管理,9.1 SQL Server 2008的安全机制,9.2 建立和管理用户账户,9.3 角色管理,9.4 数据库权限的管理,9.5 数据库架构的定义和使用,9.1 SQL Server 2008的安全机制,9.1.1 SQL Server 2008的身份验证模式SQL Server 2008的身份验证模式是指系统确认用户的方式。SQL Server 2008有两种身份验证模式:Windows验证模式和SQL Server验证模式。如图9.1所示为这两种方式登录SQL Server服务器的情形。,图9.1 两种验证方式登录SQL Server服务器的情形,9.1.1 SQL

2、Server 2008的身份验证模式,1Windows验证模式用户登录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 XP或Windo

3、ws 2003/2008等操作系统上运行时,系统管理员设定登录验证模式的类型可为Windows验证模式和混合模式。当采用混合模式时,SQL Server系统既允许使用Windows登录名登录,也允许使用SQL Server登录名登录。,9.1.2 SQL Server 2008的安全性机制,(1)服务器级别所包含的安全对象主要有登录名、固定服务器角色等。其中,登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。SQL Server 2008中的登录名主要有两种,第一种是Windows登录名,第二种是SQL Server登录名。Windows登录名对应Windows验证

4、模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组。SQL Server登录名对应SQL Server验证模式,在该验证模式下,能够使用的账户类型主要是SQL Server账户。(2)数据库级别所包含的安全对象主要有用户、角色、应用程序角色、证书、对称密钥、非对称密钥、程序集、全文目录、DDL事件、架构等。用户安全对象是用来访问数据库的。如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所对应的用户,则该用户只能登录数据库服务器,而不能访问相应的数据库。,9.1.2 SQL Server 2008的安全性机制,(3)架构级别所包

5、含的安全对象主要有表、视图、函数、存储过程、类型、同义词、聚合函数等。简单地说,架构的作用是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构。数据库中的每一个用户都会有自己的默认架构。这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。数据库用户只能对属于自己架构中的数据库对象执行相应的数据操作。至于操作的权限则由数据库角色决定。例如,若某数据库中的表A属于架构S1,表B属于架构S2,而某用户默认的架构为S2,如果没有授予用户操作表A的权限,则该用户不能对表A执行相应的数据操作。但是,该用户可以对表B执行相应的操作。,9.1.2 SQL

6、 Server 2008的安全性机制,一个数据库使用者,要登录服务器上的SQL Server数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如图9.2所示的安全验证。,图9.2 SQL Server数据库安全验证,9.2 建立和管理用户账户,9.2.1 界面方式管理用户账户1建立Windows验证模式的登录名第1步:创建Windows的用户。以管理员身份登录到Windows XP,选择“开始”,打开控制面板中的“性能和维 护”,选择其中的“管理工具”,双击“计算机管理”,进入“计算机管理”窗口。在该窗口中选择“本地用户和组”中的“用户”图标,右击,在弹出的快捷菜单中选择 “新用户”

7、菜单项,打开“新用户”窗口。如图9.3所示,在该窗口中输入用户名、密码,单击“创建”按钮,然后单击“关闭”按钮,完成新用户的创建。,图9.3 创建新用户的界面,9.2.1 界面方式管理用户账户,第2步:将Windows账户加入到SQL Server中。以管理员身份登录到SQL Server Management Studio,在对象资源管理器中,找到并选择如图9.4所示的“登录名”项。右击鼠标,在弹出的快捷菜单中选择“新建登录名”,打开“登录名-新建”窗口。,图9.4 新建登录名,9.2.1 界面方式管理用户账户,如图9.5所示,可以通过单击“常规”选项卡的“搜索”按钮,在“选择用户或组”对话

8、框中选择相应的用户名或用户组并添加到SQL Server 2008登录用户列表中。例如,本例的用户名为0BD7E57C949A420liu(0BD7E57C949A420为本地计算机名)。,图9.5 新建登录名,9.2.1 界面方式管理用户账户,2建立SQL Server验证模式的登录名步骤如下。第1步:以系统管理员身份登录SQL Server Management Studio,在对象资源管理器中选择要登录的SQL Server服务器图标,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“服务器属性”窗口。第2步:在打开的“服务器属性”窗口中选择“安全性”选项卡。选择服务器身份验证为“S

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

10、身份验证”选择“SQL Server身份验证”,“登录名”填写david,输入密码,单击“连接”按钮,就能连接SQL Server了。登录后的“对象资源管理器”界面如图9.6所示。,图9.6 使用SQL Server验证方式登录,9.2.1 界面方式管理用户账户,3管理数据库用户使用SSMS创建数据库用户账户的步骤如下(以PXSCJ为例):以系统管理员身份连接SQL Server,展开“数据库PXSCJ安全性”,选择“用户”,右击鼠标,选择“新建用户”菜单项,进入“数据库用户-新建”窗口。在“用户名”框中填写一个数据库用户名,“登录名”框中填写一个能够登录SQL Server的登录名,如dav

11、id。注意,一个登录名在本数据库中只能创建一个数据库用户。选择默认架构为dbo,如图9.7所示,单击“确定”按钮完成创建。,图9.7 新建数据库用户账户,9.2.2 命令方式管理用户账户,1创建登录名在SQL Server 2008中,创建登录名可以使用CREATE LOGIN命令。语法格式:CREATE LOGIN login_name WITH PASSWORD = password HASHED MUST_CHANGE , ,. /*WITH子句用于创建SQL Server登录名*/| FROM/*FROM子句用于创建其他登录名*/ WINDOWS WITH ,. | CERTIFICA

12、TE certname | ASYMMETRIC KEY asym_key_name ,9.2.2 命令方式管理用户账户,其中, := SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = ON | OFF | CHECK_POLICY = ON | OFF CREDENTIAL = credential_name := DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language,9.2.2 命令方式管理用户账户

13、,(1)创建Windows验证模式登录名。创建Windows登录名使用FROM子句,在FROM子句的语法格式中,WINDOWS关键字指定将登录名映射到Windows登录名,其中,为创建Windows登录名的选项,DEFAULT_DATABASE指定默认数据库,DEFAULT_LANGUAGE指定默认语言。【例9.1】 使用命令方式创建Windows登录名tao(假设Windows用户tao已经创建,本地计算机名为0BD7E57C949A420),默认数据库设为PXSCJ。USE masterGOCREATE LOGIN 0BD7E57C949A420taoFROM WINDOWS WITH D

14、EFAULT_DATABASE= PXSCJ,9.2.2 命令方式管理用户账户,(2)创建SQL Server验证模式登录名。创建SQL Server登录名使用WITH子句,其中, PASSWORD:用于指定正在创建的登录名的密码,password为密码字符串。HASHED 选项指定在PASSWORD参数后输入的密码已经过哈希运算,如果未选择此选项,则在将作为密码输入的字符串存储到数据库之前,对其进行哈希运算。如果指定MUST_CHANGE选项,则SQL Server会在首次使用新登录名时提示用户输入新密码。 :用于指定在创建SQL Server登录名时的一些选项,选项如下。SID:指定新SQ

15、L Server登录名的全局唯一标识符,如果未选择此选项,则自动指派。DEFAULT_DATABASE:指定默认数据库,如果未指定此选项,则默认数据库将设置为master。DEFAULT_LANGUAGE:指定默认语言,如果未指定此选项,则默认语言将设置为服务器的当前默认语言。CHECK_EXPIRATION:指定是否对此登录名强制实施密码过期策略,默认值为OFF。CHECK_POLICY:指定应对此登录名强制实施运行SQL Server的计算机的Windows密码策略,默认值为ON。,9.2.2 命令方式管理用户账户,【例9.2】 创建SQL Server登录名sql_tao,密码为1234

16、56,默认数据库设为PXSCJ。CREATE LOGIN sql_taoWITH PASSWORD=123456,DEFAULT_DATABASE=PXSCJ,9.2.2 命令方式管理用户账户,2删除登录名删除登录名使用DROP LOGIN命令。语法格式:DROP LOGIN login_name【例9.3】 删除Windows登录名tao。DROP LOGIN 0BD7E57C949A420tao【例9.4】 删除SQL Server登录名sql_tao。DROP LOGIN sql_tao,9.2.2 命令方式管理用户账户,3创建数据库用户创建数据库用户使用CREATE USER命令。语法

17、格式:CREATE USER user_name FOR | FROM LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name | WITHOUT LOGIN WITH DEFAULT_SCHEMA = schema_name 【例9.5】 使用SQL Server登录名sql_tao(假设已经创建)在PXSCJ数据库中创建数据库用户tao,默认架构名使用dbo。USE PXSCJGOCREATE USER taoFOR LOGIN sql_taoWITH DEFAULT_SCHEMA=dbo,9.2.2

18、命令方式管理用户账户,4删除数据库用户删除数据库用户使用DROP USER语句。语法格式:DROP USER user_nameuser_name为要删除的数据库用户名,在删除之前要使用USE语句指定数据库。【例9.6】 删除PXSCJ数据库的数据库用户tao。USE PXSCJGODROP USER tao,9.3 角色管理,9.3.1 固定服务器角色(1)sysadmin:系统管理员,角色成员可对SQL Server服务器进行所有的管理工作,为最高管理角色。这个角色一般适合于数据库管理员(DBA)。(2)securityadmin:安全管理员,角色成员可以管理登录名及其属性。可以授予、拒绝

19、、撤销服务器级和数据库级的权限。另外还可以重置SQL Server登录名的密码。(3)serveradmin:服务器管理员,角色成员具有对服务器进行设置及关闭服务器的权限。(4)setupadmin:设置管理员,角色成员可以添加和删除链接服务器,并执行某些系统存储过程。(5)processadmin:进程管理员,角色成员可以终止SQL Server实例中运行的进程。(6)diskadmin:用于管理磁盘文件。(7)dbcreator:数据库创建者,角色成员可以创建、更改、删除或还原任何数据库。(8)bulkadmin:可执行BULK INSERT语句,但是这些成员对要插入数据的表必须有INSE

20、RT权限。BULK INSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图。(9)public:其角色成员可以查看任何数据库。,9.3.1 固定服务器角色,1通过对象资源管理器添加服务器角色成员第1步:以系统管理员身份登录到SQL Server服务器,在对象资源管理器中展开“安全性登录名”,选择登录名,例如“0BD7E57C949A420liu”,双击或右击选择“属性”菜单项,打开“登录属性”窗口。第2步:在打开的“登录属性”窗口中选择“服务器角色”选项卡。如图9.8所示,在“登录属性”窗口右边列出了所有的固定服务器角色,用户可以根据需要,在服务器角色前的复选框中打勾,来为登

21、录名添加相应的服务器角色,此处默认已经选择了“public”服务器角色。单击“确定”按钮完成添加。,9.3.1 固定服务器角色,图9.8 SQL Server服务器角色设置窗口,9.3.1 固定服务器角色,2利用系统存储过程添加固定服务器角色成员利用系统存储过程sp_addsrvrolemember可将一登录名添加到某一固定服务器角色中,使其成为固定服务器角色的成员。语法格式:sp_addsrvrolemember loginame = login, rolename = role参数含义:login指定添加到固定服务器角色role的登录名,login可以是SQL Server登录名或Wind

22、ows 登录名;对于Windows登录名,如果还没有授予SQL Server访问权限,将自动对其授予访问权限。固定服务器角色名role必须为sysadmin、securityadmin、serveradmin、setupadmin、processadmin、diskadmin、dbcreator、bulkadmin和public之一。【例9.7】 将Windows登录名0BD7E57C949A420liu添加到sysadmin固定服务器角色中。EXEC sp_addsrvrolemember 0BD7E57C949A420liu, sysadmin,9.3.1 固定服务器角色,3利用系统存储过

23、程删除固定服务器角色成员利用sp_dropsrvrolemember系统存储过程可从固定服务器角色中删除SQL Server 登录名或Windows登录名。语法格式:sp_dropsrvrolemember loginame = login , rolename = role参数含义:login为将要从固定服务器角色删除的登录名。role为服务器角色名,默认值为NULL,必须是有效的固定服务器角色名。 【例9.8】 从sysadmin固定服务器角色中删除SQL Server登录名david。EXEC sp_dropsrvrolemember david, sysadmin,9.3.2 固定数据

24、库角色,(1)db_owner:数据库所有者,这个数据库角色的成员可执行数据库的所有管理操作。用户发出的所有SQL语句均受限于该用户具有的权限。例如,CREATE DATABASE仅限于sysadmin和dbcreator固定服务器角色的成员使用。sysadmin固定服务器角色的成员、db_owner固定数据库角色的成员以及数据库对象的所有者都可授予、拒绝或废除某个用户或某个角色的权限。使用GRANT赋予执行T-SQL语句或对数据进行操作的权限;使用DENY拒绝权限,并防止指定的用户、组或角色从组和角色成员的关系中继承权限;使用REVOKE取消以前授予或拒绝的权限。 (2)db_accessa

25、dmin:数据库访问权限管理者,角色成员具有添加、删除数据库使用者、数据库角色和组的权限。(3)db_securityadmin:数据库安全管理员,角色成员可管理数据库中的权限,如设置数据库表的增加、删除、修改和查询等存取权限。(4)db_ddladmin:数据库DDL管理员,角色成员可增加、修改或删除数据库中的对象。,9.3.2 固定数据库角色,(5)db_backupoperator:数据库备份操作员,角色成员具有执行数据库备份的权限。(6)db_datareader:数据库数据读取者,角色成员可以从所有用户表中读取数据。(7)db_datawriter:数据库数据写入者,角色成员具有对所

26、有用户表进行增加、删除、修改的权限。(8)db_denydatareader:数据库拒绝数据读取者,角色成员不能读取数据库中任何表的内容。(9)db_denydatawriter:数据库拒绝数据写入者,角色成员不能对任何表进行增加、删修、修改操作。(10)public:是一个特殊的数据库角色,每个数据库用户都是public角色的成员,因此不能将用户、组或角色指派为public角色的成员,也不能删除public角色的成员。通常将一些公共的权限赋给public角色。,9.3.2 固定数据库角色,1使用对象资源管理器添加固定数据库角色成员第1步:以系统管理员身份登录到SQL Server服务器,在对

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

28、菜单项,在属性窗口中的“角色成员”栏下可以看到该数据库角色的成员列表,如图9.10所示。,图9.10 数据库角色成员列表,9.3.2 固定数据库角色,2使用系统存储过程添加固定数据库角色成员利用系统存储过程sp_addrolemember可以将一个数据库用户添加到某一固定数据库角色中,使其成为该固定数据库角色的成员。语法格式:sp_addrolemember rolename = role, membername = security_account参数含义:role为当前数据库中的数据库角色的名称。security_account为添加到该角色的安全账户,可以是数据库用户或当前数据库角色。【

29、例9.9】 将PXSCJ数据库上的数据库用户david(假设已经创建)添加为固定数据库角色db_owner的成员。USE PXSCJGOEXEC sp_addrolemember db_owner, david,9.3.2 固定数据库角色,3使用系统存储过程删除固定数据库角色成员利用系统存储过程sp_droprolemember可以将某一成员从固定数据库角色中去除。语法格式:sp_droprolemember rolename = role , membername = security_account【例9.10】 将数据库用户david从db_owner中去除。USE PXSCJGOEXE

30、C sp_droprolemember db_owner, david,9.3.3 自定义数据库角色,1通过对象资源管理器创建数据库角色第1步:创建数据库角色。以Windows系统管理员身份连接SQL Server,在对象资源管理器中展开“数据库”,选择要创建角色的数据库(如PXSCJ)“安全性”“角色”,右击鼠标,在弹出的快捷菜单中选择“新建”菜单项,在弹出的子菜单中选择“新建数据库角色”菜单项,如图9.11所示。进入“数据库角色-新建”窗口。,图9.11 新建数据库角色,9.3.3 自定义数据库角色,第2步:将数据库用户加入数据库角色。当数据库用户成为某一数据库角色的成员之后,该数据库用户

31、就获得该数据库角色所拥有的对数据库操作的权限。如图9.12所示是将PXSCJ数据库的用户david加入ROLE1角色。,图9.12 添加到数据库角色,9.3.3 自定义数据库角色,2通过SQL命令创建数据库角色(1)定义数据库角色。创建用户自定义数据库角色可以使用CREATE ROLE语句。语法格式:CREATE ROLE role_name AUTHORIZATION owner_name 【例9.11】 如下示例在当前数据库中创建名为ROLE2的新角色,并指定dbo为该角色的所有者。USE PXSCJGOCREATE ROLE ROLE2AUTHORIZATION dbo(2)给数据库角色

32、添加成员。向用户定义数据库角色添加成员也使用存储过程sp_ addrolemember,用法与之前介绍的基本相同。,9.3.3 自定义数据库角色,【例9.12】 使用Windows身份验证模式的登录名(如0BD7E57C949A420liu)创建PXSCJ数据库的用户(如0BD7E57C949A420liu),并将该数据库用户添加到ROLE1数据库角色中。USE PXSCJGOCREATE USER 0BD7E57C949A420liuFROM LOGIN 0BD7E57C949A420liuGOEXEC sp_addrolemember ROLE1, 0BD7E57C949A420liu【例

33、9.13】 将SQL Server登录名创建的PXSCJ的数据库用户wang(假设已经创建)添加到数据库角色ROLE1中。USE PXSCJGOEXEC sp_addrolemember ROLE1,wang【例9.14】 将数据库角色ROLE2(假设已经创建)添加到ROLE1中。EXEC sp_addrolemember ROLE1,ROLE2,9.3.3 自定义数据库角色,3通过SQL命令删除数据库角色要删除数据库角色可以使用DROP ROLE语句。语法格式:DROP ROLE role_name其中,role_name为要删除的数据库角色的名称。【例9.15】 删除数据库角色ROLE2。

34、在删除ROLE2之前首先需要将ROLE2中的成员删除,可以使用界面方式,也可以使用命令方式。若使用界面方式,只需在ROLE2的属性页中操作即可。命令方式在删除固定数据库成员时已经介绍,请参见前面内容。确认ROLE2可以删除后,使用以下命令删除ROLE2:DROP ROLE ROLE2,9.3.4 应用程序角色,在SQL Server 2008中创建应用程序角色并测试的具体步骤如下。第1步:以系统管理员身份连接SQL Server,在“对象资源管理器”窗口中展开“数据库PXSCJ安全性角色”,右击“应用程序角色”,选择“新建应用程序角色”。第2步:在“应用程序角色-新建”窗口中输入应用程序角色名

35、称addrole,默认架构dbo,设置密码为123456,如图9.13所示。,图9.13 新建应用程序角色,9.3.4 应用程序角色,在“安全对象”选项卡页面中,可以单击“搜索”按钮,添加“特定对象”,选择对象为表XSB,如图9.14所示。,图9.14 选择对象表XSB,9.3.4 应用程序角色,单击“确定”按钮回到“安全对象”选项卡中,授予表XSB的“选择”权限(如图9.15),完成后单击“确认”按钮。,图9.15 授予应用程序角色表XSB上的查看权限,9.3.4 应用程序角色,第3步:新建SQL Server登录名jack,并新建PXSCJ数据库的数据库用户jack(将其添加为db_den

36、ydatareader数据库角色的成员),使用“jack”登录名连接SQL Server。在查询窗口中输入如下语句:USE PXSCJGOSELECT * FROM XSB运行结果如图9.16所示。,图9.16 使用jack用户查询XSB表,9.3.4 应用程序角色,第4步:使用系统存储过程sp_setapprole激活应用程序角色,语句如下:EXEC sp_setapprole addrole, 123456第5步:在当前查询窗口中重新输入第3步中的查询语句,执行结果如图9.17所示。,图9.17 成功查询,9.4 数据库权限的管理,9.4.1 授予权限权限的授予可以使用命令方式或界面方式完

37、成。(1)使用命令方式授予权限。利用GRANT语句可以给数据库用户或数据库角色授予数据库级别或对象级别的权限。语法格式:GRANT ALL PRIVILEGES | permission ( column ,.n ) ,.n ON securable TO principal ,.n WITH GRANT OPTI【例9.16】 给PXSCJ数据库上的用户david和wang授予创建表的权限。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句:USE PXSCJGOGRANT CREATE TABLE TO david, wangGOON AS principal ,9.4.

38、1 授予权限,【例9.17】 首先在数据库PXSCJ中给public角色授予表XSB的SELECT权限。然后,将其他一些权限授予用户david和wang,使用户有对XSB表的所有操作权限。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句:USE PXSCJGOGRANT SELECT ON XSBTO publicGO GRANT INSERT, UPDATE, DELETE, REFERENCESON XSB TO david, wangGO【例9.18】 将CREATE TABLE权限授予数据库角色ROLE1的所有成员。以系统管理员身份登录SQL Server,新建一个

39、查询,输入以下语句:GRANT CREATE TABLE TO ROLE1,9.4.1 授予权限,【例9.19】 以系统管理员身份登录SQL Server,将表XSB的SELECT权限授予ROLE2角色(指定WITH GRANT OPTION子句)。用户li是ROLE2的成员(创建过程略),在li用户上将表XSB上的SELECT权限授予用户huang(创建过程略),huang不是ROLE2的成员。首先以Windows系统管理员身份连接SQL Server,授予角色ROLE2在XSB表上的SELECT权限:USE PXSCJGOGRANT SELECT ON XSB TO ROLE2 WITH

40、GRANT OPTION,9.4.1 授予权限,在“SQL Server Management Studio”窗口上单击“新建查询”按钮旁边的数据库引擎查询按钮“ ”,在弹出的连接窗口中以li用户的登录名登录,如图9.18所示。单击“连接”按钮连接到SQL Server服务器,出现“查询分析器”窗口。,图9.18 以li用户身份登录,9.4.1 授予权限,在“查询分析器”窗口中使用如下语句将用户li在XSB表上的SELECT权限授予huang:USE PXSCJGOGRANT SELECT ON XSB TO huang AS ROLE2【例9.20】 在当前数据库PXSCJ中给public角

41、色赋予对表XSB中学号、姓名字段的SELECT权限。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句:USE PXSCJGOGRANT SELECT (学号,姓名) ON XSBTO publicGO,9.4.1 授予权限,(2)使用界面方式授予语句权限。 授予数据库上的权限。以给数据库用户wang(假设该用户已经使用SQL Server登录名“wang”创建)授予PXSCJ数据库的CREATE TABLE语句的权限(即创建表的权限)为例,在SQL Server Management Studio中授予用户权限的步骤如下:以系统管理员身份登录到SQL Server服务器,在

42、对象资源管理器中展开“数据库PXSCJ”,右击鼠标,选择“属性”菜单项进入PXSCJ数据库的属性窗口,选择“权限”页。,9.4.1 授予权限,在用户或角色栏中选择需要授予权限的用户或角色(如wang),在窗口下方列出的权限列表中找到相应的权限(如“创建表”),在复选框中打勾,如图9.19所示。,图9.19 授予用户数据库上的权限,9.4.1 授予权限,如图9.19所示。单击“确定”按钮即可完成。如果需要授予权限的用户在列出的用户列表中不存在,则可以单击“搜索”按钮将该用户添加到列表中再选择。选择用户后在如图9.19所示窗口中单击“有效”选项卡可以查看该用户在当前数据库中有哪些权限。 授予数据库

43、对象上的权限。以给数据库用户wang授予KCB表上的SELECT、INSERT的权限为例,步骤如下:以系统管理员身份登录到SQL Server服务器,在对象资源管理器中展开“数据库PXSCJ表KCB”,右击鼠标,选择“属性”菜单项进入KCB表的属性窗口,选择“权限”选项卡。,9.4.1 授予权限,单击“搜索”按钮,在弹出的“选择用户或角色”窗口中单击“浏览”按钮,选择需要授权的用户或角色(如wang),选择后单击“确定”按钮回到KCB表的属性窗口。在该窗口中选择用户(如huang),在权限列表中选择需要授予的权限,如“插入(INSERT)”、“选择(SELECT)”,如图9.20所示,单击“确

44、定”按钮完成授权。,图9.20 授予用户数据库对象上的权限,9.4.2 拒绝权限,使用DENY命令可以拒绝给当前数据库内的用户授予的权限,并防止数据库用户通过其组或角色成员资格继承权限。语法格式:DENY ALL PRIVILEGES | permission ( column ,.n ) ,.n ON securable TO principal ,.n CASCADE AS principal 【例9.21】 对多个用户不允许使用CREATE VIEW和CREATE TABLE语句。DENY CREATE VIEW, CREATE TABLE TO li, huangGO,9.4.2 拒绝

45、权限,【例9.22】 拒绝用户li、huang、0BD7E57C949A420liu对表XSB的一些权限,这样,这些用户就没有对XSB表的操作权限了。USE PXSCJGODENY SELECT, INSERT, UPDATE, DELETE ON XSB TO li, huang, 0BD7E57C949A420liuGO【例9.23】 对所有ROLE2角色成员拒绝CREATE TABLE权限。DENY CREATE TABLE TO ROLE2GO,9.4.3 撤销权限,利用REVOKE命令可撤销以前给当前数据库用户授予或拒绝的权限。语法格式:REVOKE GRANT OPTION FOR

46、 ALL PRIVILEGES | permission ( column ,.n ) ,.n ON securable TO | FROM principal ,.n CASCADE AS principal 【例9.24】 取消已授予用户wang的CREATE TABLE 权限。REVOKE CREATE TABLE FROM wang【例9.25】 取消授予多个用户的多个语句权限。REVOKE CREATE TABLE, CREATE DEFAULT FROM wang, liGO,9.4.3 撤销权限,【例9.26】 取消以前对wang授予或拒绝的在XSB表上的SELECT权限。REV

47、OKE SELECT ON XSB FROM wang【例9.27】 角色ROLE2在XSB表上拥有SELECT权限,用户li是ROLE2的成员,li使用WITH GRANT OPTION子句将SELECT权限转移给了用户huang,用户huang不是ROLE2的成员。现要以用户li的身份撤销用户huang的SELECT权限。以用户“li”的身份登录SQL Server服务器,新建一个查询,使用如下语句撤销huang的SELECT权限:USE PXSCJGOREVOKE SELECT ON XSB TO huang AS ROLE2,9.5 数据库架构的定义和使用,9.5.1 使用界面方式创建

48、架构以在PXSCJ数据库中创建架构为例,具体步骤如下。第1步:以系统管理员身份登录SQL Server,在对象资源管理器中展开“数据库PXSCJ安全性”,选择“架构”,右击鼠标,在弹出的快捷菜单中选择“新建架构”菜单项。第2步:在打开的“架构-新建”窗口中选择“常规”选项卡,在窗口右边“架构名称”下面的文本框中输入架构名称(如test)。单击“搜索”按钮,在打开的“搜索角色和用户”对话框中单击“浏览”按钮。如图9.21所示,在打开的“查找对象”对话框中,在用户“david”前面的复选框中打勾,单击“确定”按钮,返回“搜索角色和用户”对话框。单击“确定”按钮,返回“架构-新建”窗口。单击“确定”

49、按钮,完成架构的创建。这样就将用户david设为了架构test的所有者。,9.5.1 使用界面方式创建架构,图9.21 新建架构,9.5.1 使用界面方式创建架构,第3步:架构创建完后可以新建一个测试表来测试如何访问架构中的对象。在PXSCJ数据库中新建一个名为table_1的表,表的结构如图9.22所示。,图9.22 新建一个测试表,9.5.1 使用界面方式创建架构,在创建表时,表的默认架构为dbo,要将其架构修改为test。在进行表结构设计时,表设计窗口右边有一个表table_1的属性窗口,在创建表时,应在表的属性窗口中将该表的架构设置成test,如图9.23所示。如果没有找到属性窗口,则

50、单击“视图”菜单栏,选择“属性窗口”子菜单就能显示出属性窗口。,图9.23 属性窗口,9.5.1 使用界面方式创建架构,设置完成后保存该表,保存后的表可以在对象资源管理器中找到,此时表名就已经变成test. table_1,如图9.24所示。,图9.24 新建的表test.table_1,9.5.1 使用界面方式创建架构,第4步:在对象资源管理器中展开数据库“PXSCJ安全性架构”,选择新创建的架构test,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“架构属性”窗口,在该架构属性的“权限”选项卡中,单击“搜索”按钮,选择用户owner(假设已经创建),为用户owner分配权限,如“选

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号