一、实验目的:
了解SQL Server 2000中的两种用户登录模式;
熟悉SQL Server 2000中登录帐户、用户、角色、权限的概念;
掌握SQL Server 2000中创建帐户、数据库用户的方法,会使用角色来分配权限
二、实验准备:
SQL Server的用户权限控制是SQL Server一个最重要的管理概念,也是众多管理任务之一。SQL Server的登录方式有标准SQL Server登录和集成Windows系统登录两种。
SQL Server集成的安全登录模式即将Windows系统的用户和工作组映射为SQL Server的登陆帐户。Windows集成登录模式实际上是让Windows系统代替SQL Server执行对登陆审查的任务。
如果要采用SQL Server管理的安全登录模式实现SQL Server服务器的登录连接,用户必须拥有合法的帐号和正确的密码。由SQL Server系统本身来进行用户的身份验证。
三、实验内容:
1、创建登录帐户
用户可以通过企业管理器或系统提供的存储过程来进行登录帐户的创建。这里使用系统存储过程来创建。
下面的例子创建了一个登陆帐户:
语句:sp_addlogin 帐户名,密码,默认数据库;
这个例子创建了一个名为164, 密码是000000,默认数据库为student的帐户。在建立用户的登录帐号信息时,用户应该选择默认的数据库,以后每次连接上服务器后,系统都会自动转到默认的数据库上。这里也可以不指定数据库,系统默认为master库。
2、修改和删除帐户
建立完成的帐户信息还可以进行修改。用户可以使用系统存储过程sp_defaultdb,sp_defaultlanguage来修改默认数据库和默认语言。例如:
语句:sp_defaultdb 帐户名,目标数据库;
sp_defaultdb 帐户名,目标语言;
自己创建的数据库是已经建好的数据库名,将帐户的默认数据库改为该数据库。
(系统默认是‘Simplified Chinese’,建议使用默认项。)
返回的结果是:
默认数据库已更改为student。
164 的默认语言已改为 English。
使用系统存储过程sp_password可修改SQL Server的帐户密码,如:
语句:sp_password 原密码,新密码,目标帐户;
该例子修改了164的帐户密码。
要删除 SQL Server标准登录帐户可以使用系统存储过程sp_droplogin,例如:
语句:sp_droplogin 帐户名;
在SQL Server中删除帐户信息时,有很多限制。主要有以下几种情况:
系统帐户sa不能被删除;
已经映射到数据库用户上的帐户不能被删除;
正在使用或连接的帐户不能被删除;
拥有数据库的帐户不能被删除
3、添加数据库用户
以上的操作只是建立了登录SQL Server的帐户,用户登录后还不能对数据库进行访问,将登录帐户添加为数据库用户后,使用登录帐户登录的SQL Server的用户就可以实现对数据库的访问。
添加数据库用户可通过存储过程sp_grantdbaccess来实现,参照下面的例子将你的帐户添加为student的用户。
sp_grantdbaccess 数据库用户名;
4、删除数据库用户
可以使用系统存储过程sp_revokedbaccess来删除数据库用户,更确切地说,是断开SQL Server的登录帐户与数据库用户之间的对应关系。
语句:sp_revokedbaccess 目标数据库用户名
返回结果为:
用户已从当前数据库中除去。
5、角色
角色是SQL Server2000引进的用来集中管理数据库或服务器权限的概念。数据库管理员将数据库的权限赋予角色,然后将角色再赋予给数据库用户或登录帐户,从而是数据库用户或登录帐户拥有相应的权限。
SQL Server提供了固定服务器角色和数据库角色,用户可以修改固定数据库角色的权限,也可以自己创建新的数据库角色,在分配权限给新的角色。
(1)固定服务器角色
使用系统存储过程sp_helpsrvrole可以浏览固定服务器角色的内容。
存储过程sp_addsrvrolemember可以将某固定服务器角色分配给某给定的登录帐户。
下面的操作将登录帐户164添加为服务器角色sysadmin的成员,使其具有创建和修改数据库的权利:
语句:sysadmin 帐户名,目标服务器角色名;
存储过程sp_dropsrvrolemember可以收回分配给某给定的登录帐户的指定固定服务器角色。
这个例子收回了分配给登录帐户164的固定服务器角色sysadmin.
语句:sp_dropsrvrolemembe 帐户名,目标服务器角色;
(2)固定数据库角色
使用系统存储过程sp_helpdbfixedrole可以浏览所有的固定数据库角色的相关内容。如:
用存储过程sp_addrolemember可将某个登录帐户增加到某个固定数据库角色中,从而使该帐户拥有指定固定数据库角色所拥有的所有权限。
语句:sp_addrolemember 帐户名,目标数据库角色名;
进行下面的操作给你的帐户授予对student库的只读权限。
同样使用sp_droprolemember可以从某个固定数据库角色中删除指定的登录帐户,从而收回分配的对student库的只读权限。
语句:sp_drprolemember 帐户名,目标数据库角色名;
四、思考题
1. 思考身份验证模式与登录帐号的关系及如何用各种帐号进行登录;
身份验证模式有两种,一种是Windows身份验证,一种是混合验证。
Windows验证模式下,SQL servers数据库是运行在Windows的系统上,电脑自带的系统有作为网络操作系统的,本身就具有管理登录,验证用户和合法性的能力,所以Windows正是利用这一机制,在该模式下,用户只要通过Windows的认证就可以链接到SQL server并进行使用。
混合验证模式下,用户既可以通过Windows的认证链接到SQL server,也可以使用SQL server认证,不过,在SQL server认证模式下,用户在链接SQL server时必须提供用户名和密码。
2.登录帐号、数据库用户及数据库角色之间的关系;
在SQL server中,尝试登陆服务器时,SQL server要验证登陆账号;当尝试连接数据库时,SQL server要验证数据库用户,数据库用户包含在数据库角色中。
3.数据库用户、数据库角色与数据库对象之间的关系,并说出直接对用户授权与间接对用户授权(系统权限与对象权限)的方法;
数据库用户用来指出那一一个人可以访问哪个数据库,是对用户直接授权,而数据库角色是
数据库直接授权给数据库角色,再把数据库角色指派给数据库用户,而不用直接对数据库用
户直接授权,数据库对象是指数据库用户或角色可以访问指定数据库中全部或者部分表,视
图等数据库对象的权限。
直接对用户授权:使用grant语句,指向对象设为目标用户。
间接对用户授权:使用grant语句,指向对象不设为目标用户,而是设置为其他用户或者角色,再通过其他用户或角色把权限给目标用户。
4.固定服务器角色、固定数据库角色、自定义数据库角色与应用程序角色的区别与验证其权限的方法。
所有预定义的数据库角色和管理者自定义的某一角色都是自定义角色,应用程序角色是应用程序间接地存取数据库中数据而使用的角色,应用角色不具有组的角色。