涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等

赋予权限:前三个要在管理员权限用户下进行操作

方法1:
grant dba to db_user;--赋予用户数据库管理权限
方法2:
grant connect to db_user;--赋予用户连接权限 注意:在这里,准确的讲,connect不是权限,而是角色。
grant resource to db_user;--赋予用户资源权限
方法3:
grant create session to db_user;--赋予用户创建会话的权限,能够正常登录了
grant resource to db_user;--赋予用户资源权限
方法4:connect db_user/db_user_pw as sysdba或者as sysoper;--连接数据库并赋予权限

管理权限和角色

介绍
这一部分我们主要看看Oracle中如何管理权限和角色,权限和角色的区别在那里。 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必须为其授予系统的权限;如果用户要访问其它方案的对象,则必须为其授予对象的权限。为了简化权限的管理,可以使用角色。

系统权限

用户名,权限,角色

在建立用户时,Oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,Oracle会将权限和角色的信息存放到数据字典。

通过查询dba_users可以显示所有数据库用户的详细信息;

通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限;

通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限;

通过查询数据字典dba_col_privs可以显示用户具有的列权限;

通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色。

select * from system_privilege_map order by name;--Oracle的所有系统权限,一般是dba
select distinct privilege from user_tab_privs;--显示数据库中用户的对象权限
select * from user_sys_privs;--显示数据库中用户的系统权限
select * from dba_sys_privs where grantee='db_role';--显示数据库中角色的管理员权限
select * from role_sys_privs where role='db_role';--显示数据库中角色的系统权限
select * from dba_tab_privs where grantee='db_role';--显示数据库中角色的对象权限

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

系统权限

系统权限介绍

系统权限是指执行特定类型sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。Oracle提供了200多种

系统权限。 常用的有:

create session;--连接数据库
create user;--建用户
create table; --建表
create view; --建视图
create public synonym;--建同义词
create synonym synonym_name for db_user.table_name;
create procedure;--建过程、函数、包 create trigger 建触发器
execute any procedure;--执行任何过程
create cluster;--建簇

显示系统权限

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

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

授予系统权限

一般情况,授予系统权限是由dba完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限。在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授给其他用户

回收系统权限

一般情况下,回收系统权限是dba来完成的,如果其它的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成。 当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限级联收回的问题?[不是级联回收!]

system --->ken --->tom

conn system/123456;

grant create session to ken with grant option;

conn ken/123456;

grant create session to tom;

用system执行如下操作:

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

答案:能,可以登录

对象权限

对象权限介绍

指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。比如smith用户要访问system.tb_Employee表(system:方案,tb_Employee:表)

常用的有:

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

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

显示对象权限

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

conn system/123456;

select distinct privilege from dba_tab_privs;

select grantor, owner, table_name, privilege from dba_tab_privs where grantee='db_role';

1.授予对象权限

在oracle9i前,授予对象权限是由对象的所有者来完成的,如果用其它的用户来操作,则需要用户具有相应的(with grant option)权限,从oracle9i开始,dba用户(sys,system)可以将任何对象上的对象权限授予其它用户。授予对象权限是用grant命令来完成的。 对象权限可以授予用户,角色,和public。在授予权限时,如果带有with grant option选项,则可以将该权限转授给其它用户。但是要注意with grant option选项不能被授予角色。

1.test用户要操作system.tb_Employee表,则必须授予相应的对象权限

1). 希望test可以查询system.tb_Employee表的数据,怎样操作?

grant select on tb_Employee to test;

2). 希望test可以修改system.tb_Employee的表数据,怎样操作?

grant update on tb_Employee to test;

3). 希望test可以删除system.tb_Employee的表数据,怎样操作?

grant delete on tb_Employee to test;

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

grant all on tb_Employee to test;

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

1). 希望test只可以修改system.tb_Employee的表的sal字段,怎样操作?

grant update on tb_Employee(sal) to test;

2).希望test只可以查询system.tb_Employee的表的ename,sal数据,怎样操作?

grant select on tb_Employee(ename,sal) to test;

...

3.授予alter权限

如果test用户要修改system.tb_Employee表的结构,则必须授予alter对象权限

conn system/123456;

grant alter on tb_Employee to test;

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

4.授予execute权限

如果用户想要执行其它方案的包/过程/函数,则须有execute权限。比如为了让ken可以执行包dbms_transaction,可以授予execute权限。

conn system/123456;

grant execute on dbms_transaction to ken;

5.授予index权限

如果想在别的方案的表上建立索引,则必须具有index对象权限。如果为了让test可以在system.tb_Employee表上建立索引,就给其index的对象权限

conn system/123456;

