「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
6. 对象权限
所谓的对象指的是:表,视图,索引,同义词,存储过程,触发器,序列……
- 不同的对象具有不同的对象权限
- 对象的拥有者拥有所有权限
- 对象的拥有者可以向外分配权限
| 对象权限 | 表 | 视图 | 序列 | 过程 |
|---|---|---|---|---|
| 查询(select) | √ | √ | √ | |
| 插入(insert) | √ | √ | ||
| 更新(update) | √ | √ | ||
| 删除(delete) | √ | √ | ||
| 修改(alter) | √ | √ | ||
| 索引(index) | √ | |||
| 关联(references) | √ | |||
| 执行(execute) | √ |
6.1 授予权限
sql格式:
GRANT 权限列表 ON 对象名 TO 用户名 [WITH GRANT OPTION]
例1,授予**郁金香**这个用户,向**学生表** **查询,插值,修改,删除**的权限:
GRANT **select ,insert,update,delete,execute** ****ON **t_student** TO yujinxiang;
例2,向数据库中所有用户分配权限:
GRANT select ON dept TO PUBLIC;
6.2 授予部分字段权限( insert,update )
sql格式:
GRANT 权限名称 (字段列表) ON 对象名 TO 用户名 [WITH GRANT OPTION]
例如,授予郁金香这个用户,修改学生表的学生姓名,学生年龄的权限:
GRANT update (stu_name,student_age) ON t_student TO yujinxiang;
WITH GRANT OPTION 可在授于权限(对象)的同时,允许此用户将此权限授权给别的用户
6.3 查询已拥有权限
sql格式:
SELECT * FROM user_tab_privs_made --查询授出去的对象权限(通常是属主自己查)
SELECT * FROM user_tab_privs_recd,SELECT * FROM user_tab_privs --查询当前用户拥有的对象权限
6.4 撤消授权
sql格式:
REVOKE 权限列表 ON 对象名 FROM 用户名;
例1,撤消授予**郁金香**这个用户,向**学生表** **查询,插值,修改,删除**的权限:
REVOKE **select ,insert,update,delete,execute** ON **t_student** FROM yujinxiang;
例2,撤消授予**郁金香**这个用户,**修改** **学生表**的**学生姓名,学生年龄**的权限:
REVOKE **update** ON **t_student** FROM **yujinxiang**;
DDL,DML,DQL,DCL
DDL(Data Definition Language):
数据定义语言,用于创建对象 如:CREATE TABLE ,ALTER TABLE,DROP TABLE,CREATE VIEW……
DML (Data Manipulation Language):
数据操纵语言,如:INSERT INTO,UPDATE,DELETE……
DQL (Data Query Language):
数据查询语言,如:SELECT……
DCL(Data Control Language):
数据控制语言,控制特定用户对数据表、存储过程、函数等数据库对象的控制权,由 GRANT 和 REVOKE 两个指令组成。