权限;如果用户要访问其它方案的对象,则必须为其授予对象的权限。为权限

 权限

权限是指执行特定类型 sql 命令或是访问其它方案对象的权利,包括系统权限和对象权限两种。

系统权限

 系统权限介绍

系统权限是指执行特定类型 sql 命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有 create

table 权限时,可以在其方案中建表,当用户具有 create any table 权限时,可以在任何方案中建表。oracle 提供了 100 多种

系统权限。

常用的有:

create session   连接数据库                 create table           建表

create view           建视图               create public synonym   建同义词

create procedure 建过程、函数、包           create trigger          建触发器

create cluster 建簇

 显示系统权限

oracle 提供了 100 多种系统权限,而且 oracle 的版本越高,提供的系统权限就越多,我们可以查询数据字典视图

system_privilege_map,可以显示所有系统权限。

select * from system_privilege_map order by name;

 授予系统权限

一般情况,授予系统权限是由 dba 完成的,如果用其他用户来授予系统权限,则要求该用户必须具有 grant any privilege

的系统权限。在授予系统权限时,可以带有 with admin option 选项,这样,被授予权限的用户或是角色还可以将该系统权限

授予其它的用户或是角色。为了让大家快速理解,我们举例说明:

1.创建两个用户 ken,tom。初始阶段他们没有任何权限,如果登录就会给出错误的信息。

create user ken identfied by ken;

2 给用户 ken 授权

1). grant create session, create table to ken with admin option;

2). grant create view to ken;

3 给用户 tom 授权

我们可以通过 ken 给 tom 授权,因为 with admin option 是加上的。当然也可以通过 dba 给 tom 授权,我们就用 ken 给 tom 授

权:

1. grant create session, create table to tom;

2. grant create view to ken;   --ok 吗?不 ok

 回收系统权限

一般情况下,回收系统权限是 dba 来完成的,如果其它的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系

统权限的选项(with admin option)。回收系统权限使用 revoke 来完成。

当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限级联收回的问题?[不是级联回收!]

system --------->ken ---------->tom

(create session)(create session)( create session)

用 system 执行如下操作:

revoke create session from ken;   --请思考 tom 还能登录吗?

答案:能,可以登录

对象权限

 对象权限介绍

指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。

比如 smith 用户要访问 scott.emp 表(scott:方案,emp:表)

常用的有:

alter 修改 delete 删除   select 查询 insert 添加

update 修改 index 索引   references 引用 execute 执行

 显示对象权限

通过数据字段视图可以显示用户或是角色所具有的对象权限。视图为 dba_tab_privs

SQL> conn system/manager;

SQL> select distinct privilege from dba_tab_privs;

SQL> select grantor, owner, table_name, privilege from dba_tab_privs where grantee = 'BLAKE';

1.授予对象权限

在 oracle9i 前,授予对象权限是由对象的所有者来完成的,如果用其它的用户来操作,则需要用户具有相应的(with grant

option)权限,从 oracle9i 开始,dba 用户(sys,system)可以将任何对象上的对象权限授予其它用户。授予对象权限是用

grant 命令来完成的。

对象权限可以授予用户,角色,和 public。在授予权限时,如果带有 with grant option 选项,则可以将该权限转授给其

它用户。但是要注意 with grant option 选项不能被授予角色。

1.monkey 用户要操作 scott.emp 表,则必须授予相应的对象权限

1). 希望 monkey 可以查询 scott.emp 表的数据,怎样操作?

grant select on emp to monkey;

2). 希望 monkey 可以修改 scott.emp 的表数据,怎样操作?

grant update on emp to monkey;

3). 希望 monkey 可以删除 scott.emp 的表数据,怎样操作?

grant delete on emp to monkey;

4). 有没有更加简单的方法,一次把所有权限赋给 monkey?

grant all on emp to monkey;

2.能否对 monkey 访问权限更加精细控制。(授予列权限)

1). 希望 monkey 只可以修改 scott.emp 的表的 sal 字段,怎样操作?

grant update on emp(sal) to monkey

2).希望 monkey 只可以查询 scott.emp 的表的 ename,sal 数据,怎样操作?

grant select on emp(ename,sal) to monkey

...

3.授予 alter 权限

如果 black 用户要修改 scott.emp 表的结构,则必须授予 alter 对象权限

SQL> conn scott/tiger

SQL> grant alter on emp to blake;

当然也可以用 system,sys 来完成这件事。

4.授予 execute 权限

如果用户想要执行其它方案的包/过程/函数,则须有 execute 权限。

比如为了让 ken 可以执行包 dbms_transaction,可以授予 execute 权限。

SQL> conn system/manager

SQL> grant execute on dbms_transaction to ken;

5.授予 index 权限

如果想在别的方案的表上建立索引,则必须具有 index 对象权限。

如果为了让 black 可以在 scott.emp 表上建立索引,就给其 index 的对象权限

SQL> conn scott/tiger

SQL> grant index on scott.emp to blake;

6.使用 with grant option 选项

该选项用于转授对象权限。但是该选项只能被授予用户,而不能授予角色

SQL> conn scott/tiger;

