6.5 数据库角色

6.5 数据库角色


6.5.1 数据库角色

  为了便于管理数据库中的权限,可以在数据库范围内设置数据库角色。



6.5.2 固定数据库角色

  SQL Server 预定义了以下数据库角色。


数据库角色
说明
db_accessadmin

成员可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。

db_backupoperator
成员可以备份数据库。
db_datareader
成员可以从所有用户表中读取所有数据。
db_datawriter
成员可以在所有用户表中添加、删除或更改数据。
db_ddladmin 
成员可以在数据库中运行任何数据定义语言 (DDL) 命令。
db_denydatareader 
成员不能读取数据库内用户表中的任何数据。
db_denydatawriter 
成员不能添加、修改或删除数据库内用户表中的任何数据。
db_owner
成员可以执行数据库的所有配置和维护活动,还可以删除数据库。
db_securityadmin
成员可以修改角色成员身份和管理权限。向此角色中添加主体可能会导致意外的权限升级。
public
每个数据库用户都属于 public 数据库角色。如果未向某个用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的 public 角色的权限。



6.5.3 用户定义的数据库角色

  在 SQL Server 中还可以创建灵活的数据库角色。

  数据库角色的名称可以包含 1 到 128 个字符,包括字母、符号和数字。数据库角色的名称不能包含反斜杠(“\”)、不能为 NULL 或空字符串。 

wKiom1aGbl6gO-5iAAD4DrpdcqE695.png


  可以同时为新角色指定一个“所有者”。如果未指定所有者,则执行当前操作的数据库用户(例如:dbo)将拥有该角色。

  T-SQL 语法示例如下:

CREATE ROLE [DbRole1]

CREATE ROLE [DbRole2] AUTHORIZATION [dbo]


  要求对数据库具有 CREATE ROLE 权限或者在 db_securityadmin 固定数据库角色中具有成员身份。使用 AUTHORIZATION 选项时,还需要具有下列权限: 

  若要将角色的所有权分配给另一个用户,则需要对该用户具有 IMPERSONATE 权限。  

  若要将角色的所有权分配给另一个角色,则需要具有被分配角色的成员身份或对该角色具有 ALTER 权限。  

  若要将角色的所有权分配给应用程序角色,则需要对该应用程序角色具有 ALTER 权限。 


最佳实践:

  不要将用户定义的数据库角色添加为固定角色的成员。这可能会导致意外的权限升级。



6.5.4 为数据库角色添加成员

  可以将用户或数据库角色添加到角色的成员列表中。但是,不能将角色添加为该角色自身的成员,否则将显示“不能使角色成为其自身的成员”的错误提示。

wKiom1aGcK3APgh_AABi6Sp8fE8172.png


  T-SQL 语法示例如下:

ALTER ROLE [DbRole1] ADD MEMBER [sqluser002]


提示:

  不推荐使用 sp_addrole、 sp_addrolemember 等存储过程。



本文出自 “SQL Server 管理员指南” 博客,谢绝转载!

你可能感兴趣的:(角色)