首页计算机计算机软件空间数据库与SQL 09 第9章 系统安全管理.pptx

09 第9章 系统安全管理.pptx

页数:65页文件大小:2.80 MB来源: 空间数据库与SQLppt课件

本课件从SQL Server 2008的安全机制与身份验证模式讲起,依次说明登录名与数据库用户的建立与管理、固定服务器角色与数据库角色的使用,最后讲解权限的授予、拒绝、收回以及数据库架构的定义与使用。

9.1 SQL Server 2008的安全机制章节封面,标示本章主题与所涵盖的小节:9.1 SQL Server;9.2建立和管理用户账户;9.3角色管理;9.4数据库权限的管理
图9.1 这两种方式登录示意图,对应「9.1 SQL Server 2008的安全机制」一节的内容
Windows验证模式用户登录Windows时进行身份验证,登录SQL Server时就不再进行身份验证
查看本课件的文字版(共 65 页,供检索与复制)

第1页:9.1 SQL Server安全机制

9.1 SQL Server 2008的安全机制9.2建立和管理用户账户9.3角色管理9.4数据库权限的管理9.5数据库架构的定义和使用

第2页:9.1.1 身份验证模式

9.1.1 SQL Server 2008的身份验证模式SQL Server 2008的身份验证模式是指系统确认用户的方式。SQL Server 2008有两种身份验证模式:Windows验证模式和SQL Server验证模式。如图9.1所示为这两种方式登录SQL Server服务器的情形。

图9.1两种验证方式登录SQL Server服务器的情形

第3页:1.Windows验证模式用户登录

1.Windows验证模式用户登录Windows时进行身份验证,登录SQL Server时就不再进行身份验证。以下是对于Windows验证模式登录的几点重要说明。

  • 必须将Windows账户加入到SQL Server中,才能采用Windows账户登录SQL Server。
  • 如果使用Windows账户登录到另一个网络的SQL Server,则必须在Windows中设置彼此的托管权限。2.SQL Server验证模式在SQL Server验证模式下,SQL Server服务器要对登录的用户进行身份验证。当SQL Server在Windows XP或Windows 2003/2008等操作系统上运行时,系统管理员设定登录验证模式的类型可为Windows验证模式和混合模式。当采用混合模式时,SQL Server系统既允许使用Windows登录名登录,也允许使用SQL Server登录名登录。

第4页:(1)服务器级别所包

  • 服务器级别所包含的安全对象主要有登录名、固定服务器角色等。其中,登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。SQL Server 2008中的登录名主要有两种,第一种是Windows登录名,第二种是SQL Server登录名。Windows登录名对应Windows验证模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组。SQL Server登录名对应SQL Server验证模式,在该验证模式下,能够使用的账户类型主要是SQL Server账户。
  • 数据库级别所包含的安全对象主要有用户、角色、应用程序角色、证书、对称密钥、非对称密钥、程序集、全文目录、DDL事件、架构等。用户安全对象是用来访问数据库的。如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所对应的用户,则该用户只能登录数据库服务器,而不能访问相应的数据库。

第5页:(3)架构级别所包

(3)架构级别所包含的安全对象主要有表、视图、函数、存储过程、类型、同义词、聚合函数等。简单地说,架构的作用是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构。数据库中的每一个用户都会有自己的默认架构。这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。

数据库用户只能对属于自己架构中的数据库对象执行相应的数据操作。至于操作的权限则由数据库角色决定。例如,若某数据库中的表A属于架构S1,表B属于架构S2,而某用户默认的架构为S2,如果没有授予用户操作表A的权限,则该用户不能对表A执行相应的数据操作。但是,该用户可以对表B执行相应的操作。

第6页:图9.2 数据库安全验证

一个数据库使用者,要登录服务器上的SQL Server数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如图9.2所示的安全验证。图9.2 SQL Server数据库安全验证

第7页:9.2.1 界面方式管理用户账户

9.2.1界面方式管理用户账户1.建立Windows验证模式的登录名第1步:创建Windows的用户。以管理员身份登录到Windows XP,选择“开始”,打开控制面板中的“性能和维护”,选择其中的“管理工具”,双击“计算机管理”,进入“计算机管理”窗口。

