oracle用户授权

一、用户与模式

    用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作

         SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象

         SYSTEM用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象

    模式(schema):是某个用户拥有所有对象的集合。具有创建对象权限并创建了对象的用户称为拥有某个模式

       注意:创建数据库对象(视图,表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户

 

二、ORACLE权限:

    系统权限:允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等

    对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等

 

  1.系统权限

    超过一百多种有效的权限(SELECT * FROM SYSTEM_PRIVILEGE_MAP查)

    授予用户系统权限

       GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...]

       [WITH ADMIN OPTION];

 

       PUBLIC     所有用户

             role     角色:(权限的集合)

       WITH ADMIN OPTION 使用户同样具有分配权限的权利,可将此权限授予别人

    

     如:grant create session to xiufeng; 窗口

         grant create table to xiufeng; 建表

         grant unlimited tablespace to xiufeng; 使用表空

     销权限:

              revoke create table from xiufeng;

              revoke unlimited tablespace from xiufeng

 

    2.对象权限

    有两个用户:user1user2,都是在库TEST,分别有表user1.table1,user2.table2

    但是用user1登录的时候,user2上表就不能用,此时就可以使用grant命令了:

    GRANT privilege [, ...] ON object [, ...]    TO  { PUBLIC | GROUP group | username }

        ALL:所有对象权限

        PUBLIC:授给所有的用户

        WITH GRANT OPTION:允许用户再次给其它用户授权

    grant insert,update,delete on user2.bable2 to user1   此时,user1用户就可以操作user2用户的table2表了,user1下,select * from user2.table2.

       限可以控制到列的限:   grant updatename on xiufeng to xiufengtest

                                     

  3.看用户权限: 提供系信息的视图Oracle中称数据字典

        ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USERALL DBA,许多数据字典视图包含相似的信息。

   USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信

   ALL_*有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息

   DBA_*关整个数据库中对象的信息

  (这里的*可以为TABLESINDEXESOBJECTSUSERS等。)

  1.1查看所有用户

  1.select * from dba_user;

  2.select * from all_users;

  3.select * from user_users;

  1.2查看用户系统权限

  1.select * from dba_sys_privs;

  2.select * from all_sys_privs;

  3.select * from user_sys_privs;

  1.3查看用户对象权限

  1.select * from dba_tab_privs;

  2.select * from all_tab_privs;

  3.select * from user_tab_privs;

  1.4.查看所有角色

  1.select * from dba_roles;

  1.5.查看用户所拥有的角色

  1.select * from dba_role_privs;

  2.select * from user_role_privs;

 

 

三.进阶:

  1.不同库下授权:

    命令格式
    grant
权限 on 数据库名.表名 to 用户名@登陆方式 identified by 'password1';

    回收授于用户的权限
    命令格式为:
    revoke
权限 on 数据库名.表名 from 用户名@登陆方式;

 

  2.角色:(限的集合)

    create role myrole

    grant create table to myrole

    grant create session to myrole

    grant drop any table to myrole

    grant  myrole to hong12345 

    说明:有些系统权限无法予角色;        

    create table(表示可以自己建表      

    create any table (表示可以任意用户创建表)        

    alter  table  (不存在)     

    alter any table(表示可以任意修改用表)        

    drop table    (不存在)   

    drop any  table(表示可以任意除用表)

 

 

 

 

你可能感兴趣的:(oracle,授权)