grant index on system.tb_Employee to test;

6.使用with grant option选项

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

conn system/123456;;

grant select on tb_Employee to test with grant option;

conn test/123456;

grant select on system.tb_Employee to jones;

回收对象权限

在oracle9i中,收回对象的权限可以由对象的所有者来完成,也可以用dba用户(sys,system)来完成。 这里要说明的是:收回对象权限后,用户就不能执行相应的sql命令,但是要注意的是对象的权限是否会被级联收回?【级联回收】

如:system--->test--->jones

conn system/123456;

revoke select on tb_Employee from test;

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

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

收回用户系统权限

revoke system_privileges from db_user;

Oracle系列之权限的更多相关文章

  1. .Net程序员学用Oracle系列(2):准备测试环境

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...

  2. .Net程序员学用Oracle系列(7):视图、函数、过程、包

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...

  3. .Net程序员学用Oracle系列(8):触发器、任务、序列、连接

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...

  4. .Net程序员学用Oracle系列(11):系统函数(下)

    1.聚合函数 1.1.COUNT 函数 1.2.SUM 函数 1.3.MAX 函数 1.4.MIN 函数 1.5.AVG 函数 2.ROWNUM 函数 2.1.ROWNUM 函数简介 2.2.利用 R ...

  5. .Net程序员学用Oracle系列(25):触发器详解

    1.触发器理论 1.1.触发器的应用场景 1.2.触发器的类型 1.3.DML 触发器的触发顺序 2.触发器实战 2.1.创建触发器 2.1.1.创建 DML 触发器 2.1.2.创建 DDL 触发器 ...

  6. .Net程序员学用Oracle系列(28):PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...

  7. .Net程序员学用Oracle系列(30):零碎补充、最后总结(The End)

    1.同义词 2.Flashback 技术 3.连接字符串的写法 4.转义字符 & 特殊运算符 5.文件类型 6.查看参数 & 修改参数 7.AWR 工具 8.学习方法 & 学习 ...

  8. .Net程序员学用Oracle系列(8):触发器、作业、序列、连接

    1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2.使用序列 & 删除序列 4.连接 4.1.创建连接 4.2.使 ...

  9. Oracle系列:触发器、作业、序列、连接

    .Net程序员学用Oracle系列(8):触发器.作业.序列.连接   1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2 ...

随机推荐

  1. JavaScript 学习笔记: 扩充类型的功能

    JavaScript 是允许给基本类型扩充功能的.例如,可以通过对Object.prototype增加方法,可以让该方法对所有的对象都可用. 这样的方式对函数,数组,字符串,数字,正则表达式和布尔值同 ...

  2. Java多线程练习:ticket卖票程序

    /*需求:简单的卖票程序多个窗口买票 */ class Ticket extends Thread{    private static int tick=100;    public void ru ...

  3. mysql学习笔记4

    用phpmyadmin创建数据库时出现 #1064 - You have an error in your SQL syntax; check the manual that corresponds ...

  4. Mac:How to mount a Windows shared folder

    Reference: How to mount a Windows shared folder on your Mac

  5. sgu 105 Div 3

    一个数能整除3当且仅当各位数之和能整除3. 有了这个规律就好办了, 但是呢,仔细一看, n太大了, 都到 2^31 了.所以简单的模拟肯定不行. 这种貌似像数论的题,一时找不到好办法,就打表! 打表出 ...

  6. 三个PHP常用代码样例

    作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的.尽管PHP经常被人诟病,被人贬低,被人当玩笑开,事实证明,PHP是全世 ...

  7. LAMP虚拟主机配置以及控制目录访问

    3.基于域名的虚拟主机配置 NameVirtualHost192.168.3.32:80#apache2.2.xx版本需要开启此选项,而且要和下面的保持一致:2.4.x版本就不需要此项设置了 < ...

  8. 关于Ibatis.net ,将List<T> 作为参数的学习笔记

    前言 最近做一个小项目,用到IBatis.net ,因为是现学现做,所以多少有点吃力,之前遇到一个问题,就是将List<T>作为parameterClass, 网上各种找,无奈.net方面 ...

  9. 9.MVC框架开发(关于ActionResult的处理)

    1.在Action处理之后,必须有一个返回值,这个返回值必须继承自ActionResult的对象 2.ActionResult,实际就是服务器端响应给客户端的结果 ViewResult(返回视图结果) ...

  10. linux下i2c驱动笔记 转

    1. 几个基本概念 1.1. 设备模型 由 总线(bus_type) + 设备(device) + 驱动(device_driver) 组成,在该模型下,所有的设备通过总线连接起来,即使有些设备没有连 ...