在该窗口中选择“本地用户和组”中的“用户”图标,右击,在弹出的快捷菜单中选择“新用户”菜单项,打开“新用户”窗口。如图9.3所示,在该窗口中输入用户名、密码,单击“创建”按钮,然后单击“关闭”按钮,完成新用户的创建。图9.3创建新用户的界面

第8页:第2步:将Windows账户加入

第2步:将Windows账户加入到SQL Server中。以管理员身份登录到SQL Server Management Studio,在对象资源管理器中,找到并选择如图9.4所示的“登录名”项。右击鼠标,在弹出的快捷菜单中选择“新建登录名”,打开“登录名-新建”窗口。图9.4新建登录名

第9页:9.5所示

如图9.5所示,可以通过单击“常规”选项卡的“搜索”按钮,在“选择用户或组”对话框中选择相应的用户名或用户组并添加到SQL Server 2008登录用户列表中。例如,本例的用户名为0BD7E57C949A420\liu(0BD7E57C949A420为本地计算机名)。图9.5新建登录名

第10页:2.建立SQL Server验证模式

2.建立SQL Server验证模式的登录名步骤如下。第1步:以系统管理员身份登录SQL Server Management Studio,在对象资源管理器中选择要登录的SQL Server服务器图标,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“服务器属性”窗口。第2步:在打开的“服务器属性”窗口中选择“安全性”选项卡。

选择服务器身份验证为“SQL Server和Windows身份验证模式”,单击“确定”按钮,保存新的配置,重启SQL Server服务即可。

创建SQL Server验证模式的登录名也在如图9.5所示的界面中进行,输入一个自己定义的登录名,例如david,选中“SQL Server身份验证”选项,输入密码,并将“强制密码过期”复选框中的勾去掉,设置完单击“确定”按钮即可。

第11页:测试创建的登录名能否连接

为了测试创建的登录名能否连接SQL Server,可以使用新建的登录名david来进行测试,具体步骤如下:在对象资源管理器窗口中单击“连接”,在下拉框中选择“数据库引擎”,弹出“连接到服务器”对话框。

在该对话框中,“身份验证”选择“SQL Server身份验证”,“登录名”填写david,输入密码,单击“连接”按钮,就能连接SQLServer了。登录后的“对象资源管理器”界面如图9.6所示。图9.6使用SQL Server验证方式登录

第12页:3.管理数据库用户

3.管理数据库用户使用SSMS创建数据库用户账户的步骤如下(以PXSCJ为例):以系统管理员身份连接SQL Server,展开“数据库→PXSCJ→安全性”,选择“用户”,右击鼠标,选择“新建用户”菜单项,进入“数据库用户-新建”窗口。

在“用户名”框中填写一个数据库用户名,“登录名”框中填写一个能够登录SQL Server的登录名,如david。注意,一个登录名在本数据库中只能创建一个数据库用户。选择默认架构为dbo,如图9.7所示,单击“确定”按钮完成创建。图9.7新建数据库用户账户

第13页:1.创建登录名

1.创建登录名在SQL Server 2008中,创建登录名可以使用CREATE LOGIN命令。

语法格式:CREATE LOGIN login_name{WITH PASSWORD = 'password' [ HASHED ] [ MUST_CHANGE ][ , <option_list> [ ,... ] ]| FROM{WINDOWS [ WITH <windows_options> [ ,... ] ]| CERTIFICATE certname| ASYMMETRIC KEY asym_key_name}}

第14页:option_list>

其中,<option_list> ::=SID = sid| DEFAULT_DATABASE = database| DEFAULT_LANGUAGE = language| CHECK_EXPIRATION = { ON | OFF}| CHECK_POLICY = { ON | OFF}[ CREDENTIAL = credential_name ]<windows_options> ::=DEFAULT_DATABASE = database| DEFAULT_LANGUAGE = language

第15页:(1)创建Windows验证模式登录名

(1)创建Windows验证模式登录名。

创建Windows登录名使用FROM子句,在FROM子句的语法格式中,WINDOWS关键字指定将登录名映射到Windows登录名,其中,<windows_options>为创建Windows登录名的选项,DEFAULT_DATABASE指定默认数据库,DEFAULT_LANGUAGE指定默认语言。

【例9.1】使用命令方式

