oracle 10g 管理权限和角色,以及有关方面的数据字典的使用方法总结
2011-11-14 14:11
851 查看
(提示:若要转载,请标明出处,谢谢)
管理权限和角色笔记目录:
一权限:系统权限和对象权限
系统权限
对象权限
二.角色
1角色的目的:简化权限的管理,是权限管理的方式
2角色分类:系统预定义角色 和 自定义角色
(一)系统预定义角色
(二)自定义角色
3.删除角色
三.在数据字典中查询某个角色或用户所对应的权限
1以用户为中心
2以角色为中心
3oracle中系统权限的总数
4 oracle中对象权限的总数
重要:结论1,结论2,结论3
一权限:系统权限和对象权限
系统权限
1 什么是系统权限??
用户针对数据库的一些权限,比如:建立数据库,建立表等对象,登录数据库等等。
2如何查询oracle中的所有的系统权限??
select * from system_privilege_map;
3常见角色中所包含的系统权限:
(1)CONNECT角色
CREATE SESSION权限,没有对象权限
(2)RESOUCE角色,没有对象权限
create table, create trigger, create procedure, create sequence,
create clustor, create type, create indextype, create operator
4.授予系统权限
(1)with admin option
一般情况下,系统权限的授予是由DBA完成的。
如果用其他用户A而并非DBA来授予系统权限,则要求该用户A必须具有“with admin option”。
查询某个用户所具有的系统权限(假设用户为vendition)
方法一:直接查询用户本身数据字典user_sys_privs
查询数据字典user_sys_privs。例如
select username, privileges, admin_option from user_sys_privs
在结果中,“ADM”是“admin_option的缩写”“系统权限传递参数”,NO表示该权限不允许被传递,YES表示可以
方法二:间接通过一定条件在oracleDBMS中查询
select * from dba_sys_privs where grantee=’VENDITION’;
5.回收系统权限
对象权限
对象权限:
对象权限:某个特定用户对其他用户的的数据对象的的操作权限。
一个用户A去访问另一个用户B所对应的方案中的对象的权限,就叫做“对象权限”
查询对象权限:
方法一: select * from user_tab_privs;
注意另一种方法dba_tab_privs+where grantee=’用户名’;
方案:方案的名字和用户的名字是一样的,而且方案和系统权限以及对象权限是一点都不搭边的。方案中包含各种各样的数据对象。
注意:对象权限是谁赋予的,回收时就要这个用户来回收,并不是所有的兑现权限都能通过DBA来回收。
二.角色
1
1.1) 角色的概念:一系列系统权限的集合。Oracle认为,当一个数据库管理员建立一个数据库后,往往需要一些基本的权限,于是从系统权限中挑出一部分权限,将其交给“角色”,所以角色就像权限的批量授权。
1.2)角色的目的:简化权限的管理,是权限管理的方式
在oracle种,所有的角色都可以通过“select * from dba_roles”(oracle中一般包含25中角色)
注意:
视图dba_roles,保存了oracleDBMS中所有现存的角色,包含已经被其他用户使用的和未被其他用户使用的所有角色
视图dba_role_privs,仅仅保存了已经被其他用户使用的角色,不包含没有被用户使用的角色。
这也就是为什么“dba_roles”可以被用来查询oracle DBMS中包含的所有角色,而“dba_role_privs”不可以这样用
2角色分类:系统预定义角色 和 自定义角色
(一) 系统预定义角色
(1)CONNECT角色
CREATE SESSION权限,没有对象权限
(2)RESOUCE角色,没有对象权限
create table, create trigger, create procedure, create sequence,
create clustor, create type, create indextype, create operator
(3)DBA角色
Dba角色具有所有的系统权限,以及“with admin oprion”选项。
默认的DBA用户为:sys和system,他们可以将任何系统权限授予其他用户。
但要注意的是:DBA角色不具备“sysdba”和“sysoper”的特权(启动和关闭数据库)
(二) 自定义角色
根据自己的需要来定义一个角色。
一般是DBA来创建。如果是别的用户来创建,则需要有“create role”的权限。
在创建自定义角色时,可以制定验证方式(不验证,数据库验证等)
验证方式的作用:为了防止将来要修改角色时,要不要输入一个密码
方式一:如果角色是公用的角色,可以采用不验证的方式建立角色
例题:建立一个名为“myrole1”的角色,并且这个角色拥有“连接数据库,对scott用户下的emp表能够查看,更新,删除,增加的权限。”
第一步:建立角色名“空壳”
create role 角色名 not identified;(注意:此时创建的角色没有任何权限,只是一个空壳)
create role myrole1 not identified;
第二步:给“空壳”角色授权。
(注意:
1这些权限的授予一定要有系统管理员(DBA用户)来完成
2一般情况下,对于对象权限,要查看哪个用户方案下的对象,就由这个用户来授权
)
sql>conn system/zjrodger
sql>grant create session to myrole1 with admin option;
sql>conn scott/oracle
sql>grant select on emp to myrole1;
sql>grant update on emp to myrole1;
sql>grant insert on emp to myrole1;
sql>grant delete on emp to myrole1;
这后再将这个myrole1的角色赋给一个用户,这个用户就具有了这个角色中的所用权限了
3.删除角色
删除自定义的角色后,即使某个用户拥有该角色,也无法使用该角色中的权限了。
4
5.有待细研究
三.在数据字典中查询某个角色或用户所对应的权限
1以用户为中心
(1)查询一个用户所具有的系统权限
方法一直接:select privilege from user_sys_privs;
方法二间接:dba_sys_privs+where grantee=’用户名’;
(2)查询一个用户所具有的对象权限
方法一直接:select * from user_tab_privs;
方法二间接:dba_tab_privs+where grantee=’用户名’;
(3) 查看一个给定用户具有哪些角色(假设查询vendition用户拥有那些角色)
方法一直接:前提是先要登录到指定用户下
select granted_role from user_role_privs;
方法二间接:DBA权限
select granted_role from dba_role_privs where grantee='VENDITION';
2以角色为中心
(1)查看一个给定用户具有哪些角色(假设查询vendition用户拥有那些角色)
方法一直接:前提是先要登录到指定用户下
select granted_role from user_role_privs;
方法二间接:DBA权限
select granted_role from dba_role_privs where grantee='VENDITION';
(2)查看某个角色(比如:RESOURCE角色)中分别拥有哪些权限——系统权限和对象权限
系统权限:
方法一直接:select * from role_sys_privs where role=’RESOURCE’ ;
方法二间接:select privilege from dba_sys_privs where grantee='RESOURCE';
对象权限:
方法一直接:select * from role_tab_privs where role=’RESOURCE’ ;
方法二间接:select grantee, privilege from dba_tab_privs where grantee=' RESOURCE ';
(3)数据库中总共有哪些角色?
select * from dba_roles order by role; 结果 33
select distinct granted_role from dba_role_privs order by granted_role; 结果32
一个简单的方法,直接通过sql语句就能找出dba_roles 比 dba_role_privs多的那个角色:
select role from dba_roles where role not in (select granted_role from dba_role_privs );
结果
dba_roles 比 dba_role_privs多的那个角色为:GLOBAL_AQ_USER_ROLE
结论1:
视图dba_roles和视图dba_role_privs的区别(自己的猜想)
视图dba_roles,保存了oracleDBMS中所有现存的角色,包含已经被其他用户使用的和未被其他用户使用的所有角色
视图dba_role_privs,仅仅保存了已经被其他用户使用的角色,不包含没有被用户使用的角色。
这也就是为什么“dba_roles”可以被用来查询oracle DBMS中包含的所有角色,而“dba_role_privs”不可以这样用
3oracle中系统权限的总数
(1)select name from system_privilege_map;; 结果166
(2) select distinct privilege from dba_sys_privs; 结果161
通过“select name from system_privilege_map where name not in (select distinct privilege from dba_sys_privs);”可以查到数据字典system_privilege_map比数据字典dba_sys_privs多的系统权限为:
SYSOPER
EXEMPT ACCESS POLICY
EXEMPT IDENTITY POLICY
ALTER ANY OPERATOR
SYSDBA
但要注意的是:DBA角色不具备“sysdba”和“sysoper”的特权(启动和关闭数据库)
结论2:要查看数据库中“系统权限”的总数就应该选“system_privilege_map”,而不是“dba_sys_privs”
结论3:
“dba_roles”和“system_privilege_map”这两个视图都是静态的,他们都包含各自相关的全部信息——包括已经被用户(角色)使用的和未被使用的。
“xxxx_role/sys/tab_privs”只包含已经被用户或者角色使用的角色、系统权限或者对象权限
4 oracle中对象权限的总数
select distinct privilege from dba_tab_privs; 结果17
管理权限和角色笔记目录:
一权限:系统权限和对象权限
系统权限
对象权限
二.角色
1角色的目的:简化权限的管理,是权限管理的方式
2角色分类:系统预定义角色 和 自定义角色
(一)系统预定义角色
(二)自定义角色
3.删除角色
三.在数据字典中查询某个角色或用户所对应的权限
1以用户为中心
2以角色为中心
3oracle中系统权限的总数
4 oracle中对象权限的总数
重要:结论1,结论2,结论3
一权限:系统权限和对象权限
系统权限
1 什么是系统权限??
用户针对数据库的一些权限,比如:建立数据库,建立表等对象,登录数据库等等。
2如何查询oracle中的所有的系统权限??
select * from system_privilege_map;
3常见角色中所包含的系统权限:
(1)CONNECT角色
CREATE SESSION权限,没有对象权限
(2)RESOUCE角色,没有对象权限
create table, create trigger, create procedure, create sequence,
create clustor, create type, create indextype, create operator
4.授予系统权限
(1)with admin option
一般情况下,系统权限的授予是由DBA完成的。
如果用其他用户A而并非DBA来授予系统权限,则要求该用户A必须具有“with admin option”。
查询某个用户所具有的系统权限(假设用户为vendition)
方法一:直接查询用户本身数据字典user_sys_privs
查询数据字典user_sys_privs。例如
select username, privileges, admin_option from user_sys_privs
在结果中,“ADM”是“admin_option的缩写”“系统权限传递参数”,NO表示该权限不允许被传递,YES表示可以
方法二:间接通过一定条件在oracleDBMS中查询
select * from dba_sys_privs where grantee=’VENDITION’;
5.回收系统权限
对象权限
对象权限:
对象权限:某个特定用户对其他用户的的数据对象的的操作权限。
一个用户A去访问另一个用户B所对应的方案中的对象的权限,就叫做“对象权限”
查询对象权限:
方法一: select * from user_tab_privs;
注意另一种方法dba_tab_privs+where grantee=’用户名’;
方案:方案的名字和用户的名字是一样的,而且方案和系统权限以及对象权限是一点都不搭边的。方案中包含各种各样的数据对象。
注意:对象权限是谁赋予的,回收时就要这个用户来回收,并不是所有的兑现权限都能通过DBA来回收。
二.角色
1
1.1) 角色的概念:一系列系统权限的集合。Oracle认为,当一个数据库管理员建立一个数据库后,往往需要一些基本的权限,于是从系统权限中挑出一部分权限,将其交给“角色”,所以角色就像权限的批量授权。
1.2)角色的目的:简化权限的管理,是权限管理的方式
在oracle种,所有的角色都可以通过“select * from dba_roles”(oracle中一般包含25中角色)
注意:
视图dba_roles,保存了oracleDBMS中所有现存的角色,包含已经被其他用户使用的和未被其他用户使用的所有角色
视图dba_role_privs,仅仅保存了已经被其他用户使用的角色,不包含没有被用户使用的角色。
这也就是为什么“dba_roles”可以被用来查询oracle DBMS中包含的所有角色,而“dba_role_privs”不可以这样用
2角色分类:系统预定义角色 和 自定义角色
(一) 系统预定义角色
(1)CONNECT角色
CREATE SESSION权限,没有对象权限
(2)RESOUCE角色,没有对象权限
create table, create trigger, create procedure, create sequence,
create clustor, create type, create indextype, create operator
(3)DBA角色
Dba角色具有所有的系统权限,以及“with admin oprion”选项。
默认的DBA用户为:sys和system,他们可以将任何系统权限授予其他用户。
但要注意的是:DBA角色不具备“sysdba”和“sysoper”的特权(启动和关闭数据库)
(二) 自定义角色
根据自己的需要来定义一个角色。
一般是DBA来创建。如果是别的用户来创建,则需要有“create role”的权限。
在创建自定义角色时,可以制定验证方式(不验证,数据库验证等)
验证方式的作用:为了防止将来要修改角色时,要不要输入一个密码
方式一:如果角色是公用的角色,可以采用不验证的方式建立角色
例题:建立一个名为“myrole1”的角色,并且这个角色拥有“连接数据库,对scott用户下的emp表能够查看,更新,删除,增加的权限。”
第一步:建立角色名“空壳”
create role 角色名 not identified;(注意:此时创建的角色没有任何权限,只是一个空壳)
create role myrole1 not identified;
第二步:给“空壳”角色授权。
(注意:
1这些权限的授予一定要有系统管理员(DBA用户)来完成
2一般情况下,对于对象权限,要查看哪个用户方案下的对象,就由这个用户来授权
)
sql>conn system/zjrodger
sql>grant create session to myrole1 with admin option;
sql>conn scott/oracle
sql>grant select on emp to myrole1;
sql>grant update on emp to myrole1;
sql>grant insert on emp to myrole1;
sql>grant delete on emp to myrole1;
这后再将这个myrole1的角色赋给一个用户,这个用户就具有了这个角色中的所用权限了
3.删除角色
删除自定义的角色后,即使某个用户拥有该角色,也无法使用该角色中的权限了。
4
5.有待细研究
三.在数据字典中查询某个角色或用户所对应的权限
1以用户为中心
(1)查询一个用户所具有的系统权限
方法一直接:select privilege from user_sys_privs;
方法二间接:dba_sys_privs+where grantee=’用户名’;
(2)查询一个用户所具有的对象权限
方法一直接:select * from user_tab_privs;
方法二间接:dba_tab_privs+where grantee=’用户名’;
(3) 查看一个给定用户具有哪些角色(假设查询vendition用户拥有那些角色)
方法一直接:前提是先要登录到指定用户下
select granted_role from user_role_privs;
方法二间接:DBA权限
select granted_role from dba_role_privs where grantee='VENDITION';
2以角色为中心
(1)查看一个给定用户具有哪些角色(假设查询vendition用户拥有那些角色)
方法一直接:前提是先要登录到指定用户下
select granted_role from user_role_privs;
方法二间接:DBA权限
select granted_role from dba_role_privs where grantee='VENDITION';
(2)查看某个角色(比如:RESOURCE角色)中分别拥有哪些权限——系统权限和对象权限
系统权限:
方法一直接:select * from role_sys_privs where role=’RESOURCE’ ;
方法二间接:select privilege from dba_sys_privs where grantee='RESOURCE';
对象权限:
方法一直接:select * from role_tab_privs where role=’RESOURCE’ ;
方法二间接:select grantee, privilege from dba_tab_privs where grantee=' RESOURCE ';
(3)数据库中总共有哪些角色?
select * from dba_roles order by role; 结果 33
select distinct granted_role from dba_role_privs order by granted_role; 结果32
一个简单的方法,直接通过sql语句就能找出dba_roles 比 dba_role_privs多的那个角色:
select role from dba_roles where role not in (select granted_role from dba_role_privs );
结果
dba_roles 比 dba_role_privs多的那个角色为:GLOBAL_AQ_USER_ROLE
结论1:
视图dba_roles和视图dba_role_privs的区别(自己的猜想)
视图dba_roles,保存了oracleDBMS中所有现存的角色,包含已经被其他用户使用的和未被其他用户使用的所有角色
视图dba_role_privs,仅仅保存了已经被其他用户使用的角色,不包含没有被用户使用的角色。
这也就是为什么“dba_roles”可以被用来查询oracle DBMS中包含的所有角色,而“dba_role_privs”不可以这样用
3oracle中系统权限的总数
(1)select name from system_privilege_map;; 结果166
(2) select distinct privilege from dba_sys_privs; 结果161
通过“select name from system_privilege_map where name not in (select distinct privilege from dba_sys_privs);”可以查到数据字典system_privilege_map比数据字典dba_sys_privs多的系统权限为:
SYSOPER
EXEMPT ACCESS POLICY
EXEMPT IDENTITY POLICY
ALTER ANY OPERATOR
SYSDBA
但要注意的是:DBA角色不具备“sysdba”和“sysoper”的特权(启动和关闭数据库)
结论2:要查看数据库中“系统权限”的总数就应该选“system_privilege_map”,而不是“dba_sys_privs”
结论3:
“dba_roles”和“system_privilege_map”这两个视图都是静态的,他们都包含各自相关的全部信息——包括已经被用户(角色)使用的和未被使用的。
“xxxx_role/sys/tab_privs”只包含已经被用户或者角色使用的角色、系统权限或者对象权限
4 oracle中对象权限的总数
select distinct privilege from dba_tab_privs; 结果17
相关文章推荐
- ORACLE用户常用数据字典的查询使用方法
- Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- Oracle用户,权限,角色以及登录管理
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- 数据字典(选项)管理 的具体使用方法介绍 - 以审批流程类别管理为例(工作流类型管理)
- ORACLE用户常用数据字典的查询使用方法
- oracle的用户创建以及要注意的权限,角色,对象等管理
- 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方法]
- Oracle专题2之用户、权限、角色以及表空间的管理
- Oracle中数据字典的使用方法
- 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方法]
- 数据字典(选项)管理 的具体使用方法介绍 - 以审批流程类别管理为例(工作流类型管理)
- yii框架中findall方法取数据使用总结,包括select各种条件,where条件,order by条件,limit限制以及使用单纯sql语句query时占位符的使用等
- oracle 数据字典和动态性能视图数据 与用户权限角色查询
- Oracle用户,权限,角色以及登录管理【不错小结】
- 数据字典(选项)管理 的具体使用方法介绍 - 以审批流程类别管理为例(工作流类型管理)
- 四【用django2.0来开发】后台会员管理(二) ModelForm表单的使用方法以及数据验证
- Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表