oracle管理角色和权限
副标题[/!--empirenews.page--]
介绍 这一部分主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里。 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必需为其授予系统的权限;如果用户要访问其它方案的对象,则必需为其授予对象的权限,为了简化权限的管理,可以使用角色。 ? 权限: 权限是指执行特定类型sql命令或是访问其它方案对象的权利,包括系统权限和对角权限两种。 ? 系统权限介绍 系统权限是指执行特定类型sql命令的权利,它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。oracle提供了160多中系统权限。常用的有: create session 连接数据库; create view 建视图; create procedure 建过程、函数、包; create cluster 建簇; create table 建表; create public synonym 建同义词; create trigger 建触发器; ? 显示系统权限 oracle提供了166系统权限,而且oracle的版本越高,提供的系统权限就越多,我们可以查询数据字典视图system_privilege_map,可以显示所有系统权限。 基本语法: select * from system_privilege_map order by name; oracle11GR2中提供了208个系统权限。 ? 授予系统权限 一般情况,授予系统权限是有dba完成的,如果用其它用户来授予系统权限,则要求用户必需具有grant any privilege的系统权限在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授予其它的用户或是角色。为了让大家快速入门,我们举例说明: 1、创建两个用户ken,tom初始阶段他们没有任何权限,如果登陆就会出错误的信息。 1.1、创建两个用户,并指定密码。 SQL>create user ken identified by ken; SQL>create user tom identified by tom; ? 2、给用户ken授权 2.1、授予create session和create table权限时带with admin option 授权基本语法: grant 权限名称 to 用户名; SQL>grant create session to ken with admin option; SQL>grant create table to ken with admin option; ? 2.2、授予create view时不带with admin option SQL>grant create view to ken; ? 3、给用户tom授权 我们可以通过ken给tom授权,因为with admin option是加上的。当然也可以通过dba给tom授权,我们就用ken给tom授权: SQL>grant create session to tom with admin option; SQL>grant create table to tom with admin option; SQL>grant create view to tom;//报错,由于ken被dba授权时没有带with admin option参数,所以ken没有权限对tom进行create view的授权。 ? 回收系统权限 一般情况下,回收系统权限是dba来完成的,如果其它的用户来回收系统权限,要求该用户必需具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成,当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限级联收回问题?(不会级联回收权限) system==>>ken==>>tom (create session)(create session)(create session) 用system执行如下操作: revoke create session from ken;请思考tom还能登录吗?可以登录。 ? 回收系统权限基本语法: revoke 系统权限名 from 用户名; 特别说明:系统权限的回收不是级联回收。 ? 对象权限介绍 访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必需具有对象的权限,比如smith用户要访问scott.emp表(scott:方案,emp:表) 则必需在scott.emp表上具有对象的权限。常用的权限有: alter 修改、delete 删除、select 查询、insert 添加、update 修改、index 索引、references 引用、execute执行。 查看oracle提供的所有的对象权限(仅dba用户可以查看) select distinct privilege from dba_tab_privs; ? 重要查询文档 查看当前用户的表(自己的表) select table_name from user_tables; ? 查询oracle中所有的系统权限,一般是dba select * from system_privilege_map order by name; ? 查询oracle中所有的角色,一般是dba select * from dba_roles; ? 查询oracle中所有对象权限,一般是dba select distinct privilege from dba_tab_privs; ? 查询数据库的表空间 select tablespace_name from dba_tablespaces; ? 查询当前用户具有什么样的系统权限 select * from user_sys_privs; ? 查询当前用户在别人的表上,具有什么样的对象权限 select * from user_tab_privs; (查看对表的权限) select * from user_col_privs; (查看对表的列的权限) ? 查询某个用户具有怎样的角色 select * from dba_role_privs where grantee=‘用户名‘; ? 查看某个角色包括哪些系统权限。 select * from dba_sys_privs where grantee=‘DBA‘; 或者是: select * from role_sys_privs where role=‘DBA‘; ? 查看某个角色包括的对象权限 select * from dba_tab_privs where grantee=‘角色名‘; ? 当某个角色具有什么样的系统权限或对象权限,也可通过pl/sql developer工具直接查看即可。 ? 显示执行的错误信息 在执行完语句后,就执行下面的语句 show error; ? 显示oracle某个操作用时 set timing on; ? 授权对象权限 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |