第11章SQLServer的安全管理与维护本章学习目标了解SQLServer2008的身份验证模式掌握管理SQLServer2008登录帐户、角色和权限的方法掌握管理SQLServer2008数据库用户的方法了解SQLServer2008中数据库备份的分类及特点了解备份设备的概念本章学习目标掌握备份设备的创建、查看、删除方法掌握SQLServer2008中数据库备份和还原的方法了解SQLServer2008导入和导出向导可以访问的数据源类型掌握数据导入和导出的方法11.1SQLServer2008的安全机制如果用户要操作数据库中的数据,则必须满足以下三个条件:首登录SQLServer服务器时必须通过身份验证;必须是该数据库的用户或者是某一数据库角色的成员;必须有执行该操作的权限。11.1.1SQLServer2008登录身份验证SQLServer2008提供了两种确认用户的验证模式:“Windows身份验证模式”“SQLServer和Windows身份验证模式”11.1.1SQLServer2008登录身份验证1.Windows身份验证用户通过Windows用户帐户连接时,SQLServer使用Windows操作系统中的信息验证帐户名和密码,并获得对SQLServer的访问权限。这是默认的身份验证模式。11.1.1SQLServer2008登录身份验证2.SQLServer和Windows身份验证模式(又称为混合模式)允许用户使用Windows身份验证或SQLServer身份验证进行连接。使用SQLServer身份验证时,必须提供一个已存在的SQLServer登录帐户和密码。11.1.1SQLServer2008登录身份验证3.设置身份验证模式使用SSMS可以重新设置身份验证模式。(1)打开SSMS,右击SQLServer服务器名称,在弹出的快捷菜单中选择“属性”选项。(2)在打开的“服务器属性”对话框中,在窗口左边选择“安全性”选择页。11.1.2登录账户管理1.查看登录帐户在SQLServer2008的SSMS中,选择指定的服务器,展开服务器下的“安全性”,选择“登录名”,可以查看该服务器所有的登录帐户信息。11.1.2登录账户管理2.创建登录帐户(1)使用SSMS创建登录帐户在SSMS中,展开SQLServer服务器组中相应的服务器。展开“安全性”节点,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”,会打开“登录名-新建”对话框。根据所要创建的登录帐户的类型选择相应的身份验证类型单选按钮。11.1.2登录账户管理2.创建登录帐户(2)使用T-SQL语句创建登录账户CREATELOGINloginName{WITHoption_list|FROMsources}option_list::=PASSWORD={'password‘|hashed_passwordHASHED}[MUST_CHANGE][,{DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language}[,...]]11.1.2登录账户管理2.创建登录帐户(2)使用T-SQL语句创建登录账户sources::=WINDOWS[WITH{DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language}[,...]]|CERTIFICATEcertname|ASYMMETRICKEYasym_key_name11.1.2登录账户管理其中,各参数的说明如下:loginName:指定创建的登录名。PASSWORD='password':指定正在创建的登录名的密码。仅适用于SQLServer登录名。PASSWORD=hashed_password:指定要创建的登录名的密码的哈希值。仅适用于HASHED关键字。HASHED:指定在PASSWORD参数后输入的密码已经过哈希运算。11.1.2登录账户管理MUST_CHANGE:如果包括此选项,则SQLServer将在首次使用新登录名时提示用户输入新密码。DEFAULT_DATABASE=database:指定将指派给登录名的默认数据库。DEFAULT_LANGUAGE=language:指定将指派给登录名的默认语言。WINDOWS:指定将登录名映射到Windows登录名CERTIFICATEcertname:指定将与此登录名关联的证书名称。ASYMMETRICKEYasym_key_name:指定将与此登录名关联的非对称密钥的名称。11.1.2登录账户管理例11-1:创建一个Windows登录账户,使得Windows用户JZH_PC\ZhangSan得以连接到SQLServer。例11-2:创建一个SQLServer登录账户USER1,密码为Abc123#$。11.1.2登录账户管理3.修改登录帐户属性(1)使用SSMS修改登录帐户使用SSMS修改登录帐户属性,只需双击要修改属性的登录帐户,并在登录属性对话框中进行修改即可。注意:对于SQLServer帐户,可以修改其密码。对于Windows帐户,只能使用Windows的“计算机管理器”或“域用户管理器”修改帐户密码。11.1.2登录账户管理3.修改登录帐户属性(2)使用T-SQL语句修改登录帐户ALTERLOGINlogin_name{{ENABLE|DISABLE}|WITHset_option[,...]|{ADDCREDENTIALcredential_name|DROPCREDENTIALcredential_name}}11.1.2登录账户管理set_option::=PASSWORD='password'|hashed_passwordHASHED[OLD_PASSWORD='oldpassword'|password_option[password_option]]|DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language|NAME=login_namepassword_option::=MUST_CHANGE|UNLOCK11.1.2登录账户管理其中,各参数的说明如下:ENABLE|DISABLE:指定启用或禁用此登录账户,默认值为ENABLE。OLD_PASSWORD='oldpassword':指定要指派新密码的登录账户的当前密码。NAME=login_name:指定正在重命名的登录账户的新名称。ADDCREDENTIAL:将可扩展的密钥管理(EKM)提供程序凭据添加到登录名。DROPCREDENTIAL:删除登录名的可扩展密钥管理(EKM)提供程序凭据。11.1.2登录账户管理4.删除登录帐户(1)使用SSMS删除登录帐户使用SSMS删除登录帐户,只需右击要删除的登录帐户,从弹出的快捷菜单中选择“删除”选项,在打开的“删除对象”对话框中单击“确定”按钮即可删除此登录帐户。(2)使用T-SQL语句删除登录账户DROPLOGINlogin_name例11-4:删除登录账户USER1。11.1.3数据库用户管理在数据库中,一个用户或工作组取得合法的登录帐户,只表明该帐户可以登录到SQLServer,但不表明其可以访问数据库或对数据库对象进行某种或者某些操作。管理员必须在数据库中为用户建立一个数据库帐户,并授予此帐户访问数据库及数据库中对象的权限后,才能使该用户访问该数据库。11.1.3数据库用户管理一台服务器除了有一套服务器登录帐户列表外,每个数据库中也都有一套相互独立的数据库用户列表。每个数据库用户都和服务器登录帐户之间存在着一种映射关系。系统管理员可以将一个服务器登录帐户映射到用户需要访问的每一个数据库中的一个用户帐户和角色上。一个登录帐户在不同的数据库中可以映射成不同的用户,从而拥有不同的权限。11.1.3数据库用户管理1.默认数据库用户(1)数据库所有者(dbo)dbo是数据库的所有者,拥有数据库中的所有对象。(2)guest用户guest用户帐户允许没有用户帐户的登录名访问数据库。(3)INFORMATION_SCHEMA和sys用户每个数据库中都含有INFORMATION_SCHEMA和sys用户,它们位于目录视图中,用来获取有关数据库的元数据信息。11.1.3数据库用户管理2.查看数据库用户在SSMS中,展开SQLServer服务器组中相应服务器和数据库,展开“安全性”节点,并选择“用户”选项即可以查看该数据库的所有用户。11.1.3数据库用户管理3.创建数据库用户(1)使用SSMS创建数据库用户在SSMS中,展开SQLServer服务器组中相应服务器和数据库。展开“安全性”节点,右击“用户”,在弹出的快捷菜单中选择“新建用户”选项,会打开“数据库用户-新建”对话框。11.1.3数据库用户管理3.创建数据库用户(2)使用T-SQL语句创建数据库用户CREATEUSERuser_name[{{FOR|FROM}{LOGINlogin_name|CERTIFICATEcert_name|ASYMMETRICKEYasym_key_name}|WITHOUTLOGIN]11.1.3数据库用户管理其中,各参数的说明如下:user_name:指定在此数据库中用于识别该用户的名称。LOGINlogin_name:指定要创建数据库用户的SQLServer登录名。CERTIFICATEcert_name:指定要创建数据库用户的证书。11.1.3数据库用户管理ASYMMETRICKEYasym_key_name:指定要创建数据库用户的非对称密钥。WITHOUTLOGIN:指定不应将用户映射到现有登录名。例11-5:在AWLT数据库中创建数据库用户zhangsan,其对应的登录名为JZH_PC\ZhangSan。11.1.3数据库用户管理4.修改数据库用户(2)使用T-SQL语句修改数据库用户可以使用T-SQL中的ALTERUSER语句修改数据库用户的属性,其语法格式如下:ALTERUSERuserNameWITH{NAME=newUserName|LOGIN=loginName}[,...n]例11-6:将数据库用户zhangsan的名称修改为zs。11.1.3数据库用户管理5.删除数据库用户(1)使用SSMS删除数据库用户在SSMS中删除一个数据库用户可以鼠标右击要删除的用户,从弹出的快捷菜单中选择“删除”选项,在随后弹出的“删除对象”对话框中单击“确定”按钮即可将该用户从数据库中删除。(2)使用T-SQL语句删除数据库用户DROPUSERusername例11-7:删除数据库用户zs。11.1.4架构管理架构是形成单个命名空间的数据库实体的集合,可以包含如表、视图、存储过程等数据库对象。架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权,并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。多个用户可以通过角色成员身份或Windows组成员身份拥有一个架构。11.1.4架构管理在SQLServer2008中,架构是一个重要的内容,完全限定的对象名称中就包含架构。即服务器名.数据库名.架构.对象(server.database.schema.object)。在创建数据库对象时如果没有设置或更改其架构,系统将默认为dbo。11.1.4架构管理1.创建自定义架构使用SSMS创建自定义架构的步骤如下:在SSMS中,展开SQLServer服务器组中相应服务器和数据库。展开“安全性”节点,右击“架构”,在快捷菜单中选择“新建架构”,会打开“架构-新建”对话框。11.1.4架构管理2.修改、删除自定义架构可以在创