使用命令方式创建Windows登录名tao(假设Windows用户tao已经创建,本地计算机名为0BD7E57C949A420),默认数据库设为PXSCJ。 USE master GO CREATE LOGIN [0BD7E57C949A420\tao] FROM WINDOWSWITH DEFAULT_DATABASE= PXSCJ

第16页:(2)创建验证模式登录名

(2)创建SQL Server验证模式登录名。创建SQL Server登录名使用WITH子句,其中,①PASSWORD:用于指定正在创建的登录名的密码,password为密码字符串。HASHED选项指定在PASSWORD参数后输入的密码已经过哈希运算,如果未选择此选项,则在将作为密码输入的字符串存储到数据库之前,对其进行哈希运算。

如果指定MUST_CHANGE选项,则SQL Server会在首次使用新登录名时提示用户输入新密码。②<option_list>:用于指定在创建SQL Server登录名时的一些选项,选项如下。SID:指定新SQL Server登录名的全局唯一标识符,如果未选择此选项,则自动指派。

DEFAULT_DATABASE:指定默认数据库,如果未指定此选项,则默认数据库将设置为master。DEFAULT_LANGUAGE:指定默认语言,如果未指定此选项,则默认语言将设置为服务器的当前默认语言。CHECK_EXPIRATION:指定是否对此登录名强制实施密码过期策略,默认值为OFF。

CHECK_POLICY:指定应对此登录名强制实施运行SQL Server的计算机的Windows密码策略,默认值为ON。

第17页:【例9.2】创建SQL Server登录

【例9.2】创建SQL Server登录名

创建SQL Server登录名sql_tao,密码为123456,默认数据库设为PXSCJ。 CREATE LOGIN sql_tao WITH PASSWORD='123456',DEFAULT_DATABASE=PXSCJ

第18页:2.删除登录名

2.删除登录名删除登录名使用DROP LOGIN命令。语法格式:DROP LOGIN login_name

【例9.3】删除Windows登录名

删除Windows登录名tao。 DROP LOGIN [0BD7E57C949A420\tao]

【例9.4】删除SQL Server登录名

删除SQL Server登录名sql_tao。 DROP LOGIN sql_tao

第19页:3.创建数据库用户

3.创建数据库用户创建数据库用户使用CREATE USER命令。

语法格式: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 Server登录名sql_tao(假设已经创建)在PXSCJ数据库中创建数据库用户tao,默认架构名使用dbo。 USE PXSCJ GO CREATE USER tao FOR LOGIN sql_tao WITH DEFAULT_SCHEMA=dbo

第20页:4.删除数据库用户

4.删除数据库用户删除数据库用户使用DROP USER语句。语法格式:DROP USER user_nameuser_name为要删除的数据库用户名,在删除之前要使用USE语句指定数据库。

【例9.6】删除PXSCJ数据库

删除PXSCJ数据库的数据库用户tao。 USE PXSCJ GO DROP USER tao

第21页:9.3.1 固定服务器角色

9.3.1固定服务器角色

  • sysadmin:系统管理员,角色成员可对SQL Server服务器进行所有的管理工作,为最高管理角色。这个角色一般适合于数据库管理员(DBA)。
  • securityadmin:安全管理员,角色成员可以管理登录名及其属性。可以授予、拒绝、撤销服务器级和数据库级的权限。另外还可以重置SQL Server登录名的密码。
  • serveradmin:服务器管理员,角色成员具有对服务器进行设置及关闭服务器的权限。
  • setupadmin:设置管理员,角色成员可以添加和删除链接服务器,并执行某些系统存储过程。
  • processadmin:进程管理员,角色成员可以终止SQL Server实例中运行的进程。
  • diskadmin:用于管理磁盘文件。
  • dbcreator:数据库创建者,角色成员可以创建、更改、删除或还原任何数据库。
  • bulkadmin:可执行BULK INSERT语句,但是这些成员对要插入数据的表必须有INSERT权限。BULK INSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图。
  • public:其角色成员可以查看任何数据库。

第22页:1.通过对象资源管理器

1.通过对象资源管理器添加服务器角色成员第1步:以系统管理员身份登录到SQL Server服务器,在对象资源管理器中展开“安全性→登录名”,选择登录名,例如“0BD7E57C949A420\liu”,双击或右击选择“属性”菜单项,打开“登录属性”窗口。第2步:在打开的“登录属性”窗口中选择“服务器角色”选项卡。

