Oracle的权限有三种类型:
Object privileges 对象权限
Role privileges 角色权限
System privileges 系统权限
Object privileges 对象权限
Role privileges 角色权限
System privileges 系统权限
(一)、对象权限
一般来说的,对象权限,是针对一个用户对某些表,视图,函数,存储过程的访问权限
grant select, insert, update, delete on test_table to test_user; 赋予用户test_user对表test_table增删改查权限
grant select, insert, update, delete on test_table to test_user; 赋予用户test_user对表test_table增删改查权限
grant execute on F_zsd_test to test_user;
grant execute on PRO_zsd_test to test_user; 赋予用户test_user对函数和存储过程的执行权限
grant execute on PRO_zsd_test to test_user; 赋予用户test_user对函数和存储过程的执行权限
grant select, insert, update, delete on VIEW_P_test to test_user; 对视图VIEW_P_test增删改查权限
(二)、角色权限,最基础的是connect与resource的权限
(1). CONNECT角色:
--是授予最终用户的典型权利,最基本的
ALTER SESSION --修改会话
CREATE CLUSTER --建立聚簇
CREATE DATABASE LINK --建立数据库链接
CREATE SEQUENCE --建立序列
CREATE SESSION --建立会话
CREATE SYNONYM --建立同义词
CREATE VIEW --建立视图
(2). RESOURCE 角色: --是授予开发人员的
CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型
CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型
从dba_sys_privs里可以查到(注意这里必须以DBA角色登录):
select * from dba_sys_privs t where t.grantee='RESOURCE' order by priilege; 可以查看resource角色的权限
select * from dba_sys_privs t where t.grantee='CONNECT' order by priilege; 可以查看connect角色的权限
select * from dba_sys_privs t where t.grantee='RESOURCE' order by priilege; 可以查看resource角色的权限
select * from dba_sys_privs t where t.grantee='CONNECT' order by priilege; 可以查看connect角色的权限
所以,一般在企业中,对一般用户,只会赋予connect的权限,让他只有一些看,和链接数据库的操作。拥有自己的会话
对开发人员,就会connect和resource都会赋予,因为,给予开发人员可以create。
对开发人员,就会connect和resource都会赋予,因为,给予开发人员可以create。
(三)、系统权限
系统权限,会对所有的对象进行限制(例如,存储过程,表,簇,用户,序列等等)
grant create any cluster to test;
grant create any index to test;
grant create any procedure to test;
grant create any role to test;
grant create rollback segment to test;
grant create any sequence to test;
grant create any synonym to test;
......
可以查看相关系统权限列表
使用场景:
当你配置了一个生产库,要一个用户test的时候,这个用户只是只读用户,那么
就一般会给他一个select any table的系统权限
grant select any table to test; 就是赋予用户test查询任何表;
当你配置了一个生产库,要一个用户test的时候,这个用户只是只读用户,那么
就一般会给他一个select any table的系统权限
grant select any table to test; 就是赋予用户test查询任何表;
以上为个人笔记,学习用。