
SQL Server实用教程(第3版)[郑阿奇][电子教案]第9章系统安全管理培训讲学.ppt
54页第第9 9章章 系系统统统统安全管理安全管理※9.1 SQL Server 2005的安全机制※9.2 建立和管理用户账户※9.3 服务器角色与数据库角色※9.4 数据库权限的管理※9.5 数据库架构的定义和使用9.1 SQL Server 20059.1 SQL Server 2005的安全机制的安全机制Ø9.1.1 SQL Server 2005的身份验证模式SQL Server 2005的身份验证模式是指系统确认用户的方式SQL Server 2005有两种身份验证模式:Windows验证模式和SQL Server验证模式如图9.1所示给出了这两种方式登录SQL Server服务器的情形图9.1 两种验证方式登录SQL Server服务器的情形9.1.1 SQL Server 20059.1.1 SQL Server 2005的身份的身份验证验证验证验证 模式模式h1.Windows验证模式用户登录Windows时进行身份验证,登录SQL Server时就不再进行身份验证以下是对于Windows验证模式登录的几点重要说明:(1)必须将Windows账户加入到SQL Server中,才能采用Windows账户登录SQL Server。
2)如果使用Windows账户登录到另一个网络的SQL Server,必须在Windows中设置彼此的托管权限h2.SQL Server验证模式在SQL Server验证模式下,SQL Server服务器要对登录的用户进行身份验证当SQL Server在Windows XP或Windows 2000/2003上运行时,系统管理员设定登录验证模式的类型可为Windows验证模式和混合模式当采用混合模式时,SQL Server系统既允许使用Windows登录名登录,也允许使用SQL Server登录名登录9.1.2 SQL Server 20059.1.2 SQL Server 2005的安全性机制的安全性机制(3)架构级别所包含的安全对象主要有表、视图、函数、存储过程、类型、同义词、聚合函数等架构的作用简单地说是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构数据库中的每一个用户都会有自己的默认架构这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo数据库用户只能对属于自己架构中的数据库对象执行相应的数据操作至于操作的权限则由数据库角色所决定。
一个数据库使用者,想要登录服务器上的SQL Server数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如图9.2所示的安全验证图9.2 SQL Server数据库安全验证9.2 9.2 建立和管理用建立和管理用户账户户账户户账户户账户Ø9.2.1 界面方式管理用户账户h1.建立Windows验证模式的登录名步骤如下(在此以Windows XP为例):第1步 创建Windows的用户以管理员身份登录到Windows XP,选择“开始”→打开“控制面板”中的“性能和维 护”→选择其中的“管理工具”→双击“计算机管理”,进入“计算机管理”窗口在该窗口中选择“本地用户和组”中的“用户”图标右击,在弹出的快捷菜单中选择 “新用户”菜单项,打开“新用户”窗口如图9.3所示,在该窗口中输入用户名、密码,单击“创建”按钮,然后单击“关闭”按钮,完成新用户的创建 图9.3 创建新用户的界面 9.2.1 9.2.1 界面方式管理用界面方式管理用户账户户账户户账户户账户第2步 将Windows账户加入到SQL Server中以管理员身份登录到SQL Server Management Studio,在“对象资源管理器”中,找到并选择如图9.4所示的“登录名”项。
右击鼠标,在弹出的快捷菜单中选择“新建登录名”,打开“登录名-新建”窗口 图9.4 新建登录名9.2.1 9.2.1 界面方式管理用界面方式管理用户账户户账户户账户户账户如图9.5所示,可以通过单击“常规”选项页的“搜索”按钮,在“选择用户或组”对话框中选择相应的用户名或用户组添加到SQL Server 2005登录用户列表中例如,本例的用户名为:0BD7E57C949A420\liu(0BD7E57C949A420为本地计算机名)图9.5 新建登录名9.2.1 9.2.1 界面方式管理用界面方式管理用户账户户账户户账户户账户h2.建立SQL Server验证模式的登录名要建立SQL Server验证模式的登录名,首先应将验证模式设置为混合模式本书在安装SQL Server时已经将验证模式设为了混合模式如果用户在安装SQL Server时验证模式没有设置为混合模式,则先要将验证模式设为混合模式步骤如下:第1步 在“对象资源管理器”中选择要登录的SQL Server服务器图标,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“服务器属性”窗口第2步 在打开的“服务器属性”窗口中选择“安全性”选项页。
选择身份验证为“SQL Server和Windows身份验证模式”,单击“确定”按钮,保存新的配置,重启SQL Server服务即可创建SQL Server验证模式的登录名也在如图9.5所示的界面中进行,输入一个自己定义的登录名,例如david,选中“SQL Server身份验证”选项,输入密码,并将“强制密码过期”复选框中的勾去掉,设置完单击“确定”按钮即可9.2.1 9.2.1 界面方式管理用界面方式管理用户账户户账户户账户户账户为了测试创建的登录名能否连接SQL Server,可以使用新建的登录名david来进行测试,具体步骤如下:在“对象资源管理器”窗口中单击“连接”,在下拉框中选择“数据库引擎”,弹出“连接到服务器”对话框在该对话框中,“身份验证”选择“SQL Server身份验证”,“登录名”填写david,输入密码,单击“连接”按钮,就能连接SQL Server了登录后的“对象资源管理器”界面如图9.6所示图9.6 使用SQL Server验证方式登录9.2.1 9.2.1 界面方式管理用界面方式管理用户账户户账户户账户户账户h3.管理数据库用户使用“SQL Server Management Studio”创建数据库用户账户的步骤如下(以PXSCJ为例):以系统管理员身份连接SQL Server,展开“数据库”→“PXSCJ”→“安全性”→选择“用户”,右击鼠标,选择“新建用户”菜单项,进入“数据库用户-新建”窗口。
在“用户名”框中填写一个数据库用户名,“登录名”框中填写一个能够登录SQL Server的登录名,如david注意:一个登录名在本数据库中只能创建一个数据库用户选择默认架构为dbo,如图9.7所示,单击“确定”按钮完成创建9.2.1 9.2.1 界面方式管理用界面方式管理用户账户户账户户账户户账户图9.7 新建数据库用户账户9.2.2 9.2.2 命令方式管理用命令方式管理用户账户户账户户账户户账户h1.创建登录名在SQL Server 2005中,创建登录名可以使用CREATE LOGIN命令语法格式:CREATE LOGIN login_name { WITH PASSWORD = 'password' [ HASHED ] [ MUST_CHANGE ][ ,
USE masterGOCREATE LOGIN [0BD7E57C949A420\tao]FROM WINDOWS WITH DEFAULT_DATABASE= PXSCJ9.2.2 9.2.2 命令方式管理用命令方式管理用户账户户账户户账户户账户只有在Windows Server 2003及更高版本上才会强制执行CHECK_EXPIRATION和CHECK_POLICY例9.2】 创建SQL Server登录名sql_tao,密码为123456,默认数据库设为PXSCJCREATE LOGIN sql_taoWITH PASSWORD='123456', DEFAULT_DATABASE=PXSCJ9.2.2 9.2.2 命令方式管理用命令方式管理用户账户户账户户账户户账户h2.删除登录名删除登录名使用DROP LOGIN命令语法格式:DROP LOGIN login_namelogin_name为要删除的登录名例9.3】 删除Windows登录名taoDROP LOGIN [0BD7E57C949A420\tao]【例9.4】 删除SQL Server登录名sql_tao。
DROP LOGIN sql_taoh3.创建数据库用户创建数据库用户使用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.2.2 9.2.2 命令方式管理用命令方式管理用户账户户账户户账户户账户h4.删除数据库用户删除数据库用户使用DROP USER语句语法格式:DROP USER user_nameuser_name为要删除的数据库用户名,在删除之前要使用USE语句指定数据库例9.6】 删除PXSCJ数据库的数据库用户taoUSE PXSCJGODROP USER tao9.3 9.3 服服务务务务器角色与数据器角色与数据库库库库角色角色Ø9.3.1 固定服务器角色服务器角色独立于各个数据库。
如果在SQL Server中创建一个登录名后,要赋予该登录者具有管理服务器的权限,此时可设置该登录名为服务器角色的成员SQL Server提供了以下固定服务器角色:lsysadmin:系统管理员,可对SQL Server服务器进行所有的管理工作,为最高管理角色这个角色一般适合于数据库管理员(DBA)lsecurityadmin:安全管理员,可以管理登录和CREATE DATABASE权限,还可以读取错误日志和更改密码lserveradmin:服务器管理员,具有对服务器进行设置及关闭服务器的权限lsetupadmin:设置管理员,添加和删除链接服务器,并执行某些系统存储过程lprocessadmin:进程管理员,可以用来结束进程ldiskadmin:用于管理磁盘文件ldbcreator:数据库创建者,可以创建、更改、删除或还原任何数据库lbulkadmin:可执行BULK INSERT语句,但是这些成员对要插入数据的表必须有INSERT权限BULK INSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图9.3.1 9.3.1 固定服固定服务务务务器角色器角色h1.通过“对象资源管理器”添加服务器角色成员第1步 以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“安全性”→“登录名”→选择登录名,例如“0BD7E57C949A420\liu”,双击或单击右键选择“属性”菜单项,打开“登录属性”窗口。
第2步 在打开的“登录属性”窗口中选择“服务器角色”选项页如图9.8所示,在“登录属性”窗口右边列出了所有的固定服务器角色,用户可以根据需要,在服务器角色前的复选框中打勾,来为登录名添加相应的服务器角色单击“确定”按钮完成添加图9.8 SQL Server服务器角色设置窗口9.3.1 9.3.1 固定服固定服务务务务器角色器角色h2.利用系统存储过程添加固定服务器角色成员利用系统存储过程sp_addsrvrolemember可将一登录名添加到某一固定服务器角色中,使其成为固定服务器角色的成员语法格式:sp_addsrvrolemember [ @loginame = ] 'login', [@rolename =] 'role'参数含义:login指定添加到固定服务器角色role的登录名,login可以是SQL Server登录名或Windows 登录名;对于Windows登录名,如果还没有授予SQL Server访问权限,将自动对其授予访问权限固定服务器角色名role必须为sysadmin、securityadmin、serveradmin、setupadmin、processadmin、diskadmin、dbcreator、bulkadmin之一。
例9.7】 将Windows用户0BD7E57C949A420\liu添加到sysadmin固定服务器角色中EXEC sp_addsrvrolemember '0BD7E57C949A420\liu', 'sysadmin'9.3.1 9.3.1 固定服固定服务务务务器角色器角色h3.利用系统存储过程删除固定服务器角色成员利用sp_dropsrvrolemember系统存储过程可从固定服务器角色中删除SQL Server 登录名或Windows登录名语法格式:sp_dropsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role'参数含义:'login':将要从固定服务器角色删除的登录名'role':服务器角色名,默认值为NULL,必须是有效的固定服务器角色名 说明:(1)不能删除sa登录名2)不能从用户定义的事务内执行sp_dropsrvrolemember3)sysadmin固定服务器角色的成员执行sp_dropsrvrolemember,可删除任意固定服务器角色中的登录名,其他固定服务器角色的成员只可以删除相同固定服务器角色中的其他成员。
例9.8】 从sysadmin固定服务器角色中删除SQL Server登录名davidEXEC sp_dropsrvrolemember 'david', 'sysadmin'9.3.2 9.3.2 固定数据固定数据库库库库角色角色(1)db_owner:数据库所有者,这个数据库角色的成员可执行数据库的所有管理操作用户发出的所有SQL语句均受限于该用户具有的权限例如,CREATE DATABASE仅限于sysadmin和dbcreator固定服务器角色的成员使用sysadmin固定服务器角色的成员、db_owner固定数据库角色的成员以及数据库对象的所有者都可授予、拒绝或废除某个用户或某个角色的权限使用GRANT赋予执行T-SQL语句或对数据进行操作的权限;使用DENY拒绝权限,并防止指定的用户、组或角色从组和角色成员的关系中继承权限;使用REVOKE取消以前授予或拒绝的权限 (2)db_accessadmin:数据库访问权限管理者,具有添加、删除数据库使用者、数据库角色和组的权限3)db_securityadmin:数据库安全管理员,可管理数据库中的权限,如设置数据库表的增加、删除、修改和查询等存取权限。
4)db_ddladmin:数据库DDL管理员,可增加、修改或删除数据库中的对象5)db_backupoperator:数据库备份操作员,具有执行数据库备份的权限6)db_datareader:数据库数据读取者9.3.2 9.3.2 固定数据固定数据库库库库角色角色(7)db_datawriter:数据库数据写入者,具有对表进行增加、删修、修改的权限8)db_denydatareader:数据库拒绝数据读取者,不能读取数据库中任何表的内容9)db_denydatawriter:数据库拒绝数据写入者,不能对任何表进行增加、删修、修改操作10)public:是一个特殊的数据库角色,每个数据库用户都是public角色的成员,因此不能将用户、组或角色指派为public角色的成员,也不能删除public角色的成员通常将一些公共的权限赋给public角色h1.使用“对象资源管理器”添加固定数据库角色成员第1步 以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“数据库”→“PXSCJ”→“安全性”→“用户”→选择一个数据库用户,例如“david”,双击或单击右键选择“属性”菜单项,打开“数据库用户”窗口。
9.3.2 9.3.2 固定数据固定数据库库库库角色角色第2步 在打开的窗口中,在“常规”选项页中的“数据库角色成员身份”栏,用户可以根据需要,在数据库角色前的复选框中打勾,来为数据库用户添加相应的数据库角色,如图9.9所示单击“确定”按钮完成添加图9.9 添加固定数据库角色成员9.3.2 9.3.2 固定数据固定数据库库库库角色角色h2.使用系统存储过程添加固定数据库角色成员利用系统存储过程sp_addrolemember可以将一个数据库用户添加到某一固定数据库角色中,使其成为该固定数据库角色的成员语法格式:sp_addrolemember [ @rolename = ] 'role', [ @membername = ] 'security_account'参数含义:'role':当前数据库中的数据库角色的名称'security_account':添加到该角色的安全账户,可以是数据库用户或当前数据库角色例9.9】 将PXSCJ数据库上的数据库用户david(假设已经创建)添加为固定数据库角色db_owner的成员USE PXSCJGOEXEC sp_addrolemember 'db_owner', 'david'9.3.2 9.3.2 固定数据固定数据库库库库角色角色h3.使用系统存储过程删除固定数据库角色成员利用系统存储过程sp_droprolemember可以将某一成员从固定数据库角色中去除。
语法格式:sp_droprolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'【例9.10】 将数据库用户david从db_owner中去除USE PXSCJGOEXEC sp_droprolemember 'db_owner', 'david'9.3.2 9.3.2 固定数据固定数据库库库库角色角色h4.数据库用户的操作权限在SQL Server中,可授予数据库用户的权限分为三个层次:(1)在当前数据库中创建数据库对象及进行数据库备份的权限,主要有创建表、视图、存储过程、规则、缺省值对象、函数的权限及备份数据库、日志文件的权限2)用户对数据库表的操作权限及执行存储过程的权限主要有如下几种SELECT:对表或视图执行SELECT语句的权限INSERT:对表或视图执行INSERT语句的权限UPDATE:对表或视图执行UPDATE语句的权限DELETE:对表或视图执行DELETE语句的权限REFERENCES:用户对表的主键和唯一索引字段生成外键引用的权限EXECUTE:执行存储过程的权限3)用户对数据库中指定表字段的操作权限主要有:SELECT:对表字段进行查询操作的权限。
UPDATE:对表字段进行更新操作的权限9.3.3 9.3.3 自定自定义义义义数据数据库库库库角色角色h1.通过“对象资源管理器”创建数据库角色第1步 创建数据库角色以系统管理员身份登录SQL Server→在“对象资源管理器”中展开“数据库”→选择要创建角色的数据库(如PXSCJ),展开其中的“安全性”→“角色”,右击鼠标,在弹出的快捷菜单中选择“新建”菜单项→在弹出的子菜单中选择“新建数据库角色”菜单项,如图9.10所示进入“数据库角色-新建”窗口图9.10 新建数据库角色9.3.3 9.3.3 自定自定义义义义数据数据库库库库角色角色第2步 将数据库用户加入数据库角色当数据库用户成为某一数据库角色的成员之后,该数据库用户就获得该数据库角色所拥有的对数据库操作的权限将用户加入自定义数据库角色的方法与9.3.2小节中将用户加入固定数据库角色的方法类似,这里不再重复如图9.11所示的是将用户david加入ROLE1角色图9.11 添加到数据库角色9.3.3 9.3.3 自定自定义义义义数据数据库库库库角色角色h2.通过SQL命令创建数据库角色(1)定义数据库角色。
创建用户自定义数据库角色可以使用CREATE ROLE语句语法格式:CREATE ROLE role_name [ AUTHORIZATION owner_name ]【例9.11】 如下示例在当前数据库中创建名为ROLE2的新角色,并指定dbo为该角色的所有者USE PXSCJGOCREATE ROLE ROLE2AUTHORIZATION dbo(2)给数据库角色添加成员向用户定义数据库角色添加成员也使用存储过程sp_ addrolemember,用法与之前介绍的基本相同例9.12】 使用Windows身份验证模式的登录名(如0BD7E57C949A420\liu)创建PXSCJ数据库的用户(如0BD7E57C949A420\liu),并将该数据库用户添加到ROLE1数据库角色中USE PXSCJGOCREATE USER [0BD7E57C949A420\liu]FROM LOGIN [0BD7E57C949A420\liu]GOEXEC sp_addrolemember 'ROLE1', '0BD7E57C949A420\liu'9.3.3 9.3.3 自定自定义义义义数据数据库库库库角色角色【例9.13】 将SQL Server登录名创建的PXSCJ的数据库用户wang(假设已经创建)添加到数据库角色ROLE1中。
USE PXSCJGOEXEC sp_addrolemember 'ROLE1','wang'【例9.14】 将数据库角色ROLE2(假设已经创建)添加到ROLE1中EXEC sp_addrolemember 'ROLE1','ROLE2'将一个成员从数据库角色中去除也使用系统存储过程sp_droprolemember,之前已经介绍过9.3.3 9.3.3 自定自定义义义义数据数据库库库库角色角色h3.通过SQL命令删除数据库角色要删除数据库角色可以使用DROP ROLE语句语法格式:DROP ROLE role_name其中,role_name为要删除的数据库角色的名称例9.15】 删除数据库角色ROLE2在删除ROLE2之前首先需要将ROLE2中的成员删除,可以使用界面方式,也可以使用命令方式若使用界面方式,只需在ROLE2的属性页中操作即可命令方式在删除固定数据库成员时已经介绍,请参见前面内容确认ROLE2可以删除后,使用以下命令删除ROLE2:DROP ROLE ROLE29.4 9.4 数据数据库权库权库权库权 限的管理限的管理Ø9.4.1 授予权限权限的授予可以使用命令方式或界面方式完成。
1)使用命令方式授予权限利用GRANT语句可以给数据库用户或数据库角色授予数据库级别或对象级别的权限语法格式:GRANT { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ] [ ON securable ] TO principal [ ,...n ] [ WITH GRANT OPTION ] [ AS principal ]【例9.16】 给PXSCJ数据库上的用户david和wang授予创建表的权限以系统管理员身份登录SQL Server,新建一个查询,输入以下语句:USE PXSCJGOGRANT CREATE TABLE TO david, wangGO9.4.1 9.4.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,新建一个查询,输入以下语句:GRANT CREATE TABLE TO ROLE19.4.1 9.4.1 授予授予权权权权限限【例9.19】 以系统管理员身份登录SQL Server,将表XSB的SELECT权限授予ROLE2角色(指定WITH GRANT OPTION子句)用户li是ROLE2的成员(创建过程略),在li用户上将表XSB上的SELECT权限授予用户huang(创建过程略),huang不是ROLE2的成员首先在以Windows系统管理员身份登录,授予角色ROLE2在XSB表上的SELECT权限:USE PXSCJGOGRANT SELECT ON XSB TO ROLE2 WITH GRANT OPTION9.4.1 9.4.1 授予授予权权权权限限在“SQL Server Management Studio”窗口上单击“新建查询”按钮旁边的数据库引擎查询按钮 ,在弹出的连接窗口中以li用户的登录名登录,如图9.12所示单击“连接”按钮连接到SQL Server服务器,出现“查询分析器”窗口图9.12 以li用户身份登录9.4.1 9.4.1 授予授予权权权权限限【例9.20】 在当前数据库PXSCJ中给public角色赋予对表XSB中学号、姓名字段的SELECT权限。
以系统管理员身份登录SQL Server,新建一个查询,输入以下语句:USE PXSCJGOGRANT SELECT (学号,姓名) ON XSBTO publicGO9.4.1 9.4.1 授予授予权权权权限限(2)使用界面方式授予语句权限①授予数据库上的权限以给数据库用户wang(假设该用户已经使用SQL Server登录名“wang”创建)授予PXSCJ数据库的CREATE TABLE语句的权限为例,在SQL Server Management Studio中授予用户权限的步骤如下:以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“数据库”→“PXSCJ”,右击鼠标,选择“属性”菜单项进入PXSCJ数据库的属性窗口,选择“权限”选项页在用户或角色栏中选择需要授予权限的用户或角色(如wang),在窗口下方列出的权限列表中找到相应的权限(如Create table),在复选框中打勾,如图9.13所示单击“确定”按钮即可完成如果需要授予权限的用户在列出的用户列表中不存在,则可以单击“添加”按钮将该用户添加到列表中再选择选择用户后单击“有效权限”按钮可以查看该用户在当前数据库中有哪些权限。
9.4.1 9.4.1 授予授予权权权权限限图9.13 授予用户数据库上的权限9.4.1 9.4.1 授予授予权权权权限限②授予数据库对象上的权限以给数据库用户wang授予KCB表上的SELECT、INSERT的权限为例,步骤如下:以系统管理员身份登录到SQL Server服务器,在“对象资源管理器”中展开“数据库”→“PXSCJ”→“表”→“KCB”,右击鼠标,选择“属性”菜单项进入KCB表的属性窗口,选择“权限”选项页单击“添加”按钮,在弹出的“选择用户或角色”窗口中单击“浏览”按钮,选择需要授权的用户或角色(如wang),选择后单击“确定”按钮回到KCB表的属性窗口在该窗口中选择用户(如huang),在权限列表中选择需要授予的权限(如Select、Insert),如图9.14所示,单击“确定”按钮完成授权9.4.1 9.4.1 授予授予权权权权限限图9.14 授予用户数据库对象上的权限9.4.2 9.4.2 拒拒绝权绝权绝权绝权 限限使用DENY命令可以拒绝给当前数据库内的用户授予的权限,并防止数据库用户通过其组或角色成员资格继承权限语法格式:DENY { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ] [ ON securable ] TO principal [ ,...n ] [ CASCADE] [ AS principal ]需要注意的是:①如果使用DENY语句禁止用户获得某个权限,那么以后将该用户添加到已得到该权限的组或角色时,该用户不能访问这个权限。
②默认情况下,sysadmin、db_securityadmin角色成员和数据库对象所有者具有执行DENY的权限9.4.2 9.4.2 拒拒绝权绝权绝权绝权 限限【例9.21】 对多个用户不允许使用CREATE VIEW和CREATE TABLE语句DENY CREATE VIEW, CREATE TABLE TO li, huangGO【例9.22】 拒绝用户li、huang、[0BD7E57C949A420\liu]对表XSB的一些权限,这样,这些用户就没有对XSB表的操作权限了USE PXSCJGODENY SELECT, INSERT, UPDATE, DELETE ON XSB TO li, huang, [0BD7E57C949A420\liu]GO【例9.23】 对所有ROLE2角色成员拒绝CREATE TABLE权限DENY CREATE TABLE TO ROLE2GO9.4.3 9.4.3 撤撤销权销权销权销权 限限利用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 TABLE FROM wangGO【例9.25】 取消授予多个用户的多个语句权限REVOKE CREATE TABLE, CREATE DEFAULT FROM wang, liGO9.4.3 9.4.3 撤撤销权销权销权销权 限限【例9.26】 取消以前对wang授予或拒绝的在XSB表上的SELECT权限REVOKE 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 ROLE29.5 9.5 数据数据库库库库架构的定架构的定义义义义和使用和使用Ø9.5.1 使用界面方式创建架构以在PXSCJ数据库中创建架构为例,具体步骤如下:第1步 以系统管理员身份登录SQL Server,在“对象资源管理器”中展开“数据库”→“PXSCJ”→“安全性”→选择“架构”,右击鼠标,在弹出的快捷菜单中选择“新建架构”菜单项。
第2步 在打开的“架构-新建”窗口中选择“常规”选项页,在窗口的右边“架构名称”下面的文本框中输入架构名称(如test)单击“搜索”按钮,在打开的“搜索角色和用户”对话框中单击“浏览”按钮如图9.15所示,在打开的“查找对象”对话框中,在用户david前面的复选框打勾,单击“确定”按钮,返回“搜索角色和用户”对话框单击“确定”按钮,返回“架构-新建”窗口单击“确定”按钮,完成架构的创建这样就将用户david设为了架构test的所有者9.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构图9.15 新建架构9.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构第3步 架构创建完后可以新建一个测试表来测试如何访问架构中的对象在PXSCJ数据库中新建一个名为table_1的表,表的结构如图9.16所示图9.16 新建一个测试表9.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构在创建表时,表的默认架构为dbo,要将其架构修改为test在进行表结构设计时,表设计窗口右边有一个表table_1的属性窗口,在创建表时,应在表的属性窗口中将该表的架构设置成test,如图9.17所示。
如果没有找到属性窗口,单击“视图”菜单栏,选择“属性窗口”子菜单就能显示出属性窗口 图9.17 属性窗口 9.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构设置完成后保存该表,保存后的表可以在“对象资源管理器”中找到,此时表名就已经变成test. table_1,如图9.18所示打开表test. table_1,在表中输入一行数据为:“测试架构的使用” 图9.18 新建的表test.table_19.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构第4步 在“对象资源管理器”中展开数据库“PXSCJ”→“安全性”→“架构”,选择新创建的架构test,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,打开“架构属性”窗口,在该架构属性的“权限”选项页中,单击“添加”按钮,选择用户owner(假设已经创建),为用户owner分配权限,如SELECT权限,如图9.19所示单击“确定”按钮,保存上述设置用同样的方法,还可以授予其他用户访问该架构的权限图9.19 分配权限9.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构第5步 重新启动SQL Server Management Studio,使用SQL Server身份验证方式以用户owner登录SQL Server。
在登录成功后,创建一个新的查询,在“查询分析器”窗口中输入查询表test. table_1中数据的T-SQL语句:USE PXSCJGOSELECT * FROM test.table_1执行结果如图9.20所示图9.20 执行结果9.5.1 9.5.1 使用界面方式使用界面方式创创创创建架构建架构※再新建一个SQL查询,在查询编辑器中输入删除表test. table_1的T-SQL语句:DELETE FROM test.table_1执行结果如图9.21所示图9.21 执行结果9.5.2 9.5.2 使用命令方式使用命令方式创创创创建架构建架构可以使用CREATE SCHEMA语句创建数据库架构语法格式:CREATE SCHEMA
※以系统管理员身份登录SQL Server,新建一个查询,输入以下语句:USE PXSCJGOCREATE SCHEMA test_schemaAUTHORIZATION david。
