授权:授予与收回
GRANT 授予
GRANT语句的一般格式是
GRANT <权限>
ON <对象类型> <对象名> [,<对象类型><对象名>]...
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
WITH GRANT OPTION 写了之后可以把这种权限再授予给别的用户,不写则无法继续授权
例4.1:把查询Student表的权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
例4.2:把对Student表和 Course表的全部操作限权授给用户U2、U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;
例4.3:把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
例4.4:把查询Student表和修改学生学号的权限授给用户U4
GRANT SELECT,UPDATE(Sno)
ON TABLE Student
TO U4;
例4.5:把对表SC的INSERT权限授予U5用户,并允许将此权限在授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
例4.6:U5可以将此权限在授予U6
ON TABLE SC
TO U6
WITH GRANT OPTION;
同理,U6也可以将此权限授予U7
ON TABLE SC
TO U7
WITH GRANT OPTION;
REVOKE 收回
REVOKE语句的一般格式为:
REVOKE <权限> [,<权限>] ...
ON <对象类型><对象名> [,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT];
例4.8:把用户U4修改学生学号的权限撤回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4
例4.9:收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
例4.10:把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
在有的数据库中,这里默认使用CASCADE,而有的地方默认使用RESTINCT,而加了CASCADE的好处是,如果U5此处在其他用户那里获得了权限的话,U5即使删除了现有这个权限,他依然有其他用户给他的INSERT权限