数据控制语言完成授予和回收用户对数据库的使用权限(由DBA决定)。
Oracle通过数据控制语言的GRANT语句完成权限授予操作,REVOKE语句
完成权限收回操作。授予的结果存入Oracle的数据字典中,当用户提出操作
数据库请求时,Oracle会根据对数据字典中授权情况的检查,决定是
执行还是拒绝该操作请求。
一.数据库权限
--权限是指能够在数据库中执行某种操作或者访问某个数据库对象的权力。
--Oracle中的权限分为两类,即系统权限和对象权限。
1.系统权限System Privileges
系统权限是在数据库中执行某种特定操作的权力。系统权限并不针对某一个
特定的对象,而是针对整个数据库范围。
常用系统权限种类及功能说明:
CREATE SESSION --连接到数据库上
CREATE SEQUENCE --创建序列。序列是一系列数字,通常用来自动填充主键列。
CREATE SYNONYM --创建同名对象。同名对象用于引用其他模式中的表
CREATE TABLE --创建表
CREATE ANY TABLE --在任何模式中创建表
DROP TABLE --删除表
DROP ANY TABLE --删除任何模式中的表
CREATE PROCEDURE --创建存储过程
EXECUTE ANY PROCEDURE --执行任何模式中的存储过程
CREATE USER --创建用户
DROP URSER --删除用户
CREATE VIEW 创建视图
2.对象权限Object Privileges
对象权限是针对某个特定的模式对象执行操作的权力。只能针对模式对象来设置和管理对象权限。
这些模式对象包括表、视图、存储过程等。
常用对象权限种类及功能说明:
SELECT --允许执行查询操作
INSERT --允许执行插入操作
UPDATE --允许执行更新操作
DELETE --允许执行删除操作
EXECUTE --允许执行存储过程
3.用户
用户是Oracle数据库的合法使用者。创建Oracle时,系统自动生成SYSTEM和SYS两个用户
(1)建立用户
语法格式:
CREATE USER user_name
IDENTIFIED BY password
[DEFAULT TABLESPACE tabspace_name] --忽略时,默认使用SYSTEM表空间
[TEMPORARY TABLESPACE tabspace_name] --忽略时,默认使用SYSTEM表空间
CONNECT system/cm
CREATE USER cm IDENTIFIED BY office;
CONNECT cm/office --无法连接ORACLE。
CONNECT system/cm
CREATE USER xiaoli IDENTIFIED BY finance
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
CONNECT cm/office --无法连接ORACLE。
(2)修改用户密码
语法格式:
ALTER USER user_name IDENTIFIED BY newpassword;
CONNECT system/huali1963
ALTER USER wang IDENTIFIED BY gold;
(3)删除用户
语法格式
DROP USER user_name [CASCADE];
CONNECT system/huali1963
DROP USER wang;
二、权限控制
新建用户必须授予某种权限才能使用Oracle数据库资源。
1.系统权限控制
系统权限控制包括系统权限的授予和收回。
(1)授予用户系统权限
语法格式:
GRANT system_privileges_list TO user_name [WITH ADMIN OPTION];
--username为PUBLIC时,指定所有用户。
--system_privileges_list,指授予的权限列表。
--[WITH ADMIN OPTION]指定被授权用户可以将其获得的权限再授予其他用户。
CONNECT system/huali1963
GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO xiaoli;
GRANT EXECUTE ANY PROCEDURE TO xiaoli WITH ADMIN OPTION;
GRANT EXECUTE ANY PROCEDURE TO zhang;
GRANT EXECUTE ANY PROCEDURE TO PUBLIC;
(2) 查看授予用户的的系统权限(user_sys_privs视图)
CONNECT xiaoli/finance
SELECT * FROM user_sys_privs;
(3)收回用户系统权限
语法格式:
REVOKE system_privileges FROM user_name;
CONNECT system/cm
REVOKE CREATE TABLE FROM xiaoli;
2.对象权限控制
(1)授予用户对象权限
语法格式:
GRANT object_privileges_list ON table_name TO user_name [WITH GRANT OPTIONS];
CONNECT system/cm
GRANT SELECT, INSERT, UPDATE ON department TO xiaoli;
CONNECT system/cm
GRANT UPDATE(wage, bonus) ON teachers TO xiaoli; --指定wage,bonus列上具有更新权限。
GRANT SELECT ON students TO xiaoli WITH GRANT OPTION;
CONNECT xiaoli/finance
GRANT SELECT ON system.students TO zhao;
(2)查看授予用户的对象权限(user_tab_privs_recd视图)
CONNECT xiaoli/finance
SELECT owner, table_name, grantor, privilege, grantable
FROM user_tab_privs_recd;
(3)收回用户对象权限
语法格式:
REVOKE object_privileges FROM user_name;
CONNECT system/cm
REVOKE INSERT ON departments FROM xiaoli;
CONNECT xiaoli/finance
REVOKE SELECT ON system.students FROM zhao;