第二课 oracle中的用户,角色,权限

来源:互联网 发布:龙腾世纪3 捏脸数据 编辑:程序博客网 时间:2024/06/05 18:25

不管是什么类型的数据库,对数据库的管理,数据库的用户,角色和权限分配是最重要的几个概念:

1,oracle中的用户:

数据库可以有很多人使用,也就意味着有很多用户,sysdba和system是管理员,但同时他们也是用户,他们不仅可以处理数据库的数据,还可以管理其他用户,创建用户,删除用户等等。scott是个普通用户,他只能处理他权限范围内的数据。

创建用户:create user  用户名 indetified by 密码;     //只能用system或者sys账户创建用户

       删除用户: drop user 用户名;

     修改用户密码: password 用户名 密码;//修改当前用户,不需加用户名;

   需要注意的是,新创建的用户,连登入数据库的权利都没有,需要dba赋予此用户权限;这就引出了权限这个概念。


2,权限

   权限是指用户对数据库控制的能力。

   权限分为系统权限(用户对数据库访问的相关权限,建库,表,修改密码,create session权限等等)和

   对象权限(用户对其他用户的数据对象操作的权限);

sysdba和system可以授予其他用户系统权限,普通用户可以授予其他用户对象权限;

命令:

授予系统权限:  grant 权限名/角色名  to 用户名 with admin option;-- with admin option表示被授予权限的用户以后可以授此权限给其他用户;

授予对象权限:  grant 权限名/角色名  dml语句 on 表/列  to 用户名 with grant option;-- with grant option表示被授予权限的用户以后可以授此权限给其他用户;

收回权限:  revoke 权限名/角色名 from 用户名;//需要注意oracle中是采用级联收回权限的。

                         系统权限回收与对象权限回收的不同是对象权限时级联回收,而系统权限不会级联回收。


3,角色:具有一系列权限的组合。

为了简化授权过程,可以预定义或者自定义角色,使得角色具有一些权限的组合,然后把这个角色授予用户。

oracle中的角色有 connect dba,create session ,resource (此角色可以操作表)等;

角色分为预定义和自定义两种:

预定义角色:

1,  connect角色:一般具有开发人员所需要的大部分权限,当建立一个用户后,多数情况下,只要给用户授予connect和resource角色就够了;

connect角色具有的系统权限:alter session , createcluster,create database link, create session, create table, create view, createsequence

   2,resource角色:权限包括建立存储过程,触发器等。Unlimited tablespace,create cluster,create indextype, create sequence,createtype, create procedure, create trigger

3,dba角色: 具有所有的系统权限,但是不具备sysdba和sysoper的特权(启动和关闭数据库)权限;

 

自定义角色:

可以根据需要自己创建角色,create role 角色名字 not identified;  notidentified表示采用不验证的方式建立角色;公用角色;

                          Create role 角色名字 identified by 用户名;  当激活这样创建的角色时,需提供口令;

删除角色:

drop role :有dba执行;

如果角色被删除了,那被赋予这个角色的用户就没有这个角色的权限了。

 

显示角色信息:动态性能视图的dba_roles里存放了数据库所有角色信息,

Select * fromdba_roles;

Selectprivilege,admin_option from role_sys_privs where role=’角色名’;//显示角色具有的系统权限;

Dba_tab_privs:  存放角色所有的对象权限和列的权限;

Dba_role_privs: 显示某个用户所有的角色级当前角色;select grant_role,default_role from dba_role_privs where grantee=’角色’;

 

精细访问控制:通过定义一个策略如emp_acess,类似于profile规格文件,可以使得不同用户在执行相同语句时得到不同的查询结果。



4,用户管理:

    超级用户sys和系统用户system除了可以创建,删除用户,管理表外,还会对用户进行日常管理:

   比如说给用户制造规则等,用户必须遵守,否则会有措施。

  日常管理规则主要是通过使用profile来实现的。创建profile文件来存放规则,然后把这个规则施加于用户。

举例说明:

a:  规定用户xm 只能尝试3次登入数据库,如密码3此错误,锁定数据库2天;

    首先创建规则:create profile lock_account   limit   failed_login_attempts    3  password_lock_time ;

   把规则施加给xm:  alter user xm profile lock_account;

b: dba要求xm 10天修改密码一次,宽限期为2天,重读的密码10天后可用:

    create profile  myfile limit password_life_time 10 password_grace_time 2 password_reuse_time 10;

  alter user xm  profile myfile;

c:解锁

   alter user xm account unlock;

d,删除规则

   drop profile myfile cascade :  cascade为删除相关的一切