Oracle数据库权限操作

基本概念:

结构化查询语言SQL:structured query language

 

数据定义语言DDL:data definition language(table structure)
 create table/alter table/drop table
  column      datatype         width        constraints
   列          数据类型        宽度            约束

 

数据操作语言DML:data manipulation language(table data)
 insert  delete  update  
 row

 

事物控制语言TCL:transaction control language
 commit rollback savepoint
 提交   回滚     保留点
 确认   取消  

 

数据查询语言DQL:data query language
 select

 

数据控制语言DCL:data control language(多用户时)
 grant revoke
 授权  回收权限

 

plsql、sqlplus、oracle区别与联系

1、plsql是oracle封装的SQL脚本语言,跟微软SQLSERVER的T-SQL一样,就是标准SQL语言之上加有自己的函数和一些特殊写法,比如字符串连接在sqlserver里是用“+”,在oracle里是“||”。

2、sqlplus是oracle的查询分析器,执行plsql语句的工具,跟微软sqlserver的查询分析器一样。”原文载自http://zqc-0101.iteye.com/blog/1190802

Oracle有3个默认用户:

       sys change_on_install [as sysdba]

       system manager

       scott tiger

sqlplus显示当前用户拥有哪些系统权限的命令:

       select * from user_sys_privs;

sqlplus显示当前用户拥有哪些表权限的命令:

       select * from user_tab_privs;

创建用户small且密码为small:

       create user small identified by small;

系统权限:

         授权:grant create session to small;       //授权small创建会话的权限

               grant create table to small;             //授权small建表的权限

               grant unlimited tablespace to small;     //授权small无限制表空间的权限

               grant create session to public;          //授权给所有用户

     回收权限:revoke session from small;

               revoke create table from small;

               revoke unlimited tablespace from small;

对象权限(以另一个用户lee为对象,lee有一个mytable表):

       grant select on mytable to small;          //赋予small操作lee的mytable表的查询权限

       grant all on mytable to small;

       revoke select on mytable from small;       //撤销small操作lee的mytable表的查询权限

       revoke all on mytable from small;

 

oracle在对象权限中可以将权限限制在列上:

       grant insert(id) on mytable to small;      //只允许插入id

       grant update(name) on mytable to small;    //只允许更新name

此时  select * from user_tab_privs;无法显示出结果,因为只对表的一部分操作进行了授权,可用

      select * from user_cul_privs;显示权限信息

 

注意:修改表时,插入、更新和删除,在操作结束后若要保存需要commit提交保存

Oracle数据库权限操作

 权限的传递(以上图为例):包括系统权限的传递和对象权限的传递,两者大同小异

  • 系统权限的传递

第一种:sys赋予权限给small,但small无法将该权限继续赋予给lee

    在sys下:grant alter any table to small;

    此时在small下:select * from user_sys_privs;可以看见sys授予的alter any table的权限

    但是在small下如果继续:grant alter any table to lee;就会出现错误,显示权限不足

    好比房客small租了房东sys的房子,却没有权利在房东sys不知道的情况下将房子私自继续租给房客lee之类的人一样

 

第二种:sys赋予权限给small,small将该权限继续赋予给lee

    在sys下:grant alter any table to small with admin option;

    此时在small下:select * from user_sys_privs;可以看见sys授予的alter any table的权限,并且在AD栏下显示YES

    然后在small下如果继续:grant alter any table to lee;

    此时在lee下:select * from user_sys_privs;可以看见lee也拥有了alter any table的权限,但此时lee却不能将此权限继续授予其他用户

    好比房客small租了房东sys的房子,并且房东sys告诉small,他可以将房子继续租给其他人使用,所以房客small将房子租给了房客lee,可是房客lee除了自己使用这个房子,却没有权利将这个房子继续租下去

 

第三种:sys赋予权限给small,small将该权限继续赋予给lee,lee可以继续将该权限传递下去

    在sys下:grant alter any table to small with admin option;

    此时在small下:select * from user_sys_privs;可以看见sys授予的alter any table的权限,并且在AD栏下显示YES

    然后在small下如果继续:grant alter any table to lee with admin option;

    此时在lee下:select * from user_sys_privs;可以看见lee也拥有了alter any table的权限,并且在AD栏下显示YES,此时lee却能将此权限继续授予其他用户

    好比房客small租了房东sys的房子,并且房东sys告诉small,他可以将房子继续租给其他人使用,所以房客small将房子租给了房客lee,不同的是,这次small也告诉lee,他可以将房子继续租下去,那么lee便也有权利将这个房子继续租下去。

  • 对象权限的传递

同样有三种:基本原理也是完全相同,只是操作对象和操作命令不同

操作对象是对具体的表进行操作,且操作的是表内的内容,包括查询、修改、增加和删除

举例:

       sys新建一个表:create table A(id int);

       sys允许small查询此表:grant select on A to small;

此时small可以对表A进行查询操作,却不可以将此权限授予其他用户

      sys中如此授权:grant select on A to small with grant option;

此时small就可以将此权限也授予其他用户,如:grant select on A to lee;或者grant select on A to lee with grant option;(此时lee也有了将权限传递的权利) 

 

问题:如果sys将给small的权限撤消了,lee还会不会有从small那里得到的权限呢?对于oracle9和oracle10来说,两个结果是不同的,试试吧!

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值