用户名:  密码:   
您当前的位置:首页 > SQL数据库 >  Oracle > 

第23讲 创建与删除角色命令,给角色授于权限,给用户授于角色,查询角色的权限和查询用户的角色命令

上次修改时间: 2015-09-24 16:30:08      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\SQL数据库相关\Oracle数据库学习\韩顺平.玩转oracle教程笔记1_30讲\      下一页

创建与删除角色命令,给角色授于权限,给用户授于角色,查询角色的权限和查询用户的角色命令

一、角色的基础概念
1.角色是一些系统权限和对象权限的集合,角色主要用户简化授权
例子:如给a,b,c三用户授于连接数据库和对scott.emp表的select,insert,update权限,则需3.*4=12次授权,当把这些权限打包赋于一个角色,再把这个角色授于用户只需1次授权。
2.每种角色有数种权限,如connect角色有8种权限,而dba角色具有所有对象权限,但没有系统的,比如启动与关闭数据库
3.角色分预定义角色和自定义角色
oracle大约有25种预定义角色,查询方法详见字典部分,常用的就有connect,resource,dba三种角色。
自定义角色,由有dba权限的创建,普通用户只要有create role权限也能创建角色。

二、创建角色命令(不验证,有验证的修改角色需要输入密码)
样式:create role 角色名 not identified;
create role myrole1 not identified; //创建一个名为myrole1的验证角色
create role myrole1 identified by shunping;//创建一个名为myrole1的验证角色,密码为shunping

三、给角色授于系统权限和对象权限命令
注:给角色授权与给用户授权方法相同,对象权限建议那个用户的表就由那个用户来授权
conn system/manager //使用system用户登录
grant create session to myrole1 with admin option; //给myrole1角色授于登录的权限,并允许这个角色的用户把登录的权限传递给其它用户或角色
conn scott/m123; //使用scott用户登录
grant select on emp to myrole1; //授于myrole1角色查询emp表的权限
grant update on emp to  myrole1;//授于myrole1角色修改emp表的权限
grant delete on emp tomyrole1;//授于myrole1角色删除emp表的权限

四、给用户分配角色命令,由dba来完成
conn system/manager; //使用system用户登录
create user along identified by m123; //创建名为along的用户
grant myrole1 to along ; //把myrole1用户分配给along用户
conn along/m123; //发现along用户已经有myrole1角色的登录权限
select * from scott.emp; //发现along用户已经有myrole角色对scott.emp表的查询权限的

六、删除角色命令
由dba来完成,普通用户需要有**权限才能删除,删除角色,授于该角色的用户权限也没有了
conn system/manager //使用system用户登录
drop role myrole1; //删除myrole1角色
conn along/m123; //删除myrole1角色后,属于该角色的along不能再登录

七、查询一个角色拥有的系统权限与对象权限,查询一个用户拥有的角色
conn system/manager;
select * from dba_roles; //查询所有角色
查询角色具有的系统权限:select privilege,admin_option from role_sys_privs where role='角色名';
查询角色具有的对象权限:见字典部分
查询一个用户具有的角色:
select granted_role,default_role from dba_role_privs where grantee='scott';//查询scott用户具有的角色
select granted_role,default_role from dba_role_privs where grantee='system';//查询system用户具有的角色
select granted_role,default_role from dba_role_privs where grantee='sys';//查询sys用户具有的角色

八、精细访问控制
用户可以使用函数,策略实现更细微的安全访问控制
类似在sql语句后再加where
可使不同用户在访问相同表返回不同的数据信息