数据库用户和数据库角色

 

                                      

14.3.1 数据库用户简介
    数据库用户用来指出哪一个人可以访问哪一个数据库。在一个数据库中,用户ID 惟一标识一个用户,用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的,用户账号总是基于数据库的,即两个不同数据库中可以有两个相同的用户账号。
    在数据库中,用户账号与登录账号是两个不同的概念。一个合法的登录账号只表明该账号通过了NT 认证或SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,所以一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库。例如,登录账号sa 自动与每一个数据库用户dbo 相关联。
    通常而言,数据库用户账号总是与某一登录账号相关联,但有一个例外,那就是guest用户。

    在安装系统时,guest 用户被加入到master、 pubs、 tempdb 和Northwind 数据中,那么SQL Server 为什么要进行这样的处理呢?让我们看看在用户通过NT 认证或SQLServer 认证而成功登录到SQL Server 之后,SQL Server 又做了哪些事情:

注意:通常我们可以像删除或添加其它有户那样删除或添加guest用户,但不能从master或tempdb数据库中删除该用户,并且在一个新建的数据库中不存在guest用户,除非将其添加进行。

14.3.2 管理数据库用户
1 利用SQL Server Enterprise Manager管理数据库用户
创建新数据库用户利用SQL Server Enterprise Manager 创建一个新数据库用户要执行以下步骤:
(1) 启动SQL Server Enterprise Manager, 单击登录服务器旁边的‘+’ 标志。
(2) 打开Database 文件夹,打开要创建用户的数据库。
(3) 右击User 图标,在弹出菜单中选择 New Database User, 弹出New Database User – New User 对话框。如图14-3 所示。
(4) 在Login 选择框内选择已经创建的登录账号、在User 选择框内输入数据库用户名称。
(5)在Database role membership 下的选项框中为该用户选择数据库角色(关于数据库角色将在角色一节中作详细介绍)。
(6)单击确定按钮。
    当然,在创建一个SQL Server 登录账号时,就可以先为该登录账号定出其在不同数据库中所使用的用户名称,这实际上也完成了创建新的数据库用户这一任务。其操作步骤见“14.2.1 使用SQL Server Enterprise Manager 管理SQL Server 登录”。 在打开的SQL Server Properties – New Login 对话框中选择Database Access 标签页。见图14-4 所示。

数据库用户
数据库用户

查看、删除数据库用户

    在SQL Server Enterprise Manager 中,选中User 图标(创建数据库用户的第三步),则在右面的窗格中显示当前数据库的所有用户。如图14-5 所示。
    选中User 图标后,在右面窗格中右击想要删除的数据库用户,则会弹出选项菜单,然后选择Delete, 则会从当前数据库中删除该数据库用户。见图14-5。
数据库用户

2 利用系统过程管理数据库用户:
SQL Server 利用以下系统过程管理数据库用户
sp_adduser    sp_granddbaccess
sp_dropuser   sp_revokedbaccess
sp_helpuser

    使用sp_adduser和sp_dropuser是为了保持以前版本相兼容,所以我们强烈主张使用sp_granddbaccess和sp_revokedbacces。

创建新数据库用户
    在数据库管理简介部分我们已经指出,除了guest 用户外,其它用户必须与某一登录账号相匹配,所以,正如在图14-4 中所见到的那样,不仅要输入新创建的新数据库用户名称,还要选择一个已经存在的登录账号。同理,当我们使用系统过程时,也必须指出登录账号和用户名称。

数据库用户

注意:使用该系统过程总是为登录账号设置一个在当前数据库中的用户账号,如果设置访登录者在其它数据库中的用户账号,必须首先使用Use命令,将其设置为当前数据库。

数据库用户

    对于sp_granddbaccess和sp_revokedaccess这两上系统过程,只有db_owner和db_access admin数据库角色才有执行它的权限。

数据库用户

角色管理简介
    自SQL Server 7 版本开始引入了新的概念角色,从而替代以前版本中组的概念。和组一样,SQL Server 管理者可以将某些用户设置为某一角色,这样只对角色进行权限设置便可实现对所有用户权限的设置,大大减少了管理员的工作量。在SQL Server 中主要有两种角色类型:服务器角色与数据库角色。

1 服务器角色
    服务器角色是指根据SQL Server 的管理任务,以及这些任务相对的重要性等级来把具有SQL Server 管理职能的用户划分成不同的用户组,每一组所具有管理SQL Server的权限已被预定义。服务器角色适用在服务器范围内,并且其权限不能被修改。例如,具有sysadmin 角色的用户在SQL Server 中可以执行任何管理性的工作,任何企图对其权限进行修改的操作都将会失败。这一点与数据库角色不同

    SQL Server 共有7 种预定义的服务器角色,各种角色的具体含义如表14-3 所示:
