角色、管理权限
- 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 角色的操作
- 定义角色的SQL命令为
CREATE ROLE
,语法格式如下:
CREATE ROLE <角色>[ <拥有者>]
<角色>
是定义的角色的名称,命名规则跟数据表名类似;AUTHORIZATION
表示指定该角色的拥有者,可以为用户或角色,但需要一定的权限,省略时表示属于创建该角色的用户;
例子 1:创建用户 teacher
create role teacher
- 每个数据库用户都能担当一个或多个角色,指定角色的SQL语法格式如下:
sp_addrolemember '角色名'.'用户名'
若一个用户不再担当某角色,可取消该用户的角色资格,取消角色资格的SQL语法格式如下:
sp_droprolemember '角色名'.'用户名'
- 修改角色名的SQL命令为
ALTER ROLE
,语法格式如下:
ALTER ROLE <角色名> WITH NAME=新名称
例子 2:将角色 teacher 改为 Teacher;
alter role teacher with name=Teacher
- 删除角色的SQL命令为
DROP ROLE
,语法格式如下:
DROP ROLE <角色名>
注意: 不能删除仍然带有用户的角色,在删除角色前解除其与所有成员的关系;
2. 管理权限
2.1 概述
权限是用户对数据库及其对象的使用权;为了数据库的安全,需要对用户的操作权限进行控制管理,系统管理员或数据库管理员能按层次定义角色及其权限,为不同级别的用户指定不同的角色,从而分层次管理数据;
权限可分为系统权限和对象权限,系统权限表示用户对数据库的操作权限,如下表:
对象权限表示系统权限授予用户对特定数据库中的表、视图等操作权限,如下表:
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
2.3 收回权限
收回权限的SQL命令为REVOKE
,语法格式如下:
REVOKE <权限>
ON <对象名>
FROM <用户名或角色名>
例子 4:收回用户 Tim 在数据表 B中修改 ID 的权限
revoke select,update(ID)
on B
to Tim