本文仅供参考学习使用,谢谢
SQL语言种类 | 操作 |
---|---|
DDL 数据定义语言 | create(创建) drop(删除) alte(修改) |
DQL 数据查询语言 | select(查询) |
DML 数据操纵语言 | insert(插入) update(更新) delete(删除) |
DCL 数据控制语言 | grant(授予) revoke(吊销) |
视图链接
权限分文对于对象的权限和对语句的权限,区别体现在用不用加on
对对象的权限体现在:
针对某个(某类)对象,对于某些表可以在某些属性值上进行修改
比如某些对象只能在某张表上修改该表的某个属性值
对语句的权限体现在:
针对某个权限传授给某个对象,比如某些对象可以创建表,更新表,删除表
GRANT语句的一般格式
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]...
TO <用户>[,<用户>]...
[WITH GRANT OPTION];//指定该子句:可以再转授权限
//没有指定:不能传播权限
WITH GRANT OPTION语义:
将对指定操作对象的指定操作权限授予指定的用户
eg:将一种权限授予一个用户。
//把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
eg:一次向多个用户传播多种同类对象的权限。
//把对Student表和Course表的全部权限授予 用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO U2, U3;
//把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
eg:一次完成了对基本表和属性列这些不同对象的授权。
//把查询Student表和修改学生学号的权限授 给用户U4
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
//对属性列的授权时必须明确指出相应属性列名
//把对表SC的INSERT权限授予U5用户, 并允许他再将此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
//执行后,U5不仅拥有 了对表SC的INSERT权限,还可以传播此权限
GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;
//同样U6还可以将此权限授予U7
GRANT INSERT
ON TABLE SC
TO U7;
//但U7不能再传播此权限。
授予的权限可以由数据库管理员或其他授权者用REVOKE语句
收回
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
//CASCADE:级联回收
//RESTRICT:受限回收
//把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
//收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
//把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;
//如果系统缺省值为RESTRICT,回收U5的INSERT权限时应该使用CASCADE短语,
//否则拒绝执行该语句
//如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,
//系统只收回直接或间接从U5处获得的权限
使用角色管理数据库权限,可以简化授权和回收的过程。
CREATE ROLE <角色名>
GRANT <权限>[,<权限>]...
ON <对象类型>对象名
TO <角色>[,<角色>]...
一个角色的权限:直接授予这 个角色的全部权限加上其他角色授予这个角色的全部权限
GRANT <角色1>[,<角色2>]...
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]
//指定 WITH ADMIN OPTION, 则获得权限的角色或用户还可以把这种权限授予其他角色
//授予者是角色的创建者或拥有在这个角色上的 ADMIN OPTION
用户可以回收角色的权限,从而修改角色拥有的权限
REVOKE执行者是:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>
FROM <角色>[,<角色>]...
eg:通过角色来实现权限管理。 步骤如下:
//(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 王平;
eg:增加角色的权限
//使角色 R1 在原来的基础上增加了 Student 表的 DELETE 权限
GRANT DELETE
ON TABLE Student
TO R1;
eg:减少角色的权限
//使 R1 减少了 SELECT 权限
REVOKE SELECT
ON TABLE Student
FROM R1;