SQL> grant select on emp to blake with grant option;

SQL> conn black/shunping

SQL> grant select on scott.emp to jones;

 回收对象权限

在 oracle9i 中,收回对象的权限可以由对象的所有者来完成,也可以用 dba 用户(sys,system)来完成。

这里要说明的是:收回对象权限后,用户就不能执行相应的 sql 命令,但是要注意的是对象的权限是否会被级联收回?【级联回收】

如:scott------------->blake-------------->jones

select on emp         select on emp             select on emp

SQL> conn scott/tiger@accp

SQL> revoke select on emp from blake

请大家思考,jones 能否查询 scott.emp 表数据。

答案:查不了了(和系统权限不一样,刚好相反)

管理权限<八>的更多相关文章

  1. Ecshop:后台添加新功能栏目以及管理权限设置

    一.添加菜单项 打开 /admin/includes/inc_menu.php文件(后台框架左边菜单),在最后添加一行如下: $modules['17_other_menu']['sns_list'] ...

  2. oracle索引、 管理权限和角色

    索引 1 单列索引create index 索引名 on 表名(列名): 2复合索引在同一张表上可以有多个索引,但是要求列的组合必须不同.create index 索引名 on 表名(列名1, 列名2 ...

  3. linux 管理权限

    linux 管理权限 linux 文件 权限 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- 2 root adm 4096 2013-08-07 11:03 ...

  4. oracle管理权限和角色

    介绍 这一部分主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必需为其授予系统的权限:如果 ...

  5. Token令牌管理权限

    什么是token HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息,没办法区分每次请求的不同. Token是服务器生成的一串字符,作为客户端请求的令牌.当第一次登陆后,服务器会分发Ton ...

  6. 通过Weeman+Ettercap配合拿下路由器管理权限

    通过Weeman+Ettercap配合拿下路由器管理权限 本文转自>>>i春秋学院 本篇文章主要介绍如何在接入无线网络后如何拿到路由器的管理权限,至于如何得到路由器连接密码可以参考 ...

  7. Confluence 6 管理和恢复空间管理权限

    管理和恢复空间管理权限 可能有些空间的空间管理权限被系统的超级管理删除掉了.这样的空间是没有任何空间管理员的,用户和用户组都不能对空间进行管理.只有 Confluence 管理员权限的用户可以删除一个 ...

  8. mysql创建账号及管理权限

    mysql创建账号及管理权限 0.mysql版本8.0.15,服务器版本:RHEL 6.5 1.创建用户名密码 mysql> use mysql; mysql> create user ' ...

  9. Linux_用户管理&权限管理

    2017年1月11日, 星期三 Linux_用户管理&权限管理 1.  Linux用户管理&权限管理 终端的概念: tty  查看登录的终端 类型  user group    oth ...

随机推荐

  1. 将STM32的标准库编译成lib使用【图文】

    以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程. 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间.每次建立工程都这么编译,是一个相当浪费时 ...

  2. 操作系统中前台进程与后台进程(适用于Linux)

    两种进程的主要区别: 1.前台进程用户可以操作,后台进程用户不能操作(除了把它关闭). 2.前台进程不全是由计算机自动控制,后台进程全都是由计算机自动控制. 3.后台进程一般用作系统服务,可以用cro ...

  3. Java中Enum类型的序列化(转)

    在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同.下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的. Java代码: Java代码 ...

  4. 企业架构(Enterprise Architecture)

    ylbtech-Miscellaneos: 企业架构(Enterprise Architecture) A,返回顶部 1, 简称EA.是指对企业事业信息管理系统中具有体系的.普遍性的问题而提供的通用解 ...

  5. java连接mysql :No Suitable Driver Found For Jdbc 解决方法

    今天出现编码出现了No suitable driver found for jdbc,又是找遍了网上的资料,基本上都说是以下个问题:    一是:连接URL格式出现了问题(Connection con ...

  6. XE6移动开发环境搭建之IOS篇(5):解决Windows和虚拟机下Mac OSX的共享问题(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 在安装XE6 PAS ...

  7. 实习日记:图像检索算法 LSH 的总结与分析(matlab)

    最开始仿真和精度测试,基于 matlab 完成的. Demo_MakeTable.m (生成 Hash 表) %======================================== %** ...

  8. MySQL 的 RowNum 实现

    MySQL 的 RowNum 实现 MySQL 下面没有RowNum,排序后序号却无法得到,比较麻烦! 在网上找了再三,通过比较,确认了以下的方法是可行的 : rownum, CollectSn ,b ...

  9. Linux:永久修改网卡的MAC地址

    比如:搭建一个虚拟机环境之后,需要N个一样的系统,可以本地复制虚拟机来实现.但是复制之后,网卡的MAC地址一样,无法使用,这时候需要修改网卡的MAC地址,且希望重启系统之后,仍生效的,步骤如下: 1. ...

  10. 0601 Spring2.0 发布会

    ProductBacklog:继续向下细化; 1.界面美化,统一界面风格,以简洁美观为主: 2.丰富版面的内容,吸引用户: 3.尝试增加新的版面: Sprint 计划会议:确定此次冲刺要完成的目标 1 ...