oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可让用户执行特定的命令集。例如,create table权限容许用户建立表,grant any privilege 权限容许用户授予任何系统权限。对象权限( database object privilege )可让用户可以对各个对象进行某些操做。例如delete权限容许用户删除表或视图的行,select权限容许用户经过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。
每一个oracle用户都有一个名字和口令,并拥有一些由其建立的表、视图和其余资源。oracle角色(role)就是一组权限(privilege)(或者是每一个用户根据其状态和条件所需的访问类型)。用户能够给角色授予或赋予指定的权限,而后将角色赋给相应的用户。一个用户也能够直接给其余用户受权。 数据库
ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,
许多数据字典视图包含类似的信息。
USER_*:有关用户所拥有的对象信息,即用户本身建立的对象信息。
ALL_*:有关用户能够访问的对象的信息,即用户本身建立的对象的信息加上其余用户建立的对象但该用户有权访问的信息。
DBA_*:有关整个数据库中对象的信息。 服务器
select username from dba_users;
查询全部用户session
select * from all_users
查询当前用户信息:oracle
select * from user_users
结果:ide
系统用户:测试
sys;//系统管理员,拥有最高权限spa
system;//本地管理员,次高权限3d
scott;//普通用户,密码默认为tiger,默认未解锁code
create user username identified by password;
username: 用户名,自定义对象
password: 密码,自定义
drop user username;
若是用户已经拥有本身的对象,则须要使用:cascade(级联)。能够强制删除用户的全部对象,而后删除用户。
drop user username cascade;
将权限受权给某个用户。
基本用法:
grant 权限 to 用户
受权dba
grant dba to username
示例:
受权链接和资源
grant connect,resource to demo; //受权链接、资源
受权可建立session,能够在服务器上进行链接
grant create session to demo;
应用测试:
受权建立、查询、更新、删除表的权限:
grant create any table to demo; //建立表 grant drop any table to demo; //删除表 grant alter any table to demo; //修改表
受权执行存储过程:
grant execute any procedure to demo
受权数据权限:
grant insert any table to demo; //增长数据 grant delete any table to demo; //删除数据 grant update any table to demo; //更新数据 grant select any table to demo; //查询数据
受权具体的表权限:
grant select on demo.students on demo; //将查询students的权限受权给demo
grant update on demo.students to demo;
revoke
基本用法:
revoke 权限 from 用户
撤销dba权限
revoke dba from demo;
撤销链接取取权限
revoke connect from demo
撤销建立表权限
revoke create any table from demo;
撤销某表的权限
revoke all on demo.students from demo;
查询系统全部权限
select * from system_privilege_map
查询全部对象权限
select * from table_privilege_map
查询角色拥有的权限
select * from role_sys_privs;
select * from role_tab_privs
查询用户系统权限
select * from dba_sys_privs;
select * from all_sys_privs; select * from user_sys_privs;
查询用户对象权限
select * from dba_tab_privs;
select * from all_tab_privs; select * from user_tab_privs;
Oracle为了兼容之前的版本,提供了三种标准的角色(role):connect、resource和dba。
1. connect role(链接角色)
临时用户,特别是那些不须要建表的用户,一般只赋予他们connectrole。connect是使用oracle的简单权限,这种权限只有在对其余用户的表有访问权时,包括select、insert、update和delete等,才会变得有意义。拥有connect role的用户还可以建立表、视图、序列(sequence)、簇(cluster)、同义词(synonym )、会话(session)和与其余数据库的链(link)。
2. resource role(资源角色)
更可靠和正式的数据库用户能够授予resource role。resource提供给用户另外的权限以建立他们本身的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
3. dba role(数据库管理员角色)
dba role拥有全部的系统权限,包括无限制的空间限额和给其余用户授予各类权限的能力。system由dba用户拥有。
一、建立角色
create role backer
二、受权
grant select any table to backer
三、撤销
revoke update any table from backer
四、分配角色,将角色权限授予给用户
grant backer to demo
五、将角色权限授予其余角色
grant backer to backer2
六、删除角色
drop role backer2
示例:
查询全部角色
select * from dba_roles
查询结果
查看当前用户角色
select * from role_sys_privs
查看当前用户管理的角色
select * from user_role_privs
select * from dba_role_privs