如图9.8所示,在“登录属性”窗口右边列出了所有的固定服务器角色,用户可以根据需要,在服务器角色前的复选框中打勾,来为登录名添加相应的服务器角色,此处默认已经选择了“public”服务器角色。单击“确定”按钮完成添加。

第23页:图9.8 SQL Server服务器角色

图9.8 SQL Server服务器角色设置窗口

第24页:2.利用系统存储过程

2.利用系统存储过程添加固定服务器角色成员利用系统存储过程sp_addsrvrolemember可将一登录名添加到某一固定服务器角色中,使其成为固定服务器角色的成员。

语法格式:sp_addsrvrolemember [ @loginame = ] 'login',[@rolename =] 'role'参数含义:login指定添加到固定服务器角色role的登录名,login可以是SQLServer登录名或Windows登录名;

对于Windows登录名,如果还没有授予SQL Server访问权限,将自动对其授予访问权限。固定服务器角色名role必须为sysadmin、securityadmin、serveradmin、setupadmin、processadmin、diskadmin、dbcreator、bulkadmin和public之一。

【例9.7】将Windows登录名

将Windows登录名0BD7E57C949A420\liu添加到sysadmin固定服务器角色中。 EXEC sp_addsrvrolemember '0BD7E57C949A420\liu', 'sysadmin'

第25页:3.利用系统存储过程

3.利用系统存储过程删除固定服务器角色成员利用sp_dropsrvrolemember系统存储过程可从固定服务器角色中删除SQLServer登录名或Windows登录名。

语法格式:sp_dropsrvrolemember[ @loginame = ] 'login' , [ @rolename = ] 'role'参数含义:'login'为将要从固定服务器角色删除的登录名。'role'为服务器角色名,默认值为NULL,必须是有效的固定服务器角色名。

【例9.8】从sysadmin固定服务器角色中

从sysadmin固定服务器角色中删除SQL Server登录名david。 EXEC sp_dropsrvrolemember 'david', 'sysadmin'

第26页:(1)db_owner

  • db_owner:数据库所有者,这个数据库角色的成员可执行数据库的所有管理操作。用户发出的所有SQL语句均受限于该用户具有的权限。例如,CREATEDATABASE仅限于sysadmin和dbcreator固定服务器角色的成员使用。sysadmin固定服务器角色的成员、db_owner固定数据库角色的成员以及数据库对象的所有者都可授予、拒绝或废除某个用户或某个角色的权限。使用GRANT赋予执行T-SQL语句或对数据进行操作的权限;使用DENY拒绝权限,并防止指定的用户、组或角色从组和角色成员的关系中继承权限;使用REVOKE取消以前授予或拒绝的权限。
  • db_accessadmin:数据库访问权限管理者,角色成员具有添加、删除数据库使用者、数据库角色和组的权限。
  • db_securityadmin:数据库安全管理员,角色成员可管理数据库中的权限,如设置数据库表的增加、删除、修改和查询等存取权限。
  • db_ddladmin:数据库DDL管理员,角色成员可增加、修改或删除数据库中的对象。

第27页:(5)db_backupoperator

(5)db_backupoperator:数据库备份操作员,角色成员具有执行数据库备份的权限。(6)db_datareader:数据库数据读取者,角色成员可以从所有用户表中读取数据。(7)db_datawriter:数据库数据写入者,角色成员具有对所有用户表进行增加、删除、修改的权限。

(8)db_denydatareader:数据库拒绝数据读取者,角色成员不能读取数据库中任何表的内容。(9)db_denydatawriter:数据库拒绝数据写入者,角色成员不能对任何表进行增加、删修、修改操作。

(10)public:是一个特殊的数据库角色,每个数据库用户都是public角色的成员,因此不能将用户、组或角色指派为public角色的成员,也不能删除public角色的成员。通常将一些公共的权限赋给public角色。

第28页:1.使用对象资源管理器

