2.4 数据库角色管理
数据库角色是数据库级别的,它包含的成员都是用户账户。本节介绍管理数据库角色的方法。
实例说明
要访问服务器中的数据库资源,必须拥有该数据库的用户账户。本实例介绍创建数据库用户账户的方法。
实例061 创建数据库用户账户
这是一个可以提高基础技能的实例
技术要点
在用户列表中一个用户名对应一个登录名。dbo(数据库所有者)对应登录名sa(系统管理员),它具有最高的数据库操作权限,这是系统的默认设置。
quest是一个特殊的用户,没有用户名关联的SQL Server登录账户可以将该账户当作默认的用户,通过它访问数据库资源。因此用户名quest没有与之对应的登录名。
如果使用一个登录账户通过Windows NT验证或者SQL Server验证成功登录到数据库服务器后,SQL Server 2000系统会检查该登录账户是否有合法的用户(如登录账户mrsoft有合法的用户mrsoft)相关联。如果有,则允许它以这个用户访问数据库资源。如果没有,系统会检查该待访问的数据库是否具有quest用户,若有,则以quest用户访问数据库资源,如果没有quest用户,那么这个登录就被拒绝。
实现过程
下面为SQL Server 2000自带的实例数据库pubs创建一个用户账户。具体操作步骤如下。
(1)在企业管理器中选中数据库pubs,展开目录,右键单击“用户”选项,在弹出的菜单中选择“新建数据库用户”命令,如图2.16所示。
图2.16 选择“新建数据库用户”命令
(2)打开图2.17所示的对话框。“登录名”下拉列表中列出了该SQL Server 2000数据库服务器的所有登录账号。
图2.17 新建用户
(3)在“登录名”下拉列表中选择登录名mrsoft,SQL Server 2000系统会自动在“用户名”文本框预填用户名mrsoft。默认情况下,用户名和登录名相同。其他设置为默认的,单击“确定”按钮,即可完成创建数据库用户账户。
创建数据库用户账户mrsoft后,即可在企业管理器中看到它,如图2.18所示。
图2.18 新建的数据库用户账户mrsoft
举一反三
根据本实例,读者可以:
删除数据库用户账户。
实例062 为数据库角色添加和删除成员
本实例可以方便操作、提高效率
实例说明
本实例介绍为数据库角色添加和删除成员的过程。
技术要点
当在Microsoft SQL Server中添加新用户账户,或者更改现有用户的权限时,可以向SQL Server数据库角色添加此用户,而不要直接将权限应用到账户上。对于用户数目众多或安全系统复杂的数据库,角色可以简化其安全管理。
SQL Server用户、Microsoft Windows NT 4.0/Windows 2000用户和组及其他SQL Server数据库角色都可以添加为角色成员。因为角色仅限于在单个数据库中使用,而且不能从一个数据库添加到另一个,所以可以添加只能被那个数据库识别的用户、组和角色。
说明:当在数据库内没有用户账户的Windows NT 4.0或Windows 2000登录添加到SQL Server数据库角色时,SQL Server自动在数据库内创建用户账户,即使Windows NT 4.0或Windows 2000登录原本无法访问该数据库。
用户账户可以是同一数据库中任意多个角色的成员,并且可以持有每个角色的适当权限。例如,一个SQL Server用户在同一数据库中既可以是admin角色的成员,又可以是users角色的成员,并且每个角色有不同的权限。授予多个角色成员的对象权限是这些角色的累计权限。但是,一个角色中的拒绝权限优先于在另一个角色中授予的同一权限。例如,admin角色可能授权访问某个表,但是users角色拒绝对该表的访问。属于两个角色的成员将被拒绝访问该表,因为被拒绝的访问权限更具限制性并具有优先权。
要添加到用户定义数据库角色中的用户,必须已经具有访问含有用户定义角色的数据库的权限。
实现过程
在上一实例中创建了数据库用户账户mrsoft。如果希望它能够添加、修改或者删除数据库中所有用户表的数据,则可以将该用户账户加入到数据库角色db_datawrite中。具体操作步骤如下。
(1)在企业管理器中选择数据库pubs,展开目录,选中“角色”,如图2.19所示。选中数据库角色db_datawriter,单击鼠标右键,在快捷菜单中选择“属性”命令,或者直接双击数据库角色db_datawriter,打开图2.20所示的对话框。
图2.19 打开数据库角色
图2.20 “数据库角色属性”对话框
(2)单击“添加”按钮,打开图2.21所示的对话框。该对话框列出了可以向角色中添加的数据库用户。
图2.21 选择要添加的用户
(3)选择mrsoft选项,单击“确定”按钮,回到“数据库角色属性”对话框。从图2.22中可以看出,用户mrsoft已经添加到数据库角色db_datawriter中。
图2.22 向数据库角色db_datawriter中添加用户账户mrsoft
(4)单击“确定”按钮,关闭对话框,完成添加操作。这样,mrsoft就拥有添加、修改或删除数据库中所有用户表中数据的权限了。
如果要测试mrsoft访问数据库资源的权限,可以以mrsoft登录到SQL Server 2000数据库服务器,然后测试访问数据库资源的权限。
如果要删除数据库角色中的成员,可以在图2.22所示的用户列表中选择要删除的用户,然后单击“删除”按钮即可。
举一反三
根据本实例,读者可以:
在企业管理器中为数据库角色添加和删除成员;
编写T-SQL语句为数据库角色添加和删除成员。
实例063 创建和删除数据库角色
本实例可以方便操作、提高效率
实例说明
固定的数据库角色其权限是不能更改的,用户创建的数据库角色则可以改变权限。本实例介绍创建和删除数据库角色的过程。
技术要点
数据库角色应用于单个数据库。在SQL Server中,数据库角色可分为两种,即标准角色和应用程序角色。标准角色是由数据库成员所组成的组。此成员可以是用户或其他的数据库角色。应用程序角色用来控制应用程序存取数据库,它本身并不包括任何成员。
● 标准角色。
在创建一个数据库时,系统默认创建10个固定的标准角色。
在企业管理器中,展开SQL Server组及其服务器,在“数据库”文件夹中,展开某一数据库的文件夹,然后单击“角色”选项,这时可在企业管理器的右侧窗格中显示出默认的10个标准角色,如表2.3所示。
表2.3 SQL Server中的固定数据库角色
● 应用程序角色。
编写数据库应用程序时,可以定义应用程序角色,让应用程序的操作者能用该应用程序来存取SQL Server的数据。也就是说,应用程序的操作者本身并不需要在SQL Server上有登录账号以及用户账号,仍然可以存取数据库,这样可以避免操作者自行登录SQL Server。
实现过程
下面在数据库pubs中创建一个角色,名称为db_All。
(1)在企业管理器中选择pubs数据库,展开目录,右键单击“角色”,在弹出的快捷菜单中选择“新建数据库角色”命令,打开图2.23所示的对话框。
图2.23 新建数据库角色
(2)在“名称”文本框中输入角色名称,这里为db_All。选择“标准角色”单选按钮,向这个角色添加成员。此时“权限”按钮不可用,说明此时不能给这个角色设置权限。单击“确定”按钮,创建数据库角色db_All。
创建数据库角色db_All后,可以在企业管理器中查看,如图2.24所示。
图2.24 创建后的数据库角色db_All
如果要删除这个角色,可以在企业管理器中选择数据库角色db_All,单击鼠标右键,在快捷菜单中选择“删除”命令,系统会弹出一个提示对话框,单击“是”按钮,即可删除数据库角色。
举一反三
根据本实例,读者可以:
使用T-SQL语句来创建和删除数据库角色。