角色、管理权限

  • 1. 角色
  • 1.1 概述
  • 1.2 预定义角色
  • 1.3 角色的操作
  • 2. 管理权限
  • 2.1 概述
  • 2.2 授予权限
  • 2.3 收回权限


1. 角色

1.1 概述

一个数据库可能会有许多个用户,若单独给每个用户设置管理权限,会浪费很多时间;角色就是集中管理权限的一种机制,它能将不同权限的用户分类组合,便于数据库管理员管理;

1.2 预定义角色

SQL Server 中有两类预定义的角色,系统管理预定义角色数据库预定义角色,这两类预定义角色将系统管理和数据库管理的权限做了分解,方便数据库管理员分配使用;
当中,较为特殊的是 public 角色,它的权限是所有数据库用户的默认权限;
每个用户都有 public 角色,不需要也不能够将用户指派给 public 角色,因为默认情况下所有用户都自动属于该角色,同样,用户也不能取消角色的public 角色或直接删除public 角色

1.3 角色的操作

  1. 定义角色的SQL命令为 CREATE ROLE,语法格式如下:
CREATE ROLE <角色>[ <拥有者>]

<角色>是定义的角色的名称,命名规则跟数据表名类似;AUTHORIZATION表示指定该角色的拥有者,可以为用户或角色,但需要一定的权限,省略时表示属于创建该角色的用户;
例子 1:创建用户 teacher

create role teacher

SQL server数据库用户表权限 sql server数据库权限管理_SQL server数据库用户表权限

  1. 每个数据库用户都能担当一个或多个角色,指定角色的SQL语法格式如下:
sp_addrolemember '角色名'.'用户名'

若一个用户不再担当某角色,可取消该用户的角色资格,取消角色资格的SQL语法格式如下:

sp_droprolemember '角色名'.'用户名'
  1. 修改角色名的SQL命令为ALTER ROLE,语法格式如下:
ALTER ROLE <角色名> WITH NAME=新名称

例子 2:将角色 teacher 改为 Teacher;

alter role teacher with name=Teacher

SQL server数据库用户表权限 sql server数据库权限管理_sqlserver_02

  1. 删除角色的SQL命令为DROP ROLE,语法格式如下:
DROP ROLE <角色名>

注意: 不能删除仍然带有用户的角色,在删除角色前解除其与所有成员的关系;

2. 管理权限

2.1 概述

权限是用户对数据库及其对象的使用权;为了数据库的安全,需要对用户的操作权限进行控制管理,系统管理员或数据库管理员能按层次定义角色及其权限,为不同级别的用户指定不同的角色,从而分层次管理数据;

权限可分为系统权限和对象权限,系统权限表示用户对数据库的操作权限,如下表:

SQL server数据库用户表权限 sql server数据库权限管理_SQL server数据库用户表权限_03


对象权限表示系统权限授予用户对特定数据库中的表、视图等操作权限,如下表:

SQL server数据库用户表权限 sql server数据库权限管理_角色_04

2.2 授予权限

授予权限的SQL命令为 GRANT,语法格式如下:

GRANT <权限>
ON <对象名>
TO <用户名或角色名>
[WITH GRANT OPTION]

[WITH GRANT OPTION] 表示获得用户权限的用户能将该权限赋予其他用户;
例子 3: 授予用 Tim 查询数据表 B 及修改 ID 的权限

grant select,update(ID)
on B
to Tim

SQL server数据库用户表权限 sql server数据库权限管理_SQL server数据库用户表权限_05

2.3 收回权限

收回权限的SQL命令为REVOKE,语法格式如下:

REVOKE <权限>
ON <对象名>
FROM <用户名或角色名>

例子 4:收回用户 Tim 在数据表 B中修改 ID 的权限

revoke select,update(ID)
on B
to Tim

SQL server数据库用户表权限 sql server数据库权限管理_SQL server数据库用户表权限_06