Oracle用户权限管理详解(上)

发表于:2022-10-13 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:CodeLogs    来源:CSDN

分享:
  权限的分类
  权限,角色和用户的关系
  权限(privilege):Oracle数据库预先定义好的、执行某些操作的能力。
  角色(role):一组相关权限的集合。可以利用角色来简化权限的管理。
  用户(user):通过给用户授予适当的权限或角色,用户就能够登录数据库,在数据库中执行特定的DDL和DML操作。通过回收权限或角色,就能减少用户对数据库的操作能力。
  按照权限所针对的控制对象,可以将其分为系统权限、对象权限。
  系统权限
  系统权限(system privilege):指在系统级控制数据库的存取和使用的机制,即执行某种SQL语句的能力。
  如是否能启动、停止数据库,是否能修改数据库参数,是否能连接到数据库,是否能创建、删除、更改方案对象(如表、索引、视图、过程)等。它一般是针对某一类方案对象或非方案对象的某种操作的全局性能力。
  在Oracle数据库中,SYSTEM是数据库管理员,他具有DBA角色,即具有DBA角色的所有系统权限,包括SELECT ANY DICTIONARY,所以,他可以查询数据字典中的、以“DBA_”开头的数据字典视图,如DBA_USERS。
  数据字典视图system_privilege_map中包括了Oracle数据库中的所有系统权限。查询该视图可以了解系统权限的信息。
  系统权限总的来说,一类是针对方案对象的,一类是针对非方案对象的。
  针对方案对象的系统权限分为具有ANY关键字的(如 CREATE ANY TABLE)和不具有ANY关键字的(如CREATE TABLE)。
  具有ANY关键字的系统权限表示可以在任何用户方案中进行操作(如在任何用户方案中都可以创建表)。
  不具有ANY关键字的系统权限表示只在自己的方案中进行操作(如在自己的方案中可以创建表)。
  一般地,应该给数据库管理员授予带有ANY关键字的系统权限,以便其管理所有用户的方案对象。但不应该将其授予普通用户,以防其影响其他用户的工作。
  针对非方案对象的系统权限都没有ANY关键字,如CREATE TABLESPACE。因为它们只与数据库管理中全局的、唯一的数据库维护操作有关,而与局部的、非唯一的方案对象操作无关,如表空间是针对数据库的全局的概念,不是针对哪个用户的局部的概念。
  对象权限
  对象权限(object privilege):指在对象级控制数据库的存取和使用的机制,即访问其他用户的方案对象的能力。
  如用户可以存取哪个用户的方案中的哪个对象,是否能对该对象进行查询、插入、更新等。对象权限一般是针对其他用户的某个特定的方案对象的某种操作的局部性能力。
  创建对象的用户拥有该对象的所有对象权限,不需要授予。
  授权者只能从自己授权的用户那里回收对象权限。用户不能有选择性地回收列权限,必须首先回收该对象权限,然后再将合适的列权限授予用户。
  假如基于一个对象权限创建了过程、视图,那么回收该对象权限后,这些过程、视图将变为无效,回收对象权限会级联。
  Oracle数据库中总共有9种不同的对象权限。不同类型的对象有不同的对象权限。有些对象(如集群、索引、触发器、数据库连接)没有对应的对象权限,即他们是通过系统权限来控制的,例如,如要修改集群,用户必须要具有ALTER ANY CLUSTER系统权限。
  Oracle数据库的方案对象主要是指:表、索引、视图、序列、同义词、过程、函数、包、触发器。
  Alter(更改):表上的ALTER权限保证在相关的表上执行ALTER TABLE或LOCK TABLE语句。可以重命名表、添加列、删除列、更改数据类型和列的长度,以及把表转换成一个分区(partitioned)表。
  序列上的ALTER权限可以保证能够在相关序列上执行ALTER SEQUENCE语句,可以重设授权序列对象的最小值、增量和缓冲区大小。
  Delete(删除):允许在授权对象上执行DELETE语句,以便从表或者视图中删除行。
  SELECT权限必须随同DELETE权限授予,否则被授权的人将不能够选择行,因此也就无法删除行,DELETE权限还允许被授权者锁定相应的表。
  Execute(运行):包上的EXECUTE权限允许被授权者执行或者使用在相应的包规定中声明的任何程序或者程序对象。
  操作符(operator)或者类型(type)上的EXECUTE权限允许在SQL或者PL/SQL中使用该操作符。
  数据库对象上的EXECUTE权限允许被授权者使用相关的数据库对象并且调用其方法。
  Index(索引):允许被授权者在相关的表上创建索引或者锁定该表。
  当一个方案(schema)拥有一个表而另一个方案拥有其索引的时候,会出现混乱。在授予这种权限时要小心。
  Insert(插入):允许被授权者在相关的表或视图中创建行。
  如果该INSERT权限建立在相关表或者视图的特定列上,则只能在具有INSERT权限的列上插入数据。
  INSERT权限还隐含地给被授权者以锁定该表的能力
  Read(读):只能在目录上授予,允许被授权者读取指定目录中的BFILE。
  Read权限与SELECT权限有区别,后者允许用户读取一个表或者视图。
  Reference(引用):只能在表上授予用户,而不能授予角色。
  允许被授权者创建引用该表的参照完整性约束。被授权者可以锁定该表。
  Select(选择):允许被授权者在表或者视图上执行SELECT语句,允许被授权者读取表或者视图的内容。
  SELECT权限只能授予整个表,不能授予表中的列。因此,如果希望用户只能查询表中的部分列,就需要在该表上创建视图,然后将该视图的SELECT权限授予用户。
  序列上的SELECT权限允许被授权者获取当前值(CURRVAL)或者通过选择NEXTVAL增大该值。
  Update(更新):允许被授权者更改表或者视图中的数据值。SELECT权限必须随同UPDATE权限一起授予,这样就使被授权者隐含具有了锁定表的能力。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号