数据库角色 数据库里什么叫角色分几种
很多朋友对于数据库角色和数据库里什么叫角色分几种不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
数据库角色的简介
在数据库中,为便于对用户及权限进行管理,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。角色类似于Windows操作系统安全体系中的组的概念。在实际工作中,有大量的用户其权限是一样的,如果让数据库管理员在每次创建完用户后都对每个用户分别授权,则是一件非常麻烦的事情。但如果把具有相同权限的用户集中在角色中进行管理,则会方便很多。
为一个角色进行权限管理就相当于对该角色中的所有成员进行操作。可以为有相同权限的一类用户建立一个角色,然后为角色授予合适的权限。使用角色的好处是系统管理员只需对权限的种类进行划分,然后将不同的权限授予不同的角色,而不必关心有哪些具体的用户。而且当角色中的成员发生变化时,比如添加成员或删除成员,系统管理员都无需做任何关于权限的操作。
在SOL Server 2008中,角色分为预定义的系统角色和用户定义角色两种。同对,根据角色作用范围的不同,系统角色又分为服务器级角色(称为固定服务器角色)和数据库级角色(称为固定数据库角色)。用户定义的角色均是数据库级角色。
什么是数据库角色
角色是一个强大的工具,使您得以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。
Microsoft® Windows NT®和 Windows® 2000组的使用方式与角色很相似。有关更多信息,请参见组。
如果根据工作职能定义了一系列角色,并给每个角色指派了适合这项工作的权限,则很容易在数据库中管理这些权限。之后,不用管理各个用户的权限,而只须在角色之间移动用户即可。如果工作职能发生改变,则只须更改一次角色的权限,并使更改自动应用于角色的所有成员,操作比较容易。
在 Microsoft® SQL Server™ 2000和 SQL Server 7.0版中,用户可属于多个角色。
以下脚本说明登录、用户和角色的添加,并为角色授予权限。
USE master
GO
sp_grantlogin'NETDOMAIN\John'
GO
sp_defaultdb'NETDOMAIN\John','courses'
GO
sp_grantlogin'NETDOMAIN\Sarah'
GO
sp_defaultdb'NETDOMAIN\Sarah','courses'
GO
sp_grantlogin'NETDOMAIN\Betty'
GO
sp_defaultdb'NETDOMAIN\Betty','courses'
GO
sp_grantlogin'NETDOMAIN\Ralph'
GO
sp_defaultdb'NETDOMAIN\Ralph','courses'
GO
sp_grantlogin'NETDOMAIN\Diane'
GO
sp_defaultdb'NETDOMAIN\Diane','courses'
GO
USE courses
GO
sp_grantdbaccess'NETDOMAIN\John'
GO
sp_grantdbaccess'NETDOMAIN\Sarah'
GO
sp_grantdbaccess'NETDOMAIN\Betty'
GO
sp_grantdbaccess'NETDOMAIN\Ralph'
GO
sp_grantdbaccess'NETDOMAIN\Diane'
GO
sp_addrole'Professor'
GO
sp_addrole'Student'
GO
sp_addrolemember'Professor','NETDOMAIN\John'
GO
sp_addrolemember'Professor','NETDOMAIN\Sarah'
GO
sp_addrolemember'Professor','NETDOMAIN\Diane'
GO
sp_addrolemember'Student','NETDOMAIN\Betty'
GO
sp_addrolemember'Student','NETDOMAIN\Ralph'
GO
sp_addrolemember'Student','NETDOMAIN\Diane'
GO
GRANT SELECT ON StudentGradeView TO Student
GO
GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor
GO
该脚本给 John和 Sarah教授提供了更新学生成绩的权限,而学生 Betty和 Ralph只能选择他们自己的成绩。Diane因同时教两个班,所以添加到两个角色中。ProfessorGradeView视图应将教授限制在自己班学生的行上,而 StudentGradeView应限制学生只能选择自己的成绩。
SQL Server 2000和 SQL Server 7.0版在安装过程中定义几个固定角色。可以在这些角色中添加用户以获得相关的管理权限。下面是服务器范围内的角色。
固定服务器角色
描述
sysadmin
可以在 SQL Server中执行任何活动。
serveradmin
可以设置服务器范围的配置选项,关闭服务器。
setupadmin
可以管理链接服务器和启动过程。
securityadmin
可以管理登录和 CREATE DATABASE权限,还可以读取错误日志和更改密码。
processadmin
可以管理在 SQL Server中运行的进程。
dbcreator
可以创建、更改和除去数据库。
diskadmin
可以管理磁盘文件。
bulkadmin
可以执行 BULK INSERT语句。
可以从 sp_helpsrvrole获得固定服务器角色的列表,可以从 sp_srvrolepermission获得每个角色的特定权限。
每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。例如,如果 Database1和 Database2中都有叫 UserX的用户 ID,将 Database1中的 UserX添加到 Database1的 db_owner固定数据库角色中,对 Database2中的 UserX是否是 Database2的 db_owner角色成员没有任何影响。
固定数据库角色
描述
db_owner
在数据库中有全部权限。
db_accessadmin
可以添加或删除用户 ID。
db_securityadmin
可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin
可以发出 ALL DDL,但不能发出 GRANT、REVOKE或 DENY语句。
db_backupoperator
可以发出 DBCC、CHECKPOINT和 BACKUP语句。
db_datareader
可以选择数据库内任何用户表中的所有数据。
db_datawriter
可以更改数据库内任何用户表中的所有数据。
db_denydatareader
不能选择数据库内任何用户表中的任何数据。
db_denydatawriter
不能更改数据库内任何用户表中的任何数据。
可以从 sp_helpdbfixedrole获得固定数据库角色的列表,可以从 sp_dbfixedrolepermission获得每个角色的特定权限。
数据库中的每个用户都属于 public数据库角色。如果想让数据库中的每个用户都能有某个特定的权限,则将该权限指派给 public角色。如果没有给用户专门授予对某个对象的权限,他们就使用指派给 public角色的权限。
数据库里什么叫角色分几种
角色是一个强大的工具,使您得以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。
Microsoft® Windows NT®和 Windows® 2000组的使用方式与角色很相似。有关更多信息,请参见组。
如果根据工作职能定义了一系列角色,并给每个角色指派了适合这项工作的权限,则很容易在数据库中管理这些权限。之后,不用管理各个用户的权限,而只须在角色之间移动用户即可。如果工作职能发生改变,则只须更改一次角色的权限,并使更改自动应用于角色的所有成员,操作比较容易。
在 Microsoft® SQL Server™ 2000和 SQL Server 7.0版中,用户可属于多个角色。
以下脚本说明登录、用户和角色的添加,并为角色授予权限。
USE master
GO
sp_grantlogin'NETDOMAIN\John'
GO
sp_defaultdb'NETDOMAIN\John','courses'
GO
sp_grantlogin'NETDOMAIN\Sarah'
GO
sp_defaultdb'NETDOMAIN\Sarah','courses'
GO
sp_grantlogin'NETDOMAIN\Betty'
GO
sp_defaultdb'NETDOMAIN\Betty','courses'
GO
sp_grantlogin'NETDOMAIN\Ralph'
GO
sp_defaultdb'NETDOMAIN\Ralph','courses'
GO
sp_grantlogin'NETDOMAIN\Diane'
GO
sp_defaultdb'NETDOMAIN\Diane','courses'
GO
USE courses
GO
sp_grantdbaccess'NETDOMAIN\John'
GO
sp_grantdbaccess'NETDOMAIN\Sarah'
GO
sp_grantdbaccess'NETDOMAIN\Betty'
GO
sp_grantdbaccess'NETDOMAIN\Ralph'
GO
sp_grantdbaccess'NETDOMAIN\Diane'
GO
sp_addrole'Professor'
GO
sp_addrole'Student'
GO
sp_addrolemember'Professor','NETDOMAIN\John'
GO
sp_addrolemember'Professor','NETDOMAIN\Sarah'
GO
sp_addrolemember'Professor','NETDOMAIN\Diane'
GO
sp_addrolemember'Student','NETDOMAIN\Betty'
GO
sp_addrolemember'Student','NETDOMAIN\Ralph'
GO
sp_addrolemember'Student','NETDOMAIN\Diane'
GO
GRANT SELECT ON StudentGradeView TO Student
GO
GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor
GO
该脚本给 John和 Sarah教授提供了更新学生成绩的权限,而学生 Betty和 Ralph只能选择他们自己的成绩。Diane因同时教两个班,所以添加到两个角色中。ProfessorGradeView视图应将教授限制在自己班学生的行上,而 StudentGradeView应限制学生只能选择自己的成绩。
SQL Server 2000和 SQL Server 7.0版在安装过程中定义几个固定角色。可以在这些角色中添加用户以获得相关的管理权限。下面是服务器范围内的角色。
固定服务器角色
描述
sysadmin
可以在 SQL Server中执行任何活动。
serveradmin
可以设置服务器范围的配置选项,关闭服务器。
setupadmin
可以管理链接服务器和启动过程。
securityadmin
可以管理登录和 CREATE DATABASE权限,还可以读取错误日志和更改密码。
processadmin
可以管理在 SQL Server中运行的进程。
dbcreator
可以创建、更改和除去数据库。
diskadmin
可以管理磁盘文件。
bulkadmin
可以执行 BULK INSERT语句。
可以从 sp_helpsrvrole获得固定服务器角色的列表,可以从 sp_srvrolepermission获得每个角色的特定权限。
每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。例如,如果 Database1和 Database2中都有叫 UserX的用户 ID,将 Database1中的 UserX添加到 Database1的 db_owner固定数据库角色中,对 Database2中的 UserX是否是 Database2的 db_owner角色成员没有任何影响。
固定数据库角色
描述
db_owner
在数据库中有全部权限。
db_accessadmin
可以添加或删除用户 ID。
db_securityadmin
可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin
可以发出 ALL DDL,但不能发出 GRANT、REVOKE或 DENY语句。
db_backupoperator
可以发出 DBCC、CHECKPOINT和 BACKUP语句。
db_datareader
可以选择数据库内任何用户表中的所有数据。
db_datawriter
可以更改数据库内任何用户表中的所有数据。
db_denydatareader
不能选择数据库内任何用户表中的任何数据。
db_denydatawriter
不能更改数据库内任何用户表中的任何数据。
可以从 sp_helpdbfixedrole获得固定数据库角色的列表,可以从 sp_dbfixedrolepermission获得每个角色的特定权限。
数据库中的每个用户都属于 public数据库角色。如果想让数据库中的每个用户都能有某个特定的权限,则将该权限指派给 public角色。如果没有给用户专门授予对某个对象的权限,他们就使用指派给 public角色的权限。
关于数据库角色的内容到此结束,希望对大家有所帮助。