1.使用对象资源管理器添加固定数据库角色成员第1步:以系统管理员身份登录到SQL Server服务器,在对象资源管理器中展开“数据库→PXSCJ→安全性→用户”,选择一个数据库用户,例如“david”,双击或单击右键选择“属性”菜单项,打开“数据库用户”窗口。

第2步:在打开的窗口中,在“常规”选项卡中的“数据库角色成员身份”栏,用户可以根据需要,在数据库角色前的复选框中打勾,来为数据库用户添加相应的数据库角色,如图9.9所示,单击“确定”按钮完成添加。

第29页:图9.9 添加固定数据库角色成员

图9.9添加固定数据库角色成员

第30页:第3步:查看固定数据库角色

第3步:查看固定数据库角色的成员。在对象资源管理器窗口中,在PXSCJ数据库下的“安全性→角色→数据库角色”目录下,选择数据库角色,如db_owner,右击选择“属性”菜单项,在属性窗口中的“角色成员”栏下可以看到该数据库角色的成员列表,如图9.10所示。图9.10数据库角色成员列表

第31页:2.使用系统存储过程

2.使用系统存储过程添加固定数据库角色成员利用系统存储过程sp_addrolemember可以将一个数据库用户添加到某一固定数据库角色中,使其成为该固定数据库角色的成员。

语法格式:sp_addrolemember[ @rolename = ] 'role', [ @membername = ] 'security_account'参数含义:'role'为当前数据库中的数据库角色的名称。'security_account'为添加到该角色的安全账户,可以是数据库用户或当前数据库角色。

【例9.9】将PXSCJ数据库上

将PXSCJ数据库上的数据库用户david(假设已经创建)添加为固定数据库角色db_owner的成员。 USE PXSCJ GO EXEC sp_addrolemember 'db_owner', 'david'

第32页:3.使用系统存储过程

3.使用系统存储过程删除固定数据库角色成员利用系统存储过程sp_droprolemember可以将某一成员从固定数据库角色中去除。语法格式:sp_droprolemember [ @rolename = ] 'role' ,[ @membername = ]'security_account'

【例9.10】将数据库用户

将数据库用户david从db_owner中去除。 USE PXSCJ GO EXEC sp_droprolemember 'db_owner', 'david'

第33页:1.通过对象资源管理器

1.通过对象资源管理器创建数据库角色第1步:创建数据库角色。以Windows系统管理员身份连接SQL Server,在对象资源管理器中展开“数据库”,选择要创建角色的数据库(如PXSCJ)→“安全性”→“角色”,右击鼠标,在弹出的快捷菜单中选择“新建”菜单项,在弹出的子菜单中选择“新建数据库角色”菜单项,如图9.11所示。

进入“数据库角色-新建”窗口。图9.11新建数据库角色

第34页:图9.12 添加到数据库角色

第2步:将数据库用户加入数据库角色。当数据库用户成为某一数据库角色的成员之后,该数据库用户就获得该数据库角色所拥有的对数据库操作的权限。如图9.12所示是将PXSCJ数据库的用户david加入ROLE1角色。图9.12添加到数据库角色

第35页:2.用SQL命令创建数据库角色

2.通过SQL命令创建数据库角色(1)定义数据库角色。创建用户自定义数据库角色可以使用CREATE ROLE语句。语法格式:CREATE ROLE role_name [ AUTHORIZATION owner_name ]

【例9.11】如下示例

如下示例在当前数据库中创建名为ROLE2的新角色,并指定dbo为该角色的所有者。 USE PXSCJ GO CREATE ROLE ROLE2AUTHORIZATION dbo(2)给数据库角色添加成员。向用户定义数据库角色添加成员也使用存储过程sp_ addrolemember,用法与之前介绍的基本相同。

第36页:【例9.12】Windows身份验证

【例9.12】使用Windows身份验证模式

使用Windows身份验证模式的登录名(如0BD7E57C949A420\liu)创建PXSCJ数据库的用户(如0BD7E57C949A420\liu),并将该数据库用户添加到ROLE1数据库角色中。 USE PXSCJ GO CREATE USER [0BD7E57C949A420\liu] FROM LOGIN [0BD7E57C949A420\liu] GO EXEC sp_addrolemember 'ROLE1', '0BD7E57C949A420\liu'

【例9.13】将SQL Server登录名

