授权操作者:数据库管理员、数据库对象创建者(即属主Owner)、拥有该权限的用户
回收操作者:数据库管理员或其他授权者
授权 GRANT
GRANT语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
WITH GRANT OPTION子句
指定:可以再授予
没有指定:不能传播
例1、把对某表的某个权限授给某个用户
// 把查询Student表权限授给用户U1
GRANT SELECT ON TABLE Student TO U1;
例2、把多个表的全部权限授予多个用户
// 把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES ON TABLE Student,Course TO U2,U3;
例3、把某表的某个权限授予所有用户
// 把对表SC的查询权限授予所有用户
GRANT SELECT ON TABLE SC TO PUBLIC;
例4、把某表中某列的某个权限授权给某个用户
// 把Student表修改学生学号的权限授给用户U4
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
例5、允许授权传播
// 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT ON TABLE SC TO U5
WITH GRANT OPTION;
权限回收 REVOKE
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
例1、收回所有用户的权限
// 收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
例2、收回某用户对某表中某列的某个权限
// 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
例3、具有“继续授权”许可的用户的权限收回
CASCADE 级联
// 把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;
U5 用户的 insert 权限是“允许继续授权”的 insert 权限,在收回该权限时需要使用 cascade ,否则拒绝执行
同时,收回 U5 用户的该权限时,那些直接或间接从 U5 用户得到该权限的用户的权限也会被收回;如果这些用户还从别处得到了该权限,则不会被收回