数据库角色
被组织在一起具有相同权限的用户
数据库中,为便于对用户及权限进行管理,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。
操作流程
数据库角色从概念上与操作系统用户是完全无关的。 在实际使用中把它们对应起来可能比较方便,但不是必须的。 数据库角色在整个数据库集群中是全局的(而不是每个库不同)。 要创建一个角色,使用 SQL 命令 CREATE ROLE:
CREATE ROLE name; name 遵循 SQL 标识的规则: 要么完全没有特殊字符,要么用双引号包围(实际上你通常会给命令增加额外的选项,比如 LOGIN)。 要删除一个现有角色,使用类似的命令 DROP ROLE:
DROP ROLE name; 为了方便,程序 createuser 和 dropuser 提供了对了这些 SQL 命令的封装。 我们可以在 shell 命令上直接调用它们:
createuser name dropuser name 要判断一套现有用户,检查 pg_role 系统表,比如
注意事项
为了能初创数据库系统数据库集群的用户有相同的名称。 通常,这个角色叫postgres。 为了创建更多角色,你必须首先以这个初始用户角色联接。
每一个和数据库的连接都必须由一个角色身份进行, 这个角色决定在该连接上发出的命令的初始权限。 和特定数据库联接的角色名是由初始化联接请求的应用以相关的方式声明的, 比如,psql 程序使用-U命令行选项声明它代表的进行联接的角色。 许多应用以当前操作系统的用户名为缺省(这样的应用包括 createuser 和 psql)。 所以,在系统用户和数据库角色之间有某种命名关系会让我们工作方便很多。
一个客户端联接可以用来联接的数据库角色集合是由客户认证设置决定的, (因此,一个客户端并不局限于以它的操作系统用户同名的角色进行联接, 就象你登录系统的名称不一定要是你的真实姓名一样。) 因为角色的身份决定了一个已连接地客户端可用的权限, 所以在多用户环境里仔细配置这些内容是非常重要的。
固定数据库角色
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 不能更改数据库内任何用户表中的任何数据。
简介
角色类似于Windows操作系统安全体系中的组的概念。在实际工作中,有大量的用户其权限是一样的,如果让数据库管理员在每次创建完用户后都对每个用户分别授权,则是一件非常麻烦的事情。但如果把具有相同权限的用户集中在角色中进行管理,则会方便很多。
为一个角色进行权限管理就相当于对该角色中的所有成员进行操作。可以为有相同权限的一类用户建立一个角色,然后为角色授予合适的权限。使用角色的好处是系统管理员只需对权限的种类进行划分,然后将不同的权限授予不同的角色,而不必关心有哪些具体的用户。而且当角色中的成员发生变化时,比如添加成员或删除成员,系统管理员都无需做任何关于权限的操作。
在SOL Server 2008中,角色分为预定义的系统角色和用户定义角色两种。同对,根据角色作用范围的不同,系统角色又分为服务器级角色(称为固定服务器角色)和数据库级角色(称为固定数据库角色)。用户定义的角色均是数据库级角色。
参考资料
最新修订时间:2023-06-17 22:22
目录
概述
操作流程
参考资料