明留

将何所持,将何所往?此刻惜之!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::


权限(系统权限和对象权限)
   系统权限是指执行特定类型的sql命令的权利,控制用户可以执行的一个或是一组数据库操作。比如当用户具有Create TABLE权限时,可以在方案中建表。当用户具有Create any table权限时,可以在任何方案中建表,oracle提供了100多种系统权限。常用的有:Create (session、table、view、public sytxmym、procedure、trigger、cluster)可以通过查询数据字典视图System.privilige.map可以显示所有系统权限:select * from system.priviliege.map order by name;
   授予系统权限:一般情况下,授予权限是有dba完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将系统权限授予其他的用户或是角色。
   范例:1、创建用户
    Create user ken identified by ken123;
    Create user tom identified by tom123;[登录会提示错误]
         2、给用户授权
    1、grant Create session,create table to ken [with admin option];【这样就可以将这个权限往下授予其他的用户】
       2、grant create view to ken;【这样就不可以将这个权限往下授予其他的用户】
  3、在ken[或dba]下给用户tom授权
    grant create session, create table to tom;【可以授权】
    grant Create view to tom;【不成功】
 回收系统权限:一般情况下,回收也是有dba完成的,如果用户来回收系统权限,要求该用户必须有相应系统权限及授予系统权限的选项(with admin option),回收系统权限使用revoke来完成。但注意权限的回收不是级联的。
       范例:revoke Create session from ken;
 对象权限是指访问其他方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。比如smith要访问scoot.emp表(scott:方案, emp:表)
      常用的有:alter/delete/select/insert update/index/references/execute
 显示对象权限:通过数据字段视图可以显示用户或是角色所具有的对象权限。视图为dba_tab_pris
      范例:conn system/manger
         select distinc privilege from dba_tab_privs;
      select grantor,owner,table_name,privilege from dba_tab_privs where gruntee='blake'
 授予对象权限:在9i前,授予对象权限是由对象的所有者来完成的,如果用其他的用户来操作,则需要用户具有相应的(with grant option)权限,从9i开始,dba用户(sys,system)可以将任何对象上的对象权限授予其他用户。授予对象权限是用grant来完成。
 对象权限可以授予用户,角色和public,在授予权限时,如果带有with grant option选项,则可以将该权限转受给其他用户,但是要注意with grant option选项不能被授予角色。
 1、monkey用户要查询、修改、删除scott.emp的表数据,怎么操作?除此之外,还可以一次性将所有权限赋给monkey?
  conn system/manager as sysbba;
  Create user monkey identified by mon;
  grant create session to monkey;
  conn monkey/mon;
  select * from scott.emp;【报错】
        grant select[update|delete] on emp to monkey;接下来的操作就可以了成功 
       或这样:grant all on emp to monkey; 
 2、对monkey只可以修改scott.emp的表的sal字段,怎么操作?修改scott.emp的表的ename,sal字段,怎么操作?
    grant update on emp(sal) to monkey[with grant Option];
    grant update on emp(ename, sal) to monkey;
    回收权限:在9i中,收回对象权限可以由对象的所有者或dba用户(sys/system)来完成。收回后,用户就不能执行相应的sql命令,但是要注意的是对象的权限是被级联收回的。
 revoke 权限 on 方案.表名 to 用户;

用户管理(在oracle中可以对用户进行建立及授权的操作)创建/修改用户的语法:create /alter user 用户名 identified by 密码;
范例:create user test identified by test123;
管理员权限下使密码失效,语法如下:alter user 用户名 password expire;
要想创建用户,则首先应该使用管理员登录。创建用户之后,开启一个新的sqlplus窗口,并使用此用户进行登录,会提示用户没有session,无法登录。
   grant 权限1,权限2,... to 用户
也可以将一个用户的权限受予以外的用户,其语法如下: grant 权限1,权限2 ... on  用户.表 to 另一用户;
oracle将多个权限操作封装到角色中,其主要的两个角色:connect,resource。
同时也可以回收权限,语法如下:
  Revoke 权限1, 权限2.... on 用户.表 from 另一用户;
锁定用户和用户解锁语法如下:
 alter user 用户 account lock/unlock;
数据库备份与恢复,oracle中提供了两个命令参数分别是exp, imp;
--------------------------------------------------

posted on 2012-06-25 22:08  明留  阅读(1065)  评论(0编辑  收藏  举报