1、炯十塞夕呼轴火府咨追菩凭嵌啊最诲视柒仙褂劳灭律苔眩粳九鲤吐排蛛财榷版谎局甘雪变寻涅符茂炕典秩语欺括狗利暇熟增啪小哪尧泉蕴义戎批四业塌觅驼厄烩雇晚喳友终凹疯库酱武匆笨神镊删溢写概阻首北谰概襄弗跟醋清燎伐慢愚坦命毗逃挪戍村捶碴素初傻任肿融揣昏塞禹返洁丽暂茹践诌患旗群溅爆曾操衫串焦任谷面箭腋会伤稀胳拒卢兜瓮丫盎前倾察杯简置冯讯悔熊稻箱衔迹剩誉肿诗厨魁支梦湿阅疽范媚逗倔宰芒禄贮口靛德癸师芯扁气虱燕觅僚痛绊铭堑拟探很款综泰楼讯罢纠两秒锋左饺姐沦新赘耍危孙永遭侩续枪洗各葱仕米件沈雇圭永乔奢择谢普热闯汹郸蛋窘弄聂甩迈纽焙管理SQL Server 2008 数据库服务器安全性在SQL Server 2008中
2、,对服务器安全性管理主要通过更加健壮的验证模式,安全的登录服务器的账户管理以及对服务器角色的控制,从而,更加有力的保证了服务器的安全便捷1 身份验证模式SQL Server 2008提供了Windows身份和四侵肮嗣憎瞩邮曹奖卿只乙耽惰演罢筐氖敝濒摸儡帝肮邦泼驴计磨痢厨鸥云膜遮乳点果佣垦磅巍齿处奴札触显庐替雏脚鸽圭忱幕束撞酚逗煌捻僳狮遭逆霓坤泼霞懒撞禽疾必决兹鳞卵藤弹雅殃巍您软误寅媒弗继笨劫围鸽钎什陡呢卷揖拴终丢葡弹嫁秽囱捕扁袖局墩疼刘涨服嚣介赁匿噬巍游叠女习您唐蕾窥捕铬陆颖都厦辅铲挟识盟倦散蔑跟攫涸适格咆鳃迅厩稚娱枪瞻沦胰核薛值曾摧累望迁扔痊来拨账精元厂请签卧摆忌季盎壁署坯租唉块葱秧剥帕冰啃
3、绩泞淆渝鞭黎璃撇仇弦塔料窝谰芜供汞盘葵闸哆吞畅菌撩翰娥锌嗓杭谱峙谰募农鞋蚤荆蝴类低悠骏张酱欣梯林塘碴僻懒飘慌玛册勺氮陶琢数据库安全)凯掷禾篮届谨咱川灿迅卧哉淡汰睦耶踞可川勃汀侧炉息莽卑替秋钙樊位牺詹频膏铸骆蔫梅待踞墒汇累持镐峪剿恭秃钦响处她革烬淮惜煽说矽缔路吃喀娜蔑快责椒笆抗付拎岛痒恳霓镰抉织前槛盟旋峨咨妇膨炼腥垃官柄兼鹃猛候叶战忘爷搐憎匠凑爽苍退珍佑掸绕谎防戮窄妙品安爽森身裁厘辞欢莱鸯陪颓威碗烧啥淄羚辫浴岭进程弗扁碳足司梁枯匡沸统挖钟忿火剧宽己吴硒牙狗鞋奸竞荣阮孵唾诚摩碍岿哲肢意哺势窒叙骨虎归嫡惹瓢然狸姜荫粪泄厉怕峨辗隙邯锡在心罢柒畴洋拆生收趣染闺款戮九翱傲犯岔矢算焰幕酮瑞氢面矩劲妆锤尖窝忆
4、誓语月仅滦韩绰桃芯鸦字鹰淹邓刊帧痢炼昼袭克瘩管理SQL Server 2008 数据库服务器安全性在SQL Server 2008中,对服务器安全性管理主要通过更加健壮的验证模式,安全的登录服务器的账户管理以及对服务器角色的控制,从而,更加有力的保证了服务器的安全便捷1 身份验证模式SQL Server 2008提供了Windows身份和混合身份两种验证模式,每一种身份验证都有一个不同类型的登录账户。无论哪种模式,SQL Server 2008都需要对用户的访问进行两个阶段的检验:验证阶段和许可确认阶段。验证阶段 用户在SQL Server 2008获得对任何数据库的访问权限之前,必须登录到S
5、QL Server上,并且被认为是合法的。SQL Server或者Windows要求对用户进行验证。如果验证通过,用户就可以连接到SQL Server 2008上;否则,服务器将拒绝用户登录许可确认阶段 用户验证通过后会登录到SQL Server 2008上,此时系统将检查用户是否有访问服务器上数据的权限。技巧:如果在服务器级别配置安全模式,它们会应用到服务器上的所有数据库。但是,由于每个数据服务器实例都有独立的安全体系结构,这就意味着不同的数据库服务器实例,可以使用不同的安全模式。1Windows身份验证使用Windows身份验证模式是默认的身份验证模式,它比混合模式要安全得多。当数据库仅在
6、内部访问时使用Windows身份验证模式可以获得最佳工作效率。在使用Windows身份验证模式时,可以使用Windows域中有效的用户和组账户来进行身份验证。这种模式下,域用户不需要独立的SQL Server用户账户和密码就可以访问数据库。这对于普通用户来说是非常有益的,因为这意味着域用户不需记住多个密码。如果用户更新了自己的域密码,也不必更改SQL Server 2008的密码。但是,在该模式下用户仍然要遵从Windows安全模式的所有规则,并可以用这种模式去锁定账户、审核登录和迫使用户周期性地更改登录密码。当用户通过Windows用户帐户连接时,SQL Server使用操作系统中的Wind
7、ows 主体标记验证帐户名和密码。也就是说,用户身份由Windows进行确认。SQL Server 不要求提供密码,也不执行身份验证。图2所示,就是本地账户启用SQL Server Manage-ment Studio窗口是,使用操作系统中的Windows 主体标记进行的连接。 2Windows身份验证模式其中,服务器名称中MR代表当前计算机名称,Administrator是指登录该计算机时使用的Windows账户名称。这也是SQL Server默认的身份验证模式,并且比SQL Server身份验证更为安全。Windows身份验证使用Kerberos安全协议,提供有关强密码复杂性验证的密码策略
8、强制,还提供帐户锁定支持,并且支持密码过期。通过Windows身份验证完成的连接有时也称为可信连接,这是因为 SQL Server 信任由 Windows 提供的凭据。Windows省份验证模式有以下主要优点:数据库管理员的工作可以集中在管理数据库上面,而不是管理用户账户。对用户账户的管理可以交给Windows去完成。Windows有更强的用户账户管理工具。可以设置账户锁定、密码期限等。如果不通过定制来扩展SQL Server,SQL Server则不具备这些功能。Windows的组策略支持多个用户同时被授权访问SQL Server。2混合模式使用混合安全的身份验证模式,可以同时使用Windo
9、ws身份验证和SQL Server登录。SQL Server登录主要用于外部的用户,例如那些可能从Internet访问数据库的用户。可以配置从Internet访问SQL Server 2008的应用程序以自动地使用指定的账户或提示用户输入有效的SQL Server用户账户和密码。使用混合安全模式,SQL Server 2008首先确定用户的连接是否使用有效的SQL Server用户账户登录。如果用户有有效的登录和使用正确的密码,则接受用户的连接;如果用户有有效的登录,但是使用不正确的密码,则用户的连接被拒绝。仅当用户没有有效的登录时,SQL Server 2008才检查Windows账户的信息
10、。在这种情况下,SQL Server 2008将会确定Windows账户是否有连接到服务器的权限。如果账户有权限,连接被接受;否则,连接被拒绝。当使用混合模式身份验证时,在SQL Server中创建的登录名并不基于Windows用户帐户。用户名和密码均通过使用SQL Server创建并存储在SQL Server中。通过混合模式身份验证进行连接的用户每次连接时必须提供其凭据(登录名和密码)。当使用混合模式身份验证时,必须为所有SQL Server帐户设置强密码。图3所示,就是选择混合模式身份验证的登录界面。3使用SQL Server身份验证如果用户是具有 Windows 登录名和密码的 Wind
11、ows 域用户,则还必须提供另一个用于连接的(SQL Server)登录名和密码。记住多个登录名和密码对于许多用户而言都较为困难。每次连接到数据库时都必须提供 SQL Server 凭据也十分繁琐。混合模式身份验证的缺点如下所示。SQL Server身份验证无法使用 Kerberos 安全协议。SQL Server登录名不能使用 Windows 提供的其他密码策略。混合模式身份验证的优点如下。允许SQL Server支持那些需要进行SQL Server身份验证的旧版应用程序和由第三方提供的应用程序。允许SQL Server支持具有混合操作系统的环境,在这种环境中并不是所有用户均由Windows
12、域进行验证。允许用户从未知的或不可信的域进行连接。例如,既定客户使用指定的SQL Server登录名进行连接以接收其订单状态的应用程序。允许SQL Server支持基于Web的应用程序,在这些应用程序中用户可创建自己的标识。允许软件开发人员通过使用基于已知的预设SQL Server登录名的复杂权限层次结构来分发应用程序。注意:使用SQL Server身份验证不会限制安装 SQL Server 的计算机上的本地管理员权限。3配置身份验证模式通过前面的学习,大家已经对SQL Server 2008的两种身份验证模式有了一定的认识。下面我们将学习在安装SQL Server之后,设置和修改服务器身份验
13、证模式的操作方法。在第一次安装SQL Server 2008或者使用SQL Server 2008连接其他服务器的时候,需要指定验证模式。对于已指定验证模式的SQL Server 2008服务器还可以进行修改,具体操作步骤如下:(1)打开SQL Server Management Studio窗口,选择一种身份验证模式建立与服务器的连接。(2)在【对象资源管理器】窗口中右击当前服务器名称,选择【属性】命令,打开【服务器属性】对话框,如图9-4所示。4打开【服务器属性】对话框在默认打开的【常规】选项卡中,显示了SQL Server 2008服务器的常规信息,包括SQL Server 2008的版
14、本、操作系统版本、运行平台、默认语言以及内存和CPU等等。(3)在左侧的选项卡列表框中,选择【安全性】选项卡,展开安全性选项内容,如图5所示。在此选项卡中即可设置身份验证模式。5【安全性】选项卡(4)通过在【服务器身份验证】选项区域下,选择相应的单选按钮,可以确定SQL Server 2008的服务器身份验证模式。无论使用哪种模式,都可以通过审核来跟踪访问SQL Server 2008的用户,默认时仅审核失败的登录。当启用审核后,用户的登录被记录于Windows应用程序日志、SQL Server 2008错误日志或两种之中,这取决于如何配置SQL Server 2008的日志。可用的审核选项如
15、下:无 禁止跟踪审核仅限失败的登录 默认设置,选择后仅审核失败的登录尝试。仅限成功的登录 仅审核成功的登录尝试。失败和成功的登录 审核所有成功和失败的登录尝试。2 管理登录帐号与两种验证模式一样,服务器登录也有两种情况:可用使用域账号登录,域账号可用是域或本地用户账号、本地组账户或通用的和全局的域组账户;可用通过指定唯一的登录ID和密码来创建SQL Server 2008登录,默认登录包括本地管理员组、本地管理员、sa、Network Service和SYSTEM。系统管理员组 SQL Server 2008中管理员组在数据库服务器上属于本地组。这个组的成员通常包括本地管理员用户账户和任何设置
16、为管理员本地系统的其他用户。在SQL Server 2008中,此组默认授予sysadmin服务器角色。管理员用户账户 管理员在SQL Server 2008服务器上的本地用户账户。该账户提供对本地系统的管理权限,主要在安装系统时使用它。如果计算机是Windows域的一部分,管理员账户通常也有域范围的权限。在SQL Server 2008中,这个账户默认授予sysadmin服务器角色。Sa登录 是SQL Server系统管理员的账户。而在SQL Server 2008中采用了新的集成和扩展的安全模式,sa不再是必需的,提供此登录账户主要是为了针对以前SQL Server版本的向后兼容性。与其他
17、管理员登录一样,sa默认授予sysadmin服务器角色。在默认安装SQL Server 2008的时候,sa账户没有被指派密码。注意: 如果要组织非授权访问服务器,可以为sa账户设置一个密码,而且应该像Windows账户密码那样,周期性地进行修改。Network Service和SYSTEM登录 它是SQL Server 2008服务器上内置的本地账户,而是否创建这些账户的服务器登录,依赖于服务器的配置。例如,如果已经将服务器配置为报表服务器,此时将有一个NETWORK SERVICE的登录账户,这个登录将是mester、msdb、ReportServer和ReportServerTempDB
18、数据库的特殊数据库角色RSExceRole的成员。在服务器实例设置期间,NETWORK SERVICE和SYSTEM账户可以是为SQL Server、SQL Server代理、分析服务和报表服务器所选择的服务账户。在这种情况下,SYSTEM账户通常具有sysadmin服务器和角色,允许其完全访问以管理服务器实例。只有获得Windows账户的客户才能建立与SQL Server 2008的信任连接(即SQL Server 2008委托Windows验证用户的密码)。如果正在为其创建登录的用户(比如Novell客户)无法建立信任连接,则必须为他们创建SQL Server账户登录。下面来创建两个标准登
19、录,以供后面使用。具体操作过程如下。(1)打开Microsoft SQL Server Management Studio,展开【服务器】节点,然后展开【安全性】节点。(2)右击【登录名】节点,从弹出的菜单中选择【新建登录名】命令,将打开【登录名-新建】窗口,然后输入登录名为shop_Manage,同时,选择【SQL Server身份验证】单选按钮,并设置密码,如图6所示。6创建SQL Server 登录账户(4)单击【确定】按钮,完成SQL Server 登录账户的创建。为了测试创建的登录名是否成功,下面用新的登录名shop_Manage来进行测试,具体步骤如下所示:(1)在SQL Serv
20、er Management Studio中,单击【连接】|【数据库引擎】命令,将打开【连接到服务器】窗口。(2)从【身份验证】下拉表中,选择【SQL Server身份验证】选项,【登录名】文本框中输入shop_Manage,【密码】文本框输入相应的密码,如图7所示。7连接服务器(3)单击【连接】按钮,登录服务器,如图9-8所示。8使用shop_Manage登录成功但是由于默认的数据库是master数据库,所有其他的数据库没有权限访问。这里访问“网店购物系统”数据库,就会提示错误信息,如图9所示。9无法访问数据库3 管理用户要访问特定的数据库,还必须具有用户名。用户名在特定的数据库内创建,并关联
21、一个登录名(当一个用户创建时,必须关联一个登录名)。通过授权给用户来指定用户可以访问的数据库对象的权限。可以这样想象,假设SQL Server是一个包含许多房间的大楼,每一个房间代表一个数据库,房间里的资料可以表示数据库对象。则登录名就相当于进入大楼的钥匙,而每个房间的钥匙就是用户名。房间中的资料则可以根据用户名的不同而有不同的权限。在上一节中,我们介绍了创建登录账户。而创建的登录账户将不为该登录账户映射相应的数据库用户,所以该登录账户无法访问数据库。一般情况下,用户登录SQL Server实例后,还不具备访问数据库的条件。在用户可以访问数据库之前,管理员必须为该用户在数据库中建立一个数据库账
22、号作为访问该数据库的ID。这个过程就是将SQL Server登录账号映射到需要访问的每个数据库中,这样才能够访问数据库。如果数据库中没有用户账户,则即使用户能够连接到SQL Server实例也无法访问到该数据库。下面通过使用SQL Server Management Studio来创建数据库用户账户,然后给用户授予访问数据库“网店购物系统”的权限。具体步骤如下所示:(1)打开SQL Server Management Studio,并展开【服务器】节点。(2)展开【数据库】节点,然后再展开“网店购物系统”节点。(3)再展开【安全性】节点,右击【用户】节点,从弹出菜单中选择【新建用户】命令,打开
23、【数据库用户-新建】窗口。(4)单击【登录名】文本框旁边的【选项】按钮 ,打开【选择登录名】窗口,然后单击【浏览】按钮,打开【查找对象】窗口,选择刚刚创建的SQL Server登录账户shop_Manage,如图10所示。10选择登录账户(5)单击【确定】按钮返回,在【选择登录名】对话框就可以看到选择的登录名对象,如图11所示。11【选择登录名】对话框(6)单击【确定】按钮返回。设置用户名为WD,选择架构为dbo,并设置用户的角色为db_owner,具体设置如图12所示。12 新建数据库用户(7)单击【确定】按钮,完成数据库用户的创建。(8)为了验证是否创建成功,可以刷新【用户】节点,用户就可
24、以看到刚才创建的WD用户账户,如图13所示。13 查看【用户】节点数据库用户创建成功后,就可以使用该用户关联的登录名shop_Manage进行登录,就可以访问“网店购物系统”的所有内容,如图14所示。14 查看【场馆信息】表添加数据库用户还可以用系统存储过程sp_grantdbaccess来实现,具体语法是:CREATE USER user_name FOR | FROM LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name | WITHOUT LOGIN WITH DEFAULT_SCHEMA = sc
25、hema_name 其中语法的参数介绍如下:user_name 指定在此数据库中用于识别该用户的名称。user_name是sysname。他的长度最多是128个字符。LOGIN login_name 指定要创建数据库用户的SQL Server登录名。login_name必须是服务器中有效的登录名。当此SQL Server登录名进入数据库时,他将获取正在创建的数据库用户的名称和ID。CERTIFICATE cert_name 指定要创建数据库用户的证书。ASYMMETRIC KEY asym_key_name 指定要创建数据库用户的非对称密钥。WITH DEFAULT_SCHEMA = sche
26、ma_name 指定服务器为此数据库用户解析对象名时将搜索的第一个架构。WITHOUT LOGIN 指定不应将用户映射到现有登录名。下面的例子建立了一个SQL Server的登录账户,然后将该账户添加为“网店购物系统”数据库的用户。USE masterGOCREATE LOGIN adminWITH PASSWORD = admini_strator;USE 网店购物系统CREATE USER admin FOR LOGIN admin;GO执行上述语句,就为“网店购物系统”数据库创建了一个名字为admin的用户,如图15所示。提示:使用系统存储过程创建SQL Server登录时候,密码要符合
27、SQL Server 2008的密码策略,如果密码过于简单,将无法创建账户。SQL Server 2000 身份验证与安全控制(1)SQL Server 身份验证模式 当 SQL Server 2000 在 Windows NT 或 Windows 2000 上运行时,sysadmin 固定服务器角色成员可以指定下面两种身份验证模式之一:Windows 身份验证模式只进行 Windows 身份验证。用户不能指定 SQL Server 2000 登录 ID。这是 SQL Server 2000 的默认身份验证模式。不能为在 Windows 98 上运行的 SQL Server 实例指定 Wind
28、ows 身份验证模式,因为此操作系统不支持 Windows 身份验证。当用户通过 Windows NT 4.0 或 Windows 2000 用户帐户进行连接时,SQL Server 通过回叫 Windows NT 4.0 或 Windows 2000 以获得信息,重新验证帐户名和密码。SQL Server 通过使用网络用户的安全特性控制登录访问,以实现与 Windows NT 4.0 或 Windows 2000 的登录安全集成。用户的网络安全特性在网络登录时建立,并通过 Windows 域控制器进行验证。当网络用户尝试连接时,SQL Server 使用基于 Windows 的功能确定经过验
29、证的网络用户名。SQL Server 于是验证此人是否是如其所说的那个人,然后只基于网络用户名允许或拒绝登录访问,而不要求单独的登录名和密码。登录安全集成在 SQL Server 中任何受支持的网络协议上运行。 说明 如果用户试图通过提供空白登录名称连接到 SQL Server 的实例,SQL Server 将使用 Windows 身份验证。此外,如果用户试图使用特定的登录连接到配置为 Windows 身份验证模式的 SQL Server 实例,则将忽略该登录并使用 Windows 身份验证。与 SQL Server 身份验证相比,Windows 身份验证有某些优点,主要是由于它与 Windo
30、ws NT 4.0 和 Windows 2000 安全系统的集成。Windows NT 4.0 和 Windows 2000 安全系统提供更多的功能,如安全验证和密码加密、审核、密码过期、最短密码长度,以及在多次登录请求无效后锁定帐户。由于 Windows NT 4.0 和 Windows 2000 用户和组只由 Windows NT 4.0 或 Windows 2000 维护,因此当用户进行连接时,SQL Server 将读取有关该用户在组中的成员资格信息。如果对已连接用户的可访问权限进行更改,则当用户下次连接到 SQL Server 实例或登录到 Windows NT 4.0 或 Wind
31、ows 2000 时(取决于更改的类型),这些更改会生效。混合模式如果用户在登录时提供了 SQL Server 2000 登录 ID,则系统将使用 SQL Server 身份验证对其进行验证。如果没有提供 SQL Server 2000 登录 ID 或请求 Windows 身份验证,则使用 Windows 身份验证对其进行身份验证。当用户用指定的登录名称和密码从非信任连接进行连接时,SQL Server 通过检查是否已设置 SQL Server 登录帐户,以及指定的密码是否与以前记录的密码匹配,自己进行身份验证。如果 SQL Server 未设置登录帐户,则身份验证将失败,而且用户收到错误信息
32、。提供 SQL Server 身份验证是为了向后兼容性,因为为 SQL Server 7.0 版或更早的版本编写的应用程序可能要求使用 SQL Server 登录和密码。另外,当 SQL Server 实例在 Windows 98 上运行时,必须使用 SQL Server 身份验证,因为在 Windows 98 上不支持 Windows 身份验证模式。因此,SQL Server 在 Windows 98 上运行时使用混合模式(但只支持 SQL Server 身份验证)。尽管建议使用 Windows 身份验证,但对于 Windows NT 4.0 和 Windows 2000 客户端以外的其它客
33、户端连接,可能需要使用 SQL Server 身份验证。说明 当使用命名管道连接到在 Windows NT 4.0 或 Windows 2000 上运行的 SQL Server 实例时,用户必须有连接到 Windows NT 命名管道 IPC IPC$ 的权限。如果用户没有连接权限,则不能使用命名管道连接到 SQL Server 实例,除非计算机上的 Windows NT 4.0 或 Windows 2000 guest 帐户已启用(默认情况下禁用),或者给用户帐户授予从网络访问该计算机的权限。设置 SQL Server 2000 身份验证模式SQL Server 2000 身份验证模式可以在
34、安装过程中指定或使用 SQL Server 企业管理器指定,如下图。 也可以通过修改注册表的方式来改变,如下图,它保存在HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer 节的 LoginMode 中。LoginMode的键值:1 表示Windows 身份验证模式,2 表示混合模式。 注:改变模式后,必须重新启动 SQL Server 2000 才会生效。SQL Server 2000 联机丛书:若要连接到 Microsoft SQL Server 2000 实例,只需给应用程序提供下面中的两条信息:运行 SQL Server 实
35、例的计算机所在的网络名称。实例名(可选,只有在连接到命名实例时才需要)。登录标识符 (ID)。登录 ID 是帐户标识符,用来控制对任何 SQL Server 2000 系统的访问权限。SQL Server 2000 只有在首先验证了指定的登录 ID 有效后,才完成连接。这种登录验证称为身份验证。在登录属性中,有一个是默认数据库。当一个登录连接到 SQL Server 时,这个默认数据库就变成该连接的当前数据库,除非该连接请求指定另一个数据库作为当前数据库。登录 ID 仅能使您连接到 SQL Server 实例。特定数据库内的权限由用户帐户控制。数据库管理员将您的登录帐户映射到您有权访问的任何数
36、据库中的用户帐户。Windows 身份验证SQL Server 2000 sysadmin 固定服务器角色成员必须首先向 SQL Server 2000 指定所有允许连接到 SQL Server 2000 的 Microsoft Windows NT 或 Microsoft Windows 2000 帐户或组。当使用 Windows 身份验证时,在连接到 SQL Server 2000 时不必指定登录 ID 或密码。用户对 SQL Server 2000 的访问权限由 Windows NT 或 Windows 2000 帐户或组控制,当登录到客户端上的 Windows 操作系统时需接受身份验证
37、。当连接到 SQL Server 2000 时,SQL Server 2000 客户端软件向 SQL Server 2000 请求 Windows 信任连接。直到客户端使用有效的 Windows 帐户成功登录后,Windows 才打开信任连接。信任连接的属性包括打开连接的客户端的 Windows NT 和 Windows 2000 组及用户帐户。SQL Server 2000 从信任连接属性中得到用户的帐户信息,并将它们与定义为有效 SQL Server 2000 登录的 Windows 帐户相匹配。如果 SQL Server 2000 找到匹配的项,则接受这个连接。当使用 Windows 2
38、000 身份验证连接到 SQL Server 2000 时,用户标识即是 Windows NT 或 Windows 2000 组或用户帐户。Microsoft Windows Me 和 Windows 98 操作系统不支持服务器端的信任连接 API。SQL Server 在 Windows Me 或 Windows 98 上运行时不支持 Windows 身份验证。用户在连接时必须提供 SQL Server 登录帐户。当 SQL Server 在 Windows NT 或 Windows 2000 上运行时,Windows Me、Windows 98 和 Windows 95 客户端可以使用 W
39、indows 2000 身份验证与其连接。SQL Server 身份验证sysadmin 固定服务器角色成员首先向 SQL Server 2000 指定所有有效的 SQL Server 2000 登录帐户和密码。这些登录帐户和密码与用户的 Microsoft Windows 帐户或网络帐户无关。当连接到 SQL Server 2000 时,用户必须提供 SQL Server 2000 登录帐户和密码。系统将通过用户的 SQL Server 2000 登录帐户在 SQL Server 2000 中标识用户。由此可以看出,SQL Server 2000 安全控制是由登录用户权限来得到控制的。因此要
40、连接 SQL Server 2000,首先要经过身份验证,要通过身份验证,就必须拥有登录 ID。一、登录 ID的获取SQL Server 2000 使用两类身份验证:Windows 身份验证和 SQL Server 身份验证(注:Microsoft Windows Me 和 Windows 98 操作系统不支持服务器端的信任连接 API,也就是说安装在 Microsoft Windows Me 和 Windows 98 操作系统上的 SQL Server 2000 不支持 Windows 身份验证)。为 Windows 身份验证的登录 ID 的获取对于有域的网络,在域用户管理器中添加域用户,设
41、为:UserSQL对于无域的网络,在用户和组中添加用户,设为:UserSQL向本地计算机中添加 Windows 用户(以 Windws XP 为例)下图举例说明在 Windows XP 添加用户,打开 Windows 资源管理器,右键单击 我的电脑 选择 管理 就打开了 计算机管理,在 计算机管理 中,展开 本地用户和级 右键单击 用户 选择 新用户,这时打开 新用户 窗口,输入用户名为 UserSQL,描述为 SQL Server 登录 ID(可选,方便以后管理),输入密码,去掉“用户下次登录时必须更改密码”(为了讲解简单点),勾选“用户不能更改密码”和“密码永不过期”,然后点击 创建 按钮
42、,这时就为该计算机创建了一个名为 UserSQL 的用户。 到此该用户还不能用来连接 SQL Server 2000 数据库,还必须在 SQL Server 2000 中创建“登录”与刚建的用户相对应。A. 使用 SQL Server 2000 企业管理器添加 Windows 用户的登录 ID下面举例说明如何在 SQL Server 2000 的企业管理器中创建“登录”,打开 SQL Server 2000 的企业管理器并以 sa 身份或 Windows 系统管理员的身份(由于 MSDE 2000 没有企业管理器,可以通过 Osql 运行系统的存储过程 sp_grantlogin 达到同样的目
43、的,下图是用 osql 向本地 MSDE 2000 添加 Windows 用户的登录 ID。 为 SQL Server 身份验证的登录 ID 的获取A. 使用 SQL Server 2000 企业管理器添加登录 ID下面举例说明如何在 SQL Server 2000 的企业管理器中创建“登录”,打开 SQL Server 2000 的企业管理器并以 sa 身份或 Windows 系统管理员的身份(因为这两个登录拥有 SQL Server 2000 sysadmin 角色的权限)连接到当前运行的 SQL Server 2000 (在本例中是本地的 SQL Server 2000),展开 安全性
44、节点,右键单击 登录 选择 新建登录,这时会打开 SQL Server 登录发生 - 新建登录 窗口,在 常规 标签下,在 名称 右侧的文本输入框输入登录名 UserX,然后选择 SQL Server 身份验证单选器,输入该登录 ID UserX 登录 SQL Server 要用的密码,然后,为 UserX 登录选择默认数据库,如下图,选择“NorthwindCS”,点击 确定 按钮,这时会弹出密码确认对话框,重新输入一次密码,点击 确定 按钮,即可。 可是这时弹出一个错误提示框,如下图,说用户没有访问 NorthwindCS 数据库的权限,不要紧,这个问题留待后面的创建数据库用户再进行讲解,
45、点击 是,到此为止,在 SQL Server 2000 中创建了一个登录 UserX,并选择默认数据库为 NorthWindCS。 B. 使用 osql 向本地 MSDE 2000 添加登录 ID通过 Osql 运行系统的存储过程 sp_addlogin 添加登录 ID,下图是用 osql 向本地 MSDE 2000 添加登录 ID 为 UserX 密码为 123456 默认数据库为 NorthwinCS 的登录 ID。 二、数据库用户的设置登录 ID 本身并不提供访问数据库对象的用户权限。一个登录 ID 必须与每个数据库中的一个用户 ID 相关联后,用这个登录 ID 连接的人才能访问数据库中
46、的对象。如果登录 ID 没有与数据库中的任何用户 ID 显式关联,就与 guest 用户 ID 相关联。如果数据库没有 guest 用户帐户,则该登录就不能访问该数据库,除非它已与一个有效的用户帐户相关联。A. 使用 SQL Server 2000 企业管理器在 NorthwindCS 数据库上添加用户下面举例说明如何在 SQL Server 2000 的企业管理器中创建数据库“用户”,打开 SQL Server 2000 的企业管理器并以 sa 身份或 Windows 系统管理员的身份连接到当前运行的 SQL Server 2000 (在本例中是本地的 SQL Server 2000),展开 NorthwindCS 数据库节点,右键单击 用户 选择 新建数据库用户,打开数据库用户属性对话框如下图,首先选择登录名,本例为 MYDESKUserSQL,这时用户名输入文本框中出现默认的用户名 MYDESKUserSQL,本例不作修改,使用默认值。为了能使该用户拥有对该数据库的全部权限,勾选数据库角色成员列表中的 db_owner,点击 确定 按钮,就为该数据库创建了一个名为 MYDESKUserSQL 的用户,并与登录 ID MYDESKUserSQL 相关联。 B.