管理Oracle权限,角色
当新创建一个用户的时候它什么权限都没有,就连基本的登录权限都没有
权限:系统权限,对象权限
系统权限是什么? 系统权限有哪些?
如何赋给系统权限?
对象权限一样这几个问题
角色为了解决权限的管理
系统回收权限不是级联回收
with admin option 系统权限传递
赋予对象权限
grant update on emp(salary) to otheruser
grant index on scott.emp to otheruser
授权with grant option 的话则改权限可以继续传递
授予角色不能有这个选项
对象权限的回收是级联回收的
revoke select on emp from theuser
角色
预定义角色
如connect,resource,dba
connect 的权限
alter session,create cluster
create dababase link,create session
create table,create view
create sequence
resource的权限,隐藏了unlimited tablespace 系统权限
create cluster,creat indextype
create table ,create sequence
create type,create procedure
create trigger
DBA 的权限
具有所有的系统权限,及with admin option,
没有sysdba,sysoper(启动关闭数据库)
自定义角色 一般dba创建,如果普通用户自定义角色必须要create role权限,建立角色的时候可以指定验证方式
1 创建角色 create role 角色名 not identified;
2 创建角色(数据库验证)
这种方式必须角色名,口令放在数据库。当激活该角色时,必须提供口令,创建角色的时候需要为其提供口令
create role 角色名 indentified by 密码
当创建角色,角色没任何权限,
grant create session to 角色名 [with admin option]
赋予角色
grant 角色名 to 用户 [with admin option]
删除角色,dba执行,如果普通用户需要有drop any role系统权限
drop role
显示所有角色
select * from dba_roles ;
显示角色具有的系统权限
select privilage,admin_option from role_sys_privs where role = ' 角色名' ;
显示角色具有的对象权限 dba_tab_privs
精细访问控制
用户使用函数,策略实现更加细微的安全访问控制。如果使用精细访问控制,当客户段发出sql如select ,insert ,update...,Oracle会制动在sql语句后追加谓语(where ...)通过这样的可以使得不同的数据库户访问相同的表,返回不同的数据。