将SQL Server登录名创建的PXSCJ的数据库用户wang(假设已经创建)添加到数据库角色ROLE1中。 USE PXSCJ GO EXEC sp_addrolemember 'ROLE1','wang'

【例9.14】将数据库角色

将数据库角色ROLE2(假设已经创建)添加到ROLE1中。 EXEC sp_addrolemember 'ROLE1','ROLE2'

第37页:3.删除数据库角色

3.通过SQL命令删除数据库角色要删除数据库角色可以使用DROP ROLE语句。语法格式:DROP ROLE role_name其中,role_name为要删除的数据库角色的名称。

【例9.15】删除数据库角色

删除数据库角色ROLE2。在删除ROLE2之前首先需要将ROLE2中的成员删除,可以使用界面方式,也可以使用命令方式。若使用界面方式,只需在ROLE2的属性页中操作即可。命令方式在删除固定数据库成员时已经介绍,请参见前面内容。确认ROLE2可以删除后,使用以下命令删除ROLE2: DROP ROLE ROLE2

第38页:创建应用程序角色

在SQL Server 2008中创建应用程序角色并测试的具体步骤如下。第1步:以系统管理员身份连接SQL Server,在“对象资源管理器”窗口中展开“数据库→PXSCJ→安全性→角色”,右击“应用程序角色”,选择“新建应用程序角色”。

第2步:在“应用程序角色-新建”窗口中输入应用程序角色名称addrole,默认架构dbo,设置密码为123456,如图9.13所示。图9.13新建应用程序角色

第39页:图9.14 选择对象表

在“安全对象”选项卡页面中,可以单击“搜索”按钮,添加“特定对象”,选择对象为表XSB,如图9.14所示。图9.14选择对象表XSB

第40页:图9.15 授予应用程序角色表

单击“确定”按钮回到“安全对象”选项卡中,授予表XSB的“选择”权限(如图9.15),完成后单击“确认”按钮。图9.15授予应用程序角色表XSB上的查看权限

第41页:第3步:新建SQL Server登录名

第3步:新建SQL Server登录名jack,并新建PXSCJ数据库的数据库用户jack(将其添加为db_denydatareader数据库角色的成员),使用“jack”登录名连接SQLServer。在查询窗口中输入如下语句:USE PXSCJGOSELECT * FROM XSB运行结果如图9.16所示。

图9.16使用jack用户查询XSB表

第42页:图9.17 成功查询

第4步:使用系统存储过程sp_setapprole激活应用程序角色,语句如下:EXEC sp_setapprole 'addrole', '123456'第5步:在当前查询窗口中重新输入第3步中的查询语句,执行结果如图9.17所示。图9.17成功查询

第43页:9.4.1 授予权限权限

9.4.1授予权限权限的授予可以使用命令方式或界面方式完成。(1)使用命令方式授予权限。利用GRANT语句可以给数据库用户或数据库角色授予数据库级别或对象级别的权限。

语法格式:GRANT { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ][ ON securable ] TO principal [ ,...n ][ WITH GRANT OPTI

【例9.16】给PXSCJ数据库上

给PXSCJ数据库上的用户david和wang授予创建表的权限。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句: USE PXSCJ GO GRANT CREATE TABLETO david, wang GO ON ] [ AS principal ]

第44页:【例9.17】首先在数据库

【例9.17】首先在数据库

首先在数据库PXSCJ中给public角色授予表XSB的SELECT权限。然后,将其他一些权限授予用户david和wang,使用户有对XSB表的所有操作权限。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句: USE PXSCJ GO GRANT SELECTON XSBTO public GO GRANT INSERT, UPDATE, DELETE, REFERENCESON XSBTO david, wang GO

【例9.18】将CREATE TABLE权限授予数据库角色

将CREATE TABLE权限授予数据库角色ROLE1的所有成员。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句: GRANT CREATE TABLETO ROLE1

第45页:【例9.19】以系统管理员身份登录

【例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 PXSCJ GO GRANT SELECTON XSBTO ROLE2 WITH GRANT OPTION

第46页:新建数据库引擎查询

在“SQL Server Management Studio”窗口上单击“新建查询”按钮旁边的数据库引擎查询按钮“”,在弹出的连接窗口中以li用户的登录名登录,如图9.18所示。单击“连接”按钮连接到SQL Server服务器,出现“查询分析器”窗口。图9.18以li用户身份登录

