第11章 数据库的安全管理.ppt
第11章数据库的安全管理本章内容本章内容11.1SQLServer的安全机制的安全机制11.2登录账号管理登录账号管理11.3数据库用户的管理数据库用户的管理11.4角色管理角色管理11.5权限管理权限管理(2)混合身份验证模式混合身份验证模式11.1.1 11.1.1 身份验证身份验证n在该模式下,在该模式下,Windows身份验证和身份验证和SQLserver验证两种模式都可用。对于可信任连验证两种模式都可用。对于可信任连接用户接用户(由由Windows验证验证),系统直接采用,系统直接采用Windows的身份验证机制,否则的身份验证机制,否则SQLServer将通过账号的存在性和密码的匹配性将通过账号的存在性和密码的匹配性自行进行验证,即采用自行进行验证,即采用SQLServer身份验身份验证模式。证模式。11.1.2身份验证模式的设置身份验证模式的设置11.1.1 11.1.1 身份验证身份验证n在该模式下,在该模式下,Windows身份验证和身份验证和SQLserver验证两种模式都可用。对于可信任连验证两种模式都可用。对于可信任连接用户接用户(由由Windows验证验证),系统直接采用,系统直接采用Windows的身份验证机制,否则的身份验证机制,否则SQLServer将通过账号的存在性和密码的匹配性将通过账号的存在性和密码的匹配性自行进行验证,即采用自行进行验证,即采用SQLServer身份验身份验证模式。证模式。身份验证内容身份验证内容11.1.1 11.1.1 身份验证身份验证n包括确认用户的账号是否有效、能否访问包括确认用户的账号是否有效、能否访问系统、能访问系统的哪些数据库。系统、能访问系统的哪些数据库。11.1.2身份验证模式的设置身份验证模式的设置11.1 SQL Server 11.1 SQL Server 的安全机制的安全机制1.方法一:打开方法一:打开SQL Server管管理平台,在理平台,在“已注册的服务已注册的服务器器”子窗口中设置验证模式。子窗口中设置验证模式。n2方法二方法二n在在SQL Server管理平台的对管理平台的对象资源管理器象资源管理器中,右键单击中,右键单击服务器,在弹服务器,在弹出的快捷菜单出的快捷菜单中选择中选择“属性属性”,打开如图所,打开如图所示的示的“服务器属服务器属性性”窗口。窗口。11.1.2 11.1.2 身份验证模式的设置身份验证模式的设置11.2登录账号管理登录账号管理第第1111章章 数据库的安全管理数据库的安全管理 11.2.1创建登录账户创建登录账户11.2.2修改登录账户修改登录账户11.2.3删除登录账户删除登录账户11.2 11.2 登录账号管理登录账号管理11.2.1创建登录账户创建登录账户n创建登录账户的方法有两种:创建登录账户的方法有两种:一种是从一种是从Windows用户或组中创建登录账户用户或组中创建登录账户一种是创建新的一种是创建新的SQLServer登录账户。登录账户。11.2.1 11.2.1 创建登录账户创建登录账户1.通过通过Windows身份验证创建登录身份验证创建登录(1)创建创建Windows用户用户以管理员身份登录到以管理员身份登录到Windows 2003,选,选择择“开始开始程序程序管理管理工具工具计算机管理计算机管理”选选项项。11.2.1 11.2.1 创建登录账户创建登录账户展开展开“本地用户和组本地用户和组”文件文件夹,选择夹,选择“用户用户”图标,单图标,单击鼠标右键,在快捷菜单击鼠标右键,在快捷菜单中选择中选择“新用户新用户”项,打开项,打开“新用户新用户”对话框,输入用户对话框,输入用户名、密码,单击名、密码,单击“创建创建”按按钮,然后单击钮,然后单击“关闭关闭”按钮按钮完成创建。完成创建。11.2.1 11.2.1 创建登录账户创建登录账户(2)使用企业管理器将使用企业管理器将Windows2003账号加入账号加入到到SQLServer中,创建中,创建SQLServer登录登录启动启动SQL Server管理平台,在对象资源管管理平台,在对象资源管理器中分别展开理器中分别展开“服务器服务器”“安全性安全性”“登登录名录名”。右击右击“登录名登录名”,在弹出的快捷菜单上选择,在弹出的快捷菜单上选择“新建登录名新建登录名”,进行,进行“登录名登录名-新建新建”对话框对话框。11.2.1 11.2.1 创建登录账户创建登录账户在在“登录名登录名-新建新建”对话对话框框选择选择Windows验证模验证模式,登录名通过单击式,登录名通过单击“搜搜索索”按钮自动产生,单击按钮自动产生,单击“搜索搜索”按钮后出现按钮后出现“选择用选择用户或组户或组”对话框,在对象对话框,在对象名称框中直接输入名称或名称框中直接输入名称或单击单击“高级高级”按钮后查找用按钮后查找用户或组名称来完成输入。户或组名称来完成输入。11.2.1 11.2.1 创建登录账户创建登录账户单击单击“确定确定”按钮,按钮,一个一个Windows组或组或用户即可增加到用户即可增加到SQL Server登录帐登录帐户中去。户中去。11.2.1 11.2.1 创建登录账户创建登录账户对于已经创建的对于已经创建的Windows用户或组,可以使用户或组,可以使用系统存储过程用系统存储过程sp_grantlogin授予其登录授予其登录SQLServer的权限。的权限。n其语法格式如下:其语法格式如下:sp_grantloginloginame=login其中,其中,loginame=login为要添加的为要添加的Windows用户或组的名称,名称格式为用户或组的名称,名称格式为“域名域名计算机名计算机名用户名用户名”。11.2.1 11.2.1 创建登录账户创建登录账户例例11-1使用系统存储过程使用系统存储过程sp_grantlogin将将Windows用户用户huang加入加入SQLServer中。中。EXEC sp_grantlogin CSULIB-TD1huang 或或 EXEC sp_grantlogin CSULIB-TD1huang 该操作授予了该操作授予了Windows用户用户CSULIB-TD1huang连接到连接到SQL Server的权限。的权限。11.2.1 11.2.1 创建登录账户创建登录账户EXECsp_grantloginBUILTINUsers该操作由于授予的是本地组中的用户,所该操作由于授予的是本地组中的用户,所以使用以使用BUILTIN关键字代替域名和计算机关键字代替域名和计算机名。名。例例11-2授予本地组授予本地组Users中的所有用户连接中的所有用户连接SQLServer的权限。的权限。11.2.1 11.2.1 创建登录账户创建登录账户n如果使用混合验证模式或不通过如果使用混合验证模式或不通过Windows用用户或用户组连接户或用户组连接SQLServer,则需要在,则需要在SQLServer下创建用户登录权限,使用户下创建用户登录权限,使用户得以连接使用得以连接使用SQLServer身份验证的身份验证的SQLServer实例。实例。2.创建创建SQLServer登录登录11.2.1 11.2.1 创建登录账户创建登录账户 在在SQL Server管理平台中创建管理平台中创建SQL Server登录帐户的具体步骤类似于登录帐户的具体步骤类似于“将将Windows 2003帐帐号映射到号映射到SQL Server中中”的操作方法。的操作方法。只是要选择只是要选择SQL Server验证模式,并输入登验证模式,并输入登录帐户名称、密码及确认密码。其他选项卡的设录帐户名称、密码及确认密码。其他选项卡的设置操作类似,最后单击置操作类似,最后单击“确定确定”按钮,即增加了一按钮,即增加了一个新的登录帐户。个新的登录帐户。(1)使用SQL Server管理平台创建登录帐户 11.2.1 11.2.1 创建登录账户创建登录账户(2)使用系统存储过程使用系统存储过程sp_addlongin创建登录创建登录sp_addlogin语法格式如下:语法格式如下:sp_addloginloginame=login,passwd=password,defdb=database,deflanguage=language,sid=sid,encryptopt=encryption_option11.2.1 11.2.1 创建登录账户创建登录账户EXECsp_addloginZG002,002,Sales例例11-3使用系统存储过程使用系统存储过程sp_addlongin创建登录,创建登录,新登录名为新登录名为“ZG002”,密码为,密码为“002”默认数据库为默认数据库为“Sales”。11.2.1 11.2.1 创建登录账户创建登录账户EXECsp_addloginZG002,002,Sales例例11-3使用系统存储过程使用系统存储过程sp_addlongin创建登录,创建登录,新登录名为新登录名为“ZG002”,密码为,密码为“002”默认数据库为默认数据库为“Sales”。11.2.1 11.2.1 创建登录账户创建登录账户EXECsp_addloginZG003该操作为用户该操作为用户ZG003创建一个创建一个SQLServer登录名,没有指定密码和默认数据库,使登录名,没有指定密码和默认数据库,使用默认密码用默认密码NULL和默认数据库和默认数据库master。例例11-4创建没有密码和默认数据库的登录,创建没有密码和默认数据库的登录,登录名为登录名为“ZG003”。11.2.1 11.2.1 创建登录账户创建登录账户n创建了登录账户后,如果需要确定用户是创建了登录账户后,如果需要确定用户是否有连接否有连接SQLServer实例的权限,以及可实例的权限,以及可以访问哪些数据库的信息时,可以使用系以访问哪些数据库的信息时,可以使用系统存储过程统存储过程sp_helplogins查看。查看。nsp_helplogins的语法格式如下:的语法格式如下:sp_helploginsLoginNamePattern=login3.查看用户查看用户11.2.1 11.2.1 创建登录账户创建登录账户例例11-5查看账户信息。查看账户信息。EXECsp_helploginsZG002该操作查询有关登录该操作查询有关登录ZG002的信息的信息11.2 11.2 登录账号管理登录账号管理 sp_password的语法格式为:的语法格式为:sp_passwordold=old_password,new=new_password,loginame=loginsp_defaultdb的语法格式为:的语法格式为:sp_defaultdblogname=login,defdb=databasessp_defaultlanguage的语法格式为:的语法格式为:sp_defaultlanguageloginame=login,language=language11.2.2修改登录账户修改登录账户11.2 11.2 登录账号管理登录账号管理 【例【例11-6】给例给例11-4创建的登录创建的登录ZG003添加密码,修改默添加密码,修改默认数据库设置为认数据库设置为Sales。EXEC sp_password NULL,123,ZG003 EXEC sp_defaultdb master,Sales 该操作为登录该操作为登录ZG003添加密码添加密码123,默认连接数据库为,默认连接数据库为Sales。修改登录账户修改登录账户11.2 11.2 登录账号管理登录账号管理 11.2.3删除登录账户删除登录账户 当某一登录帐户不再使用时,应该将其删除,以保证数据库的安全性和保密性。删除登录帐户可以通过管理平台和Transact-SQL语句来进行。1使用使用SQL Server管理平台删除登录管理平台删除登录 其操作步骤如下:(1)启动SQL Server管理平台,在对象资源管理器中分别展开“服务器”“安全性”“登录名”。(2)在“登录名”详细列表中鼠标右键单击要删除的用户,在弹出的快捷菜单中选择“删除”命令,确定删除。11.2 11.2 登录账号管理登录账号管理 n删除登录账号有两种形式:删除Windows用户或组登录和删除SQL Server登录。(1)删除删除Windows用户或组登录用户或组登录sp_revokelogin的语法格式为:sp_revokelogin liginame=login其中,liginame=login为Windows用户或组的名称。2.使用使用Transact-SQL语句删除登录账号语句删除登录账号11.2 11.2 登录账号管理登录账号管理 EXEC sp_revokelogin CSULIB-TD1huangEXEC sp_revokelogin CSULIB-TD1huang或或EXEC sp_revokelogin CSULIB-TD1huangEXEC sp_revokelogin CSULIB-TD1huang例例11-7 11-7 使用系统存储过程使用系统存储过程sp_revokeloginsp_revokelogin删除例删除例11-111-1创建的创建的WindowsWindows用户用户CSULIB-TD1huang CSULIB-TD1huang 的登录的登录账号账号11.2 11.2 登录账号管理登录账号管理 n使用使用sp_droplogin可以删除可以删除SQLServer登录。其语登录。其语法格式如下:法格式如下:sp_droploginloginame=loginn例例11-8使用系统存储过程使用系统存储过程sp_droplogin删除删除SQLServer登录账号登录账号ZG001。EXECsp_droploginZG001(2)删除删除SQLServer登录登录11.3数据库用户的管理数据库用户的管理第第1111章章 数据库的安全管理数据库的安全管理 1使用使用SQL Server管理平台创建数据库用管理平台创建数据库用户户 n其操作步骤如下:其操作步骤如下:(1)打开SQL Server管理平台,在其“对象资源管理器”面板中依次展开“服务器”“数据库”“安全性”节点。右击选择其下的“用户”对象,在打开的菜单中选择“新建用户”命令,打开的“数据库用户-新建”窗口。11.3 11.3 数据库用户的管理数据库用户的管理n(2)在打开的“数据库用户-新建”窗口中,单击“登录名”右边的“”命令可搜索登录用户或直接在文本框中输入用户的登录名,在用户名栏中输入用户名称,用户名可以与登录名不一样。n(3)在“此用户拥有的架构”和“数据库角色成员身份”区域选择此用户拥有的架构和加入的角色,选中角色名前的复选框即可。n(4)单击“新建用户”窗口的“确定”按钮,数据库用户建立完成。2.使用系统存储过程创建数据库用户使用系统存储过程创建数据库用户nSQLServer使用系统存储过程使用系统存储过程sp_grantdbaccess为数据库添加用户,其语为数据库添加用户,其语法格式如下:法格式如下:sp_grantdbaccessloginame=login,name_in_db=name_in_dbOUTPUT11.3 11.3 数据库用户的管理数据库用户的管理EXECsp_grantdbaccessZG002例例11-9使用系统存储过程在当前数据库中增使用系统存储过程在当前数据库中增加一个用户。加一个用户。11.3 11.3 数据库用户的管理数据库用户的管理(1)使用)使用SQL Server管理平台删除数据库用户管理平台删除数据库用户 打开打开SQL Server管理平台,在其管理平台,在其“对象资源管理器对象资源管理器”面面板中依次展开板中依次展开“服务器服务器”“数据库数据库”“安全性安全性”“用户用户”节点。右击选择要删除的数据库用户,在弹出菜单中节点。右击选择要删除的数据库用户,在弹出菜单中选择选择“删除删除”项,则从当前数据库中删除该数据库用户。项,则从当前数据库中删除该数据库用户。(2)使用系统存储过程删除数据库用户)使用系统存储过程删除数据库用户 sp_revokedbaccess的语法格式为:的语法格式为:sp_revokedbaccessname_in_db=name3.删除数据库中的用户或组删除数据库中的用户或组11.3 11.3 数据库用户的管理数据库用户的管理EXECsp_revokedbaccessZG002例例11-10使用系统存储过程在当前数据库中删使用系统存储过程在当前数据库中删除指定的用户。除指定的用户。11.3 11.3 数据库用户的管理数据库用户的管理11.4角色管理角色管理第第1111章章 数据库的安全管理数据库的安全管理 11.4.1SQLServer角色的类型角色的类型11.4.2固定服务器角色管理固定服务器角色管理11.4.3数据库角色管理数据库角色管理11.4.4用户定义数据库角色用户定义数据库角色11.4 11.4 角色管理角色管理11.4.1SQLServer角色的类型角色的类型SQLServer中有两种角色类型:固定角色和用户中有两种角色类型:固定角色和用户定义数据库角色。定义数据库角色。1.固定角色固定角色n固定角色分为固定角色分为固定服务器角色:独立于各个数据库,具有固定的权固定服务器角色:独立于各个数据库,具有固定的权限。限。固定数据库角色:是指角色所具有的管理、访问数据固定数据库角色:是指角色所具有的管理、访问数据库权限已被库权限已被SQLServer定义,并且定义,并且SQLServer管理者管理者不能对其所具有的权限进行任何修改。不能对其所具有的权限进行任何修改。11.4.1 SQL Server11.4.1 SQL Server角色的类型角色的类型角色名称权 限Sysadmin系统管理员,可以在SQL Server服务器中执行任何操作Serveradmin服务器管理员,具有对服务器设置和关闭的权限。Setupadmin设置管理员,添加和删除链接服务器,并执行某些系统存储过程。Securityadmin安全管理员,管理服务器登录标识、更改密码、CREATE DATABASE权限,还可以读取错误日志。processadmin 进程管理员,管理在SQL Server服务器中运行的进程。Dbcreator数据库创建者,可创建、更改和删除数据库。Diskadmin管理系统磁盘文件bulkadmin可执行BULK INSERT语句,但必须有INSERT权限。表11-1 固定服务器角色11.4.1 SQL Server11.4.1 SQL Server角色的类型角色的类型表11-2 固定数据库角色角色名称权 限db_owner数据库的所有者,可以执行任何数据库管理工作,可以对数据库内的任何对象进行任何操作,如删除、创建对象,将对象权限指定给其他用户。该角色包含以下各角色的所有权限。db_accessadmin数据库访问权限管理者,可添加或删除用户、组或登录标识。db_securityadmin管理角色和数据库角色成员、对象所有权、语句执行权限、数据库访问权限。db_ddladmin数据库DDL管理员,在数据库中创建、删除或修改数据库对象。db_backupoperator执行数据库备份权限。db_datareader能且仅能对数据库中任何表执行SELECT操作,从而读取所有表的信息。db_datawriter能对数据库中任何表执行INSERT、UPDATE、DELETE操作,但不能进行SELECT操作。db_denydatawriter不能对任何表进行增、删、修改操作。db_denydatareader不能读取数据库中任何表的内容。public每个数据库用户都是public角色成员。因此,不能将用户、组或角色指派为public角色的成员,也不能删除public角色的成员。11.4.1 SQL Server11.4.1 SQL Server角色的类型角色的类型2.用户定义数据库角色用户定义数据库角色n当某些数据库用户需要被设置为相同的权限,但是这些权当某些数据库用户需要被设置为相同的权限,但是这些权限不同于固定数据库角色所具有的权限时,就可以定义新限不同于固定数据库角色所具有的权限时,就可以定义新的数据库角色来满足这一要求,从而使这些用户能够在数的数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某一特定功能。据库中实现某一特定功能。n用户定义数据库角色的优点是:用户定义数据库角色的优点是:SQLServer数据库角色可数据库角色可以包含以包含Windows用户组或用户;同一数据库的用户可以具用户组或用户;同一数据库的用户可以具有多个不同的用户定义角色,这种角色的组合是自由的,有多个不同的用户定义角色,这种角色的组合是自由的,而不仅仅是而不仅仅是public与其他一种角色的结合;角色可以进行与其他一种角色的结合;角色可以进行嵌套,从而在数据库中实现不同级别的安全性。嵌套,从而在数据库中实现不同级别的安全性。11.4.2固定服务器角色管理固定服务器角色管理11.4 11.4 角色管理角色管理n固定服务器角色不能进行添加、删除或修固定服务器角色不能进行添加、删除或修改等操作,只能将用户登录添加为固定服改等操作,只能将用户登录添加为固定服务器角色的成员。务器角色的成员。1.添加固定服务器角色成员添加固定服务器角色成员11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理(1)打开)打开SQL Server管理平台。管理平台。(2)在要添加或删除成员的某固定服务器角色上单击鼠)在要添加或删除成员的某固定服务器角色上单击鼠标右键,选择快捷菜单的标右键,选择快捷菜单的“属性属性”菜单项。菜单项。(3)在)在“服务器角色属性服务器角色属性”窗口中能方便的单击窗口中能方便的单击“添加添加”和和“删除删除”按钮实现对成员的添加和删除。按钮实现对成员的添加和删除。例例11-11使用使用SQL Server管理平台将登录管理平台将登录ZG001添添加为固定服务器角色加为固定服务器角色Database Creators成员。成员。11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理固定服务器角色成员的添加也可以从固定服务器角色成员的添加也可以从“安全性安全性”的的“登录登录”项实现项实现 11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理sp_addsrvrolemember用于添加固定服务器角用于添加固定服务器角色成员色成员n语法格式为:语法格式为:sp_addsrvrolememberloginame=login,rolename=role11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理EXECsp_addsrvrolememberZG002,sysadmin例例11-12使用系统存储过程将登录使用系统存储过程将登录ZG002添加添加为固定服务器角色为固定服务器角色sysadmin的成员。的成员。11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理n删除固定服务器角色成员的语句是删除固定服务器角色成员的语句是sp_dropsrvrolemember,其语法格式为:,其语法格式为:sp_dropsrvrolememberloginame=login,rolename=role2.删除固定服务器角色成员删除固定服务器角色成员11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理EXECsp_dropsrvrolememberZG002,sysadmin例例11-13使用系统存储过程从固定服务器角色使用系统存储过程从固定服务器角色sysadmin中删除登录中删除登录ZG002。11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理n使用使用sp_helpsrvrole、sp_helpsrvrolemember可了可了解有关固定服务器角色及其成员的信息。解有关固定服务器角色及其成员的信息。n查看固定服务器角色查看固定服务器角色sp_helpsrvrole的语法格式为:的语法格式为:sp_helpsrvrolesrvrolename=rolesrvrolename=role为固定服务器角色名称为固定服务器角色名称3.查看固定服务器角色信息查看固定服务器角色信息11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理语法格式为:语法格式为:sp_helpsrvrolemembersrvrolename=rolesp_helpsrvrolemember查看固定服务器角色查看固定服务器角色成员成员11.4.2 11.4.2 固定服务器角色管理固定服务器角色管理EXECsp_helpsrvrolesysadminGOEXECsp_helpsrvrolemembersysadmin例例11-14查看固定服务器角色查看固定服务器角色sysadmin及其成及其成员的信息。员的信息。1.添加数据库角色成员添加数据库角色成员使用系统存储过程使用系统存储过程sp_addrolemember向数向数据库角色中添加成员,其语法格式为:据库角色中添加成员,其语法格式为:sp_addrolememberrolename=role,membername=security_account11.4.3数据库角色管理数据库角色管理11.4 11.4 角色管理角色管理USESalesGOEXECsp_grantdbaccesscsulib-td1xh001,xh001GOEXECsp_addrolememberdb_ddladmin,xh00111.4.3 11.4.3 数据库角色管理数据库角色管理例例11-15向数据库向数据库Sales添加添加Windows用户用户“csulib-td1xh001”。11.4.3 11.4.3 数据库角色管理数据库角色管理EXECsp_addrolememberdb_owner,ZG002例例11-16向数据库添加例向数据库添加例11-3创建的创建的SQLServer用户用户ZG002为为db_owner角色成员。角色成员。11.4.3 11.4.3 数据库角色管理数据库角色管理n使用使用sp_droprolemember删除当前数据库角删除当前数据库角色中的成员,其语法格式为:色中的成员,其语法格式为:sp_droprolememberrolename=role,membername=security_account2.删除数据库角色成员删除数据库角色成员11.4.3 11.4.3 数据库角色管理数据库角色管理EXECsp_droprolememberdb_owner,ZG002例例11-17删除数据库角色中的用户。删除数据库角色中的用户。11.4.3 11.4.3 数据库角色管理数据库角色管理n查看数据库角色及其成员的信息可以使用系统存查看数据库角色及其成员的信息可以使用系统存储过程储过程sp_helpdbfixedrole、sp_helprole和和sp_helpusersp_helpdbfixedrole的语法格式为:的语法格式为:sp_helpdbfixedrolerolename=rolesp_helprole的语法格式为:的语法格式为:sp_helprolerolename=rolesp_helpuser的语法格式为:的语法格式为:sp_helpusername_in_db=security_account3.查看数据库角色及其成员信息查看数据库角色及其成员信息11.4.3 11.4.3 数据库角色管理数据库角色管理例例11-18查看当前数据库中所有用户及查看当前数据库中所有用户及db_owner数据库角色的信息。数据库角色的信息。EXECsp_helpuserEXECsp_helpdbfixedroledb_owner11.4.4用户定义数据库角色用户定义数据库角色1.创建和删除用户定义数据库角色创建和删除用户定义数据库角色创建和删除用户定义数据库角色可以使用创建和删除用户定义数据库角色可以使用SQLServer管理平台和系统存储过程实现。管理平台和系统存储过程实现。11.4 11.4 角色管理角色管理11.4.4 11.4.4 用户定义数据库角色用户定义数据库角色使用使用sp_addrole和和sp_droprole可以创可以创建和删除用户定义数据库角色建和删除用户定义数据库角色其语法格式分别为:其语法格式分别为:nsp_addrolerolename=role,ownername=ownernsp_droprolerolename=role11.4.4 11.4.4 用户定义数据库角色用户定义数据库角色UseSalesGOEXECsp_addrolerole01例例11-19使用系统存储过程创建名为使用系统存储过程创建名为“role01”的用户定义数据库角色到的用户定义数据库角色到Sales数据库中。数据库中。11.4.4 11.4.4 用户定义数据库角色用户定义数据库角色USESalesGOEXECSP_droprolerole01例例11-20使用系统存储过程删除数据库使用系统存储过程删除数据库Sales中名为中名为“role01”的用户定义数据库角色。的用户定义数据库角色。11.4.4 11.4.4 用户定义数据库角色用户定义数据库角色n添加和删除用户定义数据库角色成员可以添加和删除用户定义数据库角色成员可以使用使用SQLServer管理平台和系统存储过程管理平台和系统存储过程来完成。来完成。2.添加和删除用户定义数据库角色成员添加和删除用户定义数据库角色成员11.4.4 11.4.4 用户定义数据库角色用户定义数据库角色(1)在)在SQL Server管理平台中添管理平台中添加或删除数据库角色成员加或删除数据库角色成员 n方法一:在上面提到过的某数据库角色的方法一:在上面提到过的某数据库角色的“数据库角色属数据库角色属性性”对话框中,在对话框中,在“常规常规”选项卡上,右下角成员操作区,选项卡上,右下角成员操作区,单击单击“添加添加”或或“删除删除”按钮实现操作。按钮实现操作。n方法二:通过方法二:通过“对象资源管理器对象资源管理器”“数据库服务器数据库服务器”“数数据库据库”“某具体数据库某具体数据库”“安全性安全性”“用户用户”“某具体某具体用户用户”上单击鼠标右键,在弹出的快捷菜单选择上单击鼠标右键,在弹出的快捷菜单选择“属性属性”,出现出现“数据库用户数据库用户”对话框,在右下角成员操作区,通过对话框,在右下角成员操作区,通过多选按钮直接实现为该用户从某个或某些数据库角色中多选按钮直接实现为该用户从某个或某些数据库角色中添加或删除。添加或删除。11.4.4 11.4.4 用户定义数据库角色用户定义数据库角色(2)使用)使用Transact-SQL添加或删添加或删除数据库角色成员除数据库角色成员 例例11-21使用系统存储过程将使用系统存储过程将ZG002添加为添加为Sales数据库的数据库的role01角色的成员。角色的成员。USESalesGOEXECsp_addrolememberrole01,ZG00211.4.4 11.4.4 用户定义数据库角色用户定义数据库角色USESalesGOEXECsp_grantdbaccessZG003,ZG003EXECsp_addrolememberrole01,ZG003例例11-22将将SQLServer登录账号登录账号“ZG003”添加添加到到Sales数据库中,其用户名为数据库中,其用户名为“ZG003”,然,然后再将后再将ZG003添加为该数据库的添加为该数据库的role01角色的角色的成员。成员。11.5权限管理权限管理第第1111章章 数据库的安全管理数据库的安全管理 11.5.1权限的种类权限的种类11.5.2授予权限授予权限11.5.3禁止与撤消权限禁止与撤消权限11.5.4查看权限查看权限11.5.1权限的种类权限的种类11.5 11.5 权限管理权限管理n权限是指用户对数据库中对象的使用及操作的权权限是指用户对数据库中对象的使用及操作的权利,当用户连接到利,当用户连接到SQLServer实例后,该用户要实例后,该用户要进行的任何涉及修改数据库或访问数据的活动都进行的任何涉及修改数据库或访问数据的活动都必须具有相应的权限,也就是用户可以执行的操必须具有相应的权限,也就是用户可以执行的操作均由其被授予的权限决定。作均由其被授予的权限决定。nSQLServer中的权限包括中的权限包括3种类型:对象权限、语种类型:对象权限、语言权限和隐含权限。言权限和隐含权限。1.对象权限对象权限 11.5.1 11.5.1 权限的种类权限的种类n对象权限用于用户对数据库对象执行操作对象权限用于用户对数据库对象执行操作的权力,即处理数据或执行存储过程的权力,即处理数据或执行存储过程(INSERT、UPDATE、DELETE、EXECUTE等等)所需要的权限,这些数据库所需要的权限,这些数据库对象包括表、视图、存储过程。对象包括表、视图、存储过程。表表11-3对象及作用的操作对象及作用的操作 11.5.1 11.5.1 权限的种类权限的种类对 象操 作表SELECT、INSERT、UPDATE、DELETE、REFERANCES视图SELECT、INSERT、UPDATE、DELETE存储过程EXECUTE列SELECT、UPDATE2.语句权限语句权限n语句权限主要指用户是否具有权限来执行语句权限主要指用户是否具有权限来执行某一语句,这些语句通常是一些具有管理某一语句,这些语句通常是一些具有管理性的操作,如创建数据库、表、存储过程性的操作,如创建数据库、表、存储过程等。这种语句虽然也包含有操作等。这种语句虽然也包含有操作(如如CREATE)的对象,但这些对象在执行该语的对象,但这些对象在执行该语句之前并不存在于数据库中,所以将其归句之前并不存在于数据库中,所以将其归为语句权限范畴。为语句权限范畴。11.5.1 11.5.1 权限的种类权限的种类表11-4 语句权限及其作用 11.5.1 11.5.1 权限的种类权限的种类语 句作 用CREATE DATABASE创建数据库CREATE TABLE在数据库中创建表CREATE VIEW在数据库中创建视图CREATE DEFAULT在数据库中创建默认对象CREATE PROCEDURE在数据库中创建存储过程CREATE RULE在数据库中创建规则CREATE FUNCTION在数据库中创建函数BACKUP DATABASE备份数据库BACKUP LOG备份日志3.隐含权限隐含权限n隐含权限是指系统自行预定义而不需要授权就有隐含权限是指系统自行预定义而不需要授权就有的权限,包括固定服务器角色、固定数据库角色的权限,包括固定服务器角色、固定数据库角色和数据库对象所有者所拥有的权限。和数据库对象所有者所拥有的权限。n固定角色拥有确定的权限,例如固定服务器角色固定角色拥有确定的权限,例如固定服务器角色sysadmin拥有完成任何操作的全部权限,其成员拥有完成任何操作的全部权限,其成员自动继承这个固定角色的全部权限。数据库对象自动继承这个固定角色的全部权限。数据库对象所有者可以对所拥有的对象执行一切活动,如查所有者可以对所拥有的对象执行一切活动,如查看、添加或删除数据等操作,也可以控制其他用看、添加或删除数据等操作,也可以控制其他用户使用其所拥有的对象的权限。户使用其所拥有的对象的权限。11.5.1 11.5.1 权限的种类权限的种类11.5.2授予权限授予权限1使用使用SQL Server管理平台管理平台授予用户或角色语句权限授予用户或角色语句权限 操作步骤如下:操作步骤如下:(1)打开)打开SQL Server管理平管理平台,在对象资源管理器中展台,在对象资源管理器中展开开“