Oracle(17)如何管理权限和角色

来源:互联网 发布:可编程控制器 单片机 编辑:程序博客网 时间:2024/05/20 16:45

①系统权限主要指对数据库管理的操作以及对数据对象的操作(创建、删除、修改);
对象权限主要指对数据对象的操作(CURD)。
②角色本质就是多个权限的集合,用于简化对权限的管理,分为预定义角色和自定义角色。
③刚刚建立的用户,没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,必须为其授予系统的权限;如果要访问其他方案的对象,必须为其授予对象的权限。


  • 系统权限是指执行特定类型的sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如create table权限,可以在其方案中建表,当用户拥有create any table权限时,可以在任何方案中建表。Oracle提供了160多种系统权限。常用的有:
    create session 链接数据库 create table 建表
    create view 建视图 create public synonym 建同义词
    create procedure 建过程、函数、包 create trigger 建触发器
    create cluster 建簇
  • 查看系统权限
    Oracle的所有系统权限存放在数据字典视图system_privilege_map中
select * from system_privilege_map order by name;

④授予权限
授予权限是由dba完成的,该用户拥有grant any privilege权限,在授予系统权限时如果带有with admin option,则被授予权限的用户可以继续向别的用户转发权限。

grant 权限名称 to 用户名

⑤回收权限
回收系统权限是由dba来完成的,如果其他用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成。

revoke create session from ken;

  • 对象权限
    指访问其他方案对象的权利,用户可以直接访问自己方案的对象,但如果要访问别的方案的对象,则必须具有对象的权限。
    常用的有:
    alter修改 delete删除 select查询 insert添加 update修改 index索引 references引用 execute执行
    查看Oracle提供的所有对象权限(dba可以查看)
select distinct privilege from dba_tab_privs;
-- 授予对象权限grant 对象权限 on 数据库对象 to  用户名[with grant option];grant select on users to xiaohong;grant all on users to xiaohong;-- 回收对象权限  对象权限是级联回收的revoke 对象权限 on 数据库对象 from 用户名;
-- 查询当前用户有什么系统权限select * from user_sys_privs;-- 查询当前用户在 别人的表 上具有什么样的对象权限select * from user_tab_privs;  --对表的权限select * from user_col_privs; -- 对表的列的权限

  • 预定义角色
    是指Oracle所提供的的角色,每种角色都用于执行一些特定的管理任务。常见的预定义角色有connect,resource,dba。
    具有一般应用开发人员需要的大部分角色,只要给用用户授权connect和resource就够了。
grant 角色名 to 用户;

使用system用户,查询预定义角色:

select * from dba_roles;-- 查看某个用户有哪些角色  用户名必须大写select * from dba_role_privs where grantee='用户名';-- 查询某个角色包含的权限select * from dba_sys_privs where grantee='DBA';select * from role_sys_privs where role='DBA';

  • 自定义角色
    有create role系统权限的用户才能定义角色。在建立角色时可以指定验证方式(不验证,数据库验证):
    ①建立角色(不验证) 常用方式
    如果角色是公用的角色,可以采用不验证的方式建立角色。
create role 角色名 not identified;

②建立角色(数据库验证)
采用这种方式时,角色名、口令存放在数据库中。当激活该角色时,必须提供口令。建立角色时,需要为其提供口令

create role 角色名 identified by xxxxx;
--- 创建角色,分配权限create role myrole not identified;grant create session to myrole;grant select on scott.emp to myrole;grant insert on scott.emp to myrole;grant update on scott.emp to myrole;--- 指定给某个用户grant myrole to xiaoming;--- 删除角色drop role myrole;
0 0
原创粉丝点击