[Oracle 学习笔记] 07 DCL
DCL(Data Control Language)数据控制语言,用户对某类数据具有何种操作权限是有DBA决定。Oracle通过数据控制语言的GRANT语句完成权限授予操作,REVAKE 语句完成权限收回操作,权限的结果存入Oracle的数据字典中。 权限分为两类: 系统权限和对象权限
系统权限
是在数据库中执行某种特定操作的权利,系统权限并不针对某个特定的对象,而是针对整个数据库范围。常用的系统权限有:
- CREATE SESSION 连接到数据库上
- CREATE SEQUENCE 创建序列,序列是一系列数字,通常用来自动填充主键列
- CREATE SYNONYM 创建同名对象
- CREATE TABLE 创建表
- CREATE ANY TABLE 在任何模式中创建表
- DROP TABLE 删除表
- DROP ANY TABLE 删除任何模式中的表
- CREATE PROCEDURE 创建存储过程
- EXECUTE ANY PROCEDURE 执行任何模式中的存储过程
- CREATE USER 创建用户
- DROP USER 删除用户
- CREATE VIEW 创建视
对象权限
是针对特定的模式对象执行操作的权利,只能针对模式对象来设置和管理对象全新啊,这些对象包括 表、 视图、 存储过程 等常用的对象权限有:
- SELECT 允许执行查询操作
- INSERT 允许执行插入操作
- UPDATE 允许执行修改操作
- DELETE 允许执行删除操作
- EXECUTE 语序执行存储过程
用户
CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tabspace_name] [TEMPORARY TABLESPACE tabspace_name];
SQL> CONNECT system/1234
SQL> CREATE USER wang IDENTIFIED BY office;
因为用户wang还没有得到连接权限 所以使用wang登陆会出现错误
SQL> CONNECT wang/office
ERROR: ORA-01045: user WANG lacks CREAT SESSION privilege; logon denied
权限控制
SQL> GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO wang;
将CREATE SESSION 和 EXECUTE ANY PROCEDURE 授予所有用户
SQL> GRANT CREATE SESSION, EXECUTE ANY PROCEDURE TO PUBLIC;
回收权限
REVOKE system_privileges FROM user_name;
SQL> REVOKE CREATE TABLE FROM wang;
查看权限
查看数据字典中的user_sys_privs 系统权限 user_tab_privs_recd 对象权限
SQL> SELECT * FROM user_sys_privs;