第47页:查询分析器

在“查询分析器”窗口中使用如下语句将用户li在XSB表上的SELECT权限授予huang:USE PXSCJGOGRANT SELECTON XSB TO huangAS ROLE2

【例9.20】在当前数据库

在当前数据库PXSCJ中给public角色赋予对表XSB中学号、姓名字段的SELECT权限。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句: USE PXSCJ GO GRANT SELECT(学号,姓名) ON XSBTO public GO

第48页:(2)使用界面方式授予语句权限

(2)使用界面方式授予语句权限。①授予数据库上的权限。

以给数据库用户wang(假设该用户已经使用SQLServer登录名“wang”创建)授予PXSCJ数据库的CREATE TABLE语句的权限(即创建表的权限)为例,在SQL Server Management Studio中授予用户权限的步骤如下:以系统管理员身份登录到SQL Server服务器,在对象资源管理器中展开“数据库→PXSCJ”,右击鼠标,选择“属性”菜单项进入PXSCJ数据库的属性窗口,选择“权限”页。

第49页:图9.19 授予用户数据库上

在用户或角色栏中选择需要授予权限的用户或角色(如wang),在窗口下方列出的权限列表中找到相应的权限(如“创建表”),在复选框中打勾,如图9.19所示。图9.19授予用户数据库上的权限

第50页:授予权限的操作

如图9.19所示。单击“确定”按钮即可完成。如果需要授予权限的用户在列出的用户列表中不存在,则可以单击“搜索”按钮将该用户添加到列表中再选择。选择用户后在如图9.19所示窗口中单击“有效”选项卡可以查看该用户在当前数据库中有哪些权限。②授予数据库对象上的权限。

以给数据库用户wang授予KCB表上的SELECT、INSERT的权限为例,步骤如下:以系统管理员身份登录到SQL Server服务器,在对象资源管理器中展开“数据库→PXSCJ→表→KCB”,右击鼠标,选择“属性”菜单项进入KCB表的属性窗口,选择“权限”选项卡。

第51页:选择要授权的用户或角色

单击“搜索”按钮,在弹出的“选择用户或角色”窗口中单击“浏览”按钮,选择需要授权的用户或角色(如wang),选择后单击“确定”按钮回到KCB表的属性窗口。在该窗口中选择用户(如huang),在权限列表中选择需要授予的权限,如“插入(INSERT)”、“选择(SELECT)”,如图9.20所示,单击“确定”按钮完成授权。

图9.20授予用户数据库对象上的权限

第52页:DENY命令拒绝权限

使用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 TABLETO li, huang GO

第53页:【例9.22】拒绝用户

【例9.22】拒绝用户

拒绝用户li、huang、[0BD7E57C949A420\liu]对表XSB的一些权限,这样,这些用户就没有对XSB表的操作权限了。 USE PXSCJ GO DENY SELECT, INSERT, UPDATE, DELETEON XSB TO li, huang, [0BD7E57C949A420\liu] GO

【例9.23】对所有

对所有ROLE2角色成员拒绝CREATE TABLE权限。 DENY CREATE TABLETO ROLE2 GO

第54页:利用REVOKE命令

利用REVOKE命令可撤销以前给当前数据库用户授予或拒绝的权限。

语法格式:REVOKE [ GRANT OPTION FOR ]{ [ ALL [ PRIVILEGES ] ]| permission [ ( column [ ,...n ] ) ] [ ,...n ]}[ ON securable ]{ TO | FROM } principal [ ,...n ][ CASCADE] [ AS principal ]

【例9.24】取消已授予用户

取消已授予用户wang的CREATE TABLE权限。 REVOKE CREATE TABLEFROM wang

【例9.25】取消授予多个用户

取消授予多个用户的多个语句权限。 REVOKE CREATE TABLE, CREATE DEFAULTFROM wang, li GO

第55页:【例9.26】取消以前

【例9.26】取消以前

取消以前对wang授予或拒绝的在XSB表上的SELECT权限。 REVOKE SELECTON XSBFROM wang

【例9.27】角色ROLE2

