oracle权限及角色

来源:互联网 发布:数据录入员工作简单吗 编辑:程序博客网 时间:2024/05/21 20:21

1、权限授权及收回
系统权限
grant create session,create table to test with admin option;
revoke create session,create table from test;
对象权限
grant select on book to test with grant option;
revoke select on book from test;

系统权限
对象权限,
system的权限比sysdba的权限要低,他不能关闭数据库和启动数据库等权限

create session是授予登陆的权限
with admin option加管理员权限

系统的权限不依赖任何东西,所以级联授权后不级联收回
对象的权限互相依赖,级联授权的后级联的收回


connect system/manage
select * from auths;
create role select_role;
create role inseret_role identified by insert_role;//带有口令的角色
grant select on system.atuhs to select_role;
grant insert on system.auths to insert_role;
create user u7 identified by u7;
create user u8 identified by u8;
grant create session to u7,u8;
grant select_role,insert_role to u7;
connect u7/u7
select * from system.auths;
insert into system.auths value(3,3);
commit;
在以上语句中没有报错,是因为在默认情况下所有角色都是激活的
set role select_role;
select * from system.auths;
insert into system.auths values(4,4);
ERROR
在以上语句中报插入的错,是因为在当前会话一旦激活了一个角色,其他角色都是非激活的,激活了select_role的角色,insert_role的角色就变成了非激活,所以不能插入数据
set role insert_role;
ERROR
在以上语句中报错,是因为insert_role带有口令所以不能在当前会话下激活
set role insert_role identified by insert_role;
insert..
commit;
select..
ERROR
报错,是因为在当前会话没有激活select_role角色

set role all;
ERROR
报错,是因为在当前会话下如果角色中只要有一个角色有口令,就不能带all参数
connect system/manager
alter user u7 default role insert_role,select_role;
alter user u7 default role all;
connect u7/u7
select..;
insert..;
commit;
没有报错,在用户级可以带all参数激活所有的角色
默认情况下是所有的角色都是激活的,但如果在当前会话一旦激活一个角色,其他角色都是非激活的,但是退出会话重新登陆后所有的角色又都变为了激活状态;如果一个角色带有口令,在会话级的激活的时候需要带着口令,如果角色中只要有一个角色有口令,就不能带all参数,要带all参数必须到用户级去激活所有的操作。

2、角色
create role test_role;
grant create session to test_role;
grant test_user to test_role;
alter role test_role identified by test_role;
alter role manager not identified;
set role test_role identified by test_role;
set role none;全部角色失效
ser role test_role;使角色生效
alter user test_user default role none;使用户角色失效
alter user test_user default role all;使用户角色生效
drop role test_role;

 

原创粉丝点击