数据库学习9 — 授权与数据库角色 例题练习

章节 4.2.4-4.2.5

授权与数据库角色

  • 1.授权:授予与收回
  • 2.数据库角色

1.授权:授予与收回

SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。其中 GRANT语句向角色授予权限, REVOKE 语句收回已经世欧预用户的权限。

1)GRANT

GRANT语句的一般格式为:

GRANT<权限>[,<权限>]···
ON <对象类型><对象名>[,<对象类型><对象名>]···
TO <用户>[,<用户>]···
[WITH GRANT OPTION];

如果指定了 WITH GRANT OPTION 子句,则获得权限的用户还可以将这份权限再赋予给其他用户;没有指定此语句的话,则用户只能使用而不能传播。

还要注意标准SQL不允许循环授权,简单来说就是:我把权限传给你,你传给他,但他不能再把权限传给我和你,拒绝三角关系,从我做起。

例题4.1:把查询 Student 表的权限传给用户 U1.

GRANT SELECT
ON TABlE Student
TO U1;

在这里插入图片描述
提示错误,分析得知:T-SQL中是不用加上 TABLE 的,删去 ’ TABLE ',能正常运行:

数据库学习9 — 授权与数据库角色 例题练习_第1张图片
例题4.2:把对 Student 表和 Course 表全部操作的权限传给用户 U2,U3.

GRANT ALL PRIVILEGES
ON TABlE Student,Course
TO U2,U3;

在SQL中运行时,提示错误:
在这里插入图片描述
因为不支持同时授予两个表的权限,修改为:

GRANT ALL PRIVILEGES 
ON Student
TO U2,U3;
GRANT ALL PRIVILEGES
ON Course
TO U2,U3;
//ALL PRIVILEGES 包括插入、更新、删除、选择、引用

例题4.3:把对表SC的查询权限授予所有用户。

GRANT SELECT
ON SC
TO PUBLIC;

例4.5:把对表SC的 INSERT 权限授予U1用户,并允许将此权限再授予其他用户。

GRANT INSERT
ON SC
TO U1
WITH GRANT OPTION;

GRANT语句可以一次向一个或多个用户授权。

2)REVOKE

收回权限的 REVOKE 语句的一般格式为:

REVOKE <权限>[,<权限>]···
ON <对象类型><对象名>[,<对象类型><对象名>]···
FROM <用户>[,<用户>]···[CASCADE|RESTRICT]

例题4.8:把用户U4修改学生学号的权限收回。

REVOKE UPDATE(Sno)
ON Student
FROM U4;

例题4.9:收回所有用户对SC的查询权限。

REVOKE SELECT
ON SC
FROM PUBLIC;

例题4.10:把用户U5对SC表的INSERT权限收回。

REVOKE INSERT
ON SC
FROM U5 CASCADE;

级联(CASCADE) 可以在收回U5权限的同时,也收回了其它用户被U5授予的相同权限;如果没有级联语句,系统将拒绝执行该命令。

2.数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

例题4.11:通过角色来实现将一组权限授予一个用户。


1·创建角色:
CREATE ROLE R1;
2·使用GRANT语句,使角色R1拥有Student表的 SELECTUPDATEINSERT 权限。
GRANT SELECT,UPDATE,INSERT
ON Student
TO U1;
3·将这个角色授予U1、U2,使他们具有角色R1所包含的全部权限。
GRANT R1
TO U1,U2;

在这里插入图片描述
运行不通过,T-SQL不支持,应修改为:

EXEC sp_addrolemember 'R1','U1'
ALTER ROLE R1
ADD member U1;

EXEC sp_addrolemember 'R1','U2'
ALTER ROLE R1
ADD member U2;
4·通过R1收回U2的这三个权限。
REVOKE R1
FROM U2;

运行不通过,为相同问题,T-SQL不支持,应修改为:

EXEC sp_addrolemember 'R1','U1'
ALTER ROLE R1
ADD member U1;

例题4.12:角色的权限修改。

GRANT DELETE
ON Student
TO R1;

例题4.13:收回角色的选择权限。

REVOKE SELECT
ON Student
FROM R1;

…………………………………………………………………………….

在这里插入图片描述

以上就是文章全部内容,感谢阅读。

你可能感兴趣的:(SQL,server,数据库,sql)