GRANT [,]...
ON [, ]…
TO [,]...
[WITH GRANT OPTION];
WITH GRANT OPTION子句,指定:可以再授予,没有指定:不能传播
语义:将对指定操作对象的指定操作权限授予指定的用户
首先,建立登录名U1-U7,再建立用户U1-U7
以sa用户登录
[例4.1] 把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1
SQL serever报错:关键字 ‘TO’ 附近有语法错误。
去掉TABLE
执行后,用U1登录,执行一条SELECT语句
查询成功
查下SC试试啊
果然不行呢~回到sa
[例4.2] 把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;
报错:“,”附近有语法错误。
SQL serever on的后面只能接一个对象
分开来
GRANT ALL PRIVILEGES
ON Student
TO U2,U3
GRANT ALL PRIVILEGES
ON Course
TO U2,U3
ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。
登录U2进行测试
INSERT、DELETE、UPDATE都可以进行
U3一样
[例4.3] 把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC
所有用户都可以查询SC表,以下用U4登录
[例4.4] 把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4
用U4登录测试
当然只能修改学号
[例4.5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
登录U5测试
U5不仅拥有了对表SC的INSERT权限, 还可以传播此权限:
[例4.6]
GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;
这是在U5完成的
同样,U6还可以将此权限授予U7:
[例4.7]
GRANT INSERT
ON TABLE SC
TO U7;
(例3已经把对表SC的查询权限授予所有的用户)
在U7可以进行INSERT操作
REVOKE [,]...
ON [,]…
FROM [,]...[CASCADE | RESTRICT];
[例4.8] 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
在U4不能再进行UPDATE操作
(不再截图了,错误报告都是拒绝权限)
[例4.9] 收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
收回后,U1-U7都不能再对SC进行SELECT操作
[例4.10] 把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE
将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句
如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限
角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。
1.角色的创建
CREATE ROLE
2.给角色授权
GRANT [,]…
ON 对象名
TO [,]…
3.将一个角色授予其他的角色或用户
GRANT [,]…
TO [,]…
[WITH ADMIN OPTION]
/*该语句把角色授予某用户,或授予另一个角色
授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色*/
4.角色权限的收回
REVOKE [,]…
ON
FROM [,]…
/*用户可以回收角色的权限,从而修改角色拥有的权限
REVOKE执行者是:角色的创建者、拥有在这个(些)角色上的ADMIN OPTION*/
[例4.11] 通过角色来实现将一组权限授予一个用户。
步骤如下:
(1)首先创建一个角色 R1
CREATE ROLE R1
(2)然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1
(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
GRANT R1
TO 王平,张明,赵玲
(4) 可以一次性通过R1来回收王平的这3个权限
REVOKE R1
FROM 王平
[例4.12] 角色的权限修改
GRANT DELETE
ON TABLE Student
TO R1
角色R1在原来拥有的权限不变,增加了Student表的DELETE权限
[例4.13]
REVOKE SELECT
ON TABLE Student
FROM R1
使R1失去SELECT权限,被授予角色的王平,张明,赵玲的SELECT权限也失去
AUDIT下次再补
用时一个半小时,主要是来回试验,内容相对简单