角色ROLE2在XSB表上拥有SELECT权限,用户li是ROLE2的成员,li使用WITH GRANT OPTION子句将SELECT权限转移给了用户huang,用户huang不是ROLE2的成员。现要以用户li的身份撤销用户huang的SELECT权限。以用户“li”的身份登录SQL Server服务器,新建一个查询,使用如下语句撤销huang的SELECT权限: USE PXSCJ GO REVOKE SELECTON XSBTO huang AS ROLE2

第56页:9.5.1 使用界面方式

9.5.1使用界面方式创建架构以在PXSCJ数据库中创建架构为例,具体步骤如下。第1步:以系统管理员身份登录SQL Server,在对象资源管理器中展开“数据库→PXSCJ→安全性”,选择“架构”,右击鼠标,在弹出的快捷菜单中选择“新建架构”菜单项。

第2步:在打开的“架构-新建”窗口中选择“常规”选项卡,在窗口右边“架构名称”下面的文本框中输入架构名称(如test)。单击“搜索”按钮,在打开的“搜索角色和用户”对话框中单击“浏览”按钮。如图9.21所示,在打开的“查找对象”对话框中,在用户“david”前面的复选框中打勾,单击“确定”按钮,返回“搜索角色和用户”对话框。

单击“确定”按钮,返回“架构-新建”窗口。单击“确定”按钮,完成架构的创建。这样就将用户david设为了架构test的所有者。

第57页:图9.21 新建架构

图9.21新建架构

第58页:图9.22 新建一个测试表

第3步:架构创建完后可以新建一个测试表来测试如何访问架构中的对象。在PXSCJ数据库中新建一个名为table_1的表,表的结构如图9.22所示。图9.22新建一个测试表

第59页:修改表的默认架构

在创建表时,表的默认架构为dbo,要将其架构修改为test。在进行表结构设计时,表设计窗口右边有一个表table_1的属性窗口,在创建表时,应在表的属性窗口中将该表的架构设置成test,如图9.23所示。如果没有找到属性窗口,则单击“视图”菜单栏,选择“属性窗口”子菜单就能显示出属性窗口。图9.23属性窗口

第60页:图9.24 新建的表

设置完成后保存该表,保存后的表可以在对象资源管理器中找到,此时表名就已经变成test. table_1,如图9.24所示。图9.24新建的表test.table_1

第61页:第4步:在对象资源管理器中展开数据库

第4步:在对象资源管理器中展开数据库“PXSCJ→安全性→架构”,选择新创建的架构test,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“架构属性”窗口,在该架构属性的“权限”选项卡中,单击“搜索”按钮,选择用户owner(假设已经创建),为用户owner分配权限,如“选择(SELECT)”权限,如图9.25所示。

单击“确定”按钮,保存上述设置。用同样的方法,还可以授予其他用户访问该架构的权限。图9.25分配权限

第62页:第5步:重新启动

第5步:重新启动SQL Server Management Studio,使用SQL Server身份验证方式,以用户owner的登录名连接SQL Server。在连接成功后,创建一个新的查询,在“查询分析器”窗口中输入查询表test. table_1中数据的T-SQL语句。

USE PXSCJGOSELECT * FROM test.table_1执行结果如图9.26所示。图9.26查询语句的执行结果

第63页:图9.27 删除语句

再新建一个SQL查询,在查询编辑器中输入删除表test. table_1的T-SQL语句:DELETE FROM test.table_1执行结果如图9.27所示。图9.27删除语句的执行结果

第64页:CREATE SCHEMA创建架构

可以使用CREATE SCHEMA语句创建数据库架构。

语法格式:CREATE SCHEMA <schema_name_clause> [ <schema_element> [ , ...n ] ]其中,<schema_name_clause> ::={schema_name| AUTHORIZATION owner_name| schema_name AUTHORIZATION owner_name}<schema_element> ::={table_definition | view_definition | grant_statementrevoke_statement | deny_statement}

第65页:【例9.28】创建架构

【例9.28】创建架构

创建架构test_schema,其所有者为用户david。以系统管理员身份登录SQL Server,新建一个查询,输入以下语句: USE PXSCJ GO CREATE SCHEMA test_schemaAUTHORIZATION david另外,要删除可以使用DROP SCHEMA语句,例如, DROP SCHEMA test_schema
顶部目录