角色管理

2 数据库角色
    在SQL Server 中我们常会发现我们要将一套数据库专有权限授予给多个用户,但这些用户并不属于同一个NT 用户组,或者虽然这些用户可以被NT 管理者划为同一NT 用户组,但遗憾的是,我们却没有管理NT 账号的权限,这时我们就可以在数据库中添加新数据库角色或使用已经存在的数据库角色,并让这些有着相同数据库权限的用户归属于同一角色。
    由此可见,数据库角色能为某一用户或一组用户授予不同级别的管理或访问数据库或数据库对象的权限,这些权限是数据库专有的。而且,还可以使一个用户具有属于同一数据库的多个角色。
    SQL Server 提供了两种数据库角色类型:预定义的数据库角色、用户自定义的数据库角色。
预定义数据库角色
    预定义数据库角色是指这些角色所有具有的管理、访问数据库权限已被SQL Server 定义、并且SQL Server 管理者不能对其所具有的权限进行任何修改。SQL Server 中的每一个数据库中都有一组预定义的数据库角色,在数据库中使用预定义的数据库角色可以将不同级别的数据库管理工作分给不同的角色,从而很容易实现工作权限的传递。例如,如果准备让某一用户临时或长期具有创建和删除数据库对象(表、视图、存储过程)的权限,那么只要把他设置为db_ddladmin 数据库角色即可。
角色管理角色管理

用户自定义的数据库角色
    当我们打算为某些数据库用户设置相同的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,我们就可以定义新的数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某一特定功能。用户自定义的数据库角色具有以下几个优点:

SQL Server 数据库角色可以包含NT 用户组或用户;
在同一数据库中用户可以具有多个不同的自定义角色,这种角色的组合是自由的,而不仅仅是public 与其它一种角色的结合;
角色可以进行嵌套,从而在数据库实现不同级别的安全性。
用户定义的数据库角色有两种类型:标准角色和应用角色。
    标准角色类似于SQL Server 7 版本以前的用户组,它通过对用户权限等级的认定而将用户划分为不同的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。所有的预定义的数据库角色或SQL Server 管理者自定义的某一角色(该角色具有管理数据库对象或数据库的某些权限)都是标准角色。
    应用角色是一种比较特殊的角色类型。当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据(比如通过SQL Server Query Analyzer 或Microsoft Excel) 而不是直接地存取数据库数据时,我们就应该考虑使用应用角色。当某一用户使用了应用角色时,他便放弃了已被赋予的所有数据库专有权限,他所拥有只是应用角色被设置的权限。通过应用角色,总能实现这样的目标;即以可控制方式来限定用户的语句或对象权限。
    标准数据库角色与应用角色的差异主要表现在以下几个方面。

    应用角色不像标准角色那样具有组的含义,因此不能像使用标准角色那样把某一用户设置为应用角色;
    当用户在数据库中激活应用角色时,必须提供密码,即应用角色是受口令保护的,而标准角色并不受口令保护。
    我们可以看出并不像标准角色那样将通过把用户加入到不同的角色当中而使用户具有这样或那样的语句或对象权限,而是首先将这样或那样的权限赋予应用角色,然后将逻辑加入到某一特定的应用程序中,从而通过激活应用角色而实现对应用程序存取数据的可控性。只有应用角色被激活,角色才是有效的,用户也便可以且只可以执行应用角色相应的权限,而不管用户是一个sysadmin 或public 标准数据库角色。

14.5.2 角色的管理
1 管理服务器角色
使用SQL Server Enterprise Manager 查看服务器角色成员使用SQL Server EnterpriseManager 的执行步骤如下:
(1)启动SQL Server Enterprise Manager,登录到指定的服务器。
(2)单击security 文件夹,单击Server Role 图标。
(3)在右窗格中右击服务器角色,在弹出菜单中选择Properties, 然后弹出ServerRole Properties 对话框,如图14-10 所示,从中我们可以看到该角色的成员。
角色管理
2 增加服务器角色成员
在图14-10 的Server Role Properties 对话框中选择Add 按钮弹出Add Members 对话框,从中选择登录者。

3 查看服务器角色权限
在图14-10 的Server Role Properties 对话框中选择Permission 按钮,便可查找看该服务器角色所具有的所有权限,如图14-11 所示。
角色管理
角色管理
角色管理角色管理角色管理角色管理角色管理角色管理

- 作者: 古典辣M° 2005年05月31日, 星期二 02:20 加入博采

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值