1
 
用户是什么

1.1、权限管理是Oracle的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限。Oracle 的权限分为系统权限和数据对象权限,共一百多种。如果把Oracle数据库看做仓库,表空间相当于仓库中的库房,数据表就是存放在仓库库房中的货品。用户相当于仓库管理员,仓库管理员可以管理一个或多个仓库库房,但仓库管理员只属于一个仓库。(作为SqlServer用户,表空间类似SqlServer中的数据库,sys/system用户类似SqlServer中的sa用户

1.2、Oracle默认有三个用户system 、 sys 、 scott。sys和system属于系统管理员用户,也是Oracle中权限很高的用户(sys权限要更高于system),scott是默认普通用户,scott的默认密码是tiger

1.3、Oracle关于用户常见问题;

  1.3.1、sys不能用normal权限登录,仅能用sysdbasysoper权限登录。

  

  1.3.2、system不能用sysoper权限登录,仅能用normalsysdba权限登录。

  

  1.3.3、scott用户默认是锁定的,需要解锁才能使用。(scott默认密码是tiger,解锁后可自行修改密码

  

  1.3.4、解锁scott用户,登录sqlplus(normal权限登录即可)后用  alter user scott account unlock;  语句解锁(注意最后有分号结尾)

  

  激活scott用户后,首次登录会提示要求修改密码,默认密码 tiger 不能使用scott

  

2
 
用户连接方式(用户身份)

2.1、使用 PL/SQL 会发现登录的时候【连接为】有三个选项:Normal、SYSDBA、SYSOPER。这是用户选择以什么身份对数据库进行操作,可以看做一个仓库管理员以什么职位对仓库货品进行管理。

2.2、一个用户可以有多个身份,就好比在一家公司一个人可以身兼数职,而登录数据库时选择的 Normal、SYSDBA、SYSOPER 就是选择以什么职位对数据库进行操作。

2.3、之前提到,Oracle默认用户SYS可以用 SYSDBASYSOPER连接,用户SYSTEM可以用SYSDBANormal连接,用户scott仅能用Normal连接;身份和角色是多对多的关系,

2.4、三种身份权限,详见下表

其中SYS用户拥有最高权限,SYS 是所有内部数据库表、结构、过程包、等拥有者,此外它还拥有 V$ 和数据字典视图,并创建所有封装的数据库角色(DBA,CONNECT,RESOURCE)。 SYS是一个唯一能访问特定内部数据字典的用户。

作为一般开发人员一般用Normal身份连接数据即可。

3
 
创建/删除/修改用户

3.1、创建用户  create user [username] identified by [password];

3.2、修改用户密码  alter user [username] identified by [password];

3.3、修改用户状态(解锁或锁定),Oracle用户有两种状态 lock(锁定)unlock(解锁)  alter user [username] account [lock/unlock];

3.4、删除用户  drop user [username];

4
 
权限和角色

4.1、 权限就是在数据库中执行一些操作的权利,比如,登录数据库,连接数据库,创建数据表等。角色是权限的集合,比如,角色A同时拥有登录数据库,创建数据表的权限。举例,拿狼人杀来理解权限和角色的关系,把狼人杀中的行动拆分为权限大概有,天黑睁眼[权限]、查验身份[权限]、使用毒/解药[权限]、投票[权限]等,这些看做Oracle数据库中的权限;大家都知道狼人杀中普通村民晚上是要闭眼的,而特殊身份晚上有睁眼[权限],其中女巫[角色]拥有天黑睁眼[权限]和使用毒/解药[权限]还有投票[权限],那这三个[权限]的集合就是女巫[角色]

  4.1.1、Oracle的权限分为系统权限对象权限;系统权限就是用户对整个数据库的范围内的操作权限,比如常用的建表,连接,建视图等权限,对象权限就是授权其他方案对象用户对自己方案对象的操作权限,比如常用增删改查操作。对象权限的通俗理解,把自己的数据库方案(自己的数据表)共享给其他用户操作使用的权限。

4.2、系统权限介绍、授权、回收

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

  

  4.2.2、查看当前Oracle版本的所有系统权限  select * from system_privilege_map order by name; (我目前安装的Oracle11g有208个系统权限

  

  4.2.3、给用户授权角色(或权限) grant [RoleName]|[PowerName] to [UserName];

  

  (给用户【a_user】授权【建立数据库连接】和【创建数据表】权限

  4.2.4、回收权限  revoke [RoleName]|[PowerName] from [UserName];

  

4.3、对象权限介绍、授权、回收

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

  

  4.3.2、给用户授权角色(或权限)  grant [PowerName]|[RoleName] on [b_UserName].[TableName] to [a_UserName];

  

  授权用户 a_user 对 用户 b_user 下的 t_couse 表 [增、删、改、查] 权限

  4.3.3、回收权限  revoke [PowerName]|[RoleName] on [b_UserName].[TableName] from [a_UserName];

  

  撤销用户 a_user 对 用户 b_user 下的 t_couse 表 [增、删、改、查] 权限

4.4、角色(权限集合)

  4.4.1、在对用户授权的时候会遇到多个权限需要授权给多个用户的情况。一个个权限分别授权给一个个用户显然效率很低,这种场景就需要用到角色。前面有说到,角色就会权限的集合。

  4.4.2、预定义角色,Oracle已经提供了一些预定义角色,常用到的有 connect,resource,dba 三种角色;

    4.4.2.1、connect角色:具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource角色就够了;

    4.4.2.2、resource角色具有应用开发人员所需要的其它权限,比如建立存储过程,触发器等;

    4.4.2.3、dba角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system,它们可以将任何系统权限授予其他用户。但是要注意的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库);

4.4.3、创建角色,除了Oracle提供的预定义角色,我们也可以自己创建角色

create role [RoleName] not identified;
-- 不验证方式创建角色(没有密码验证) create role [Role] identified by [password];
-- 验证方式创建角色(激活角色时需要验证密码)

4.4.4、给角色授权,自定义创建的角色默认没有任何权限,创建角色后需要分配权限 (注意:分配系统权限时建议使用 system用户

conn system/[password];
--连接system用户
grant [PowerName] to [RoleName] with admin option;
--授权系统权限
conn scott/tiger@myoral;
--连接对象用户
grant [PowerName] on scott.emp to [RoleName];
--授权对象权限

4.4.5、删除角色  drop role [RoleName];

引用资料:https://www.cnblogs.com/ningvsban/p/3606239.html

<<============================================================================================================================================>>

此日记系列仅做普通开发使用Oracle,并非专业DBA

oracle入坑日记<三>用户详解(角色理解)的更多相关文章

  1. oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)

    0   前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...

  2. oracle入坑日记<四>表空间

    1   表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数 ...

  3. oracle入坑日记<二>认识oracle(含sqlplus基础使用)

    1.SID(数据库实例) 1.1. oracle安装的时候有一项叫[全局数据库名]的填写项,这个就是oracle的SID也是数据库的唯一标识符: 1.2.一个oracle数据库有且只有一个SID(一般 ...

  4. oracle入坑日记<一> 安装

    学习日记系列(前辈/大神勿喷) 一.下载 下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads ...

  5. oracle入坑日记<五>数据表

    1   数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在o ...

  6. java架构之路-(MQ专题)RocketMQ从入坑到集群详解

    这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧. 早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到 ...

  7. Oracle Database 12c Release 2安装详解

    第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多 ...

  8. oracle数据库定时任务dbms_job的用法详解

    本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点   1.创建job: variable jobno number; ...

  9. Oracle中用exp/imp命令参数详解【转】

    Oracle中用exp/imp命令参数详解 [用 exp 数 据 导 出]:1  将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中   exp sy ...

随机推荐

  1. Matlab 如何/怎样 读取图片 显示图片 转换成灰度图

    % 读取图片 im = imread('路径') >> im = imread('ny.png'); % 显示图片 imshow(im) >> imshow(im) % 转换成 ...

  2. 不同系统、不同存储格式(textfile, parquet)数据的传递

    描述: 本地测试环境hive中有数据,存储格式为textfile,现在要上传到公司开发环境,存储格式为parquet, 如何实现??? tb_textfile表---> local file - ...

  3. 兄弟连学python---网络简介

    网络简介 1.什么是网络 网络是辅助双方能够连接在一起的工具 使用网络的目的 为了联通多方然后进行通讯,能够让软件在不同的电脑上运行,相互传输数据 网络的发展 网络协议 什么是协议 约定俗成的,没有理 ...

  4. C#服务端Web Api

    本教程已经录制视频,欢迎大家观看我在CSDN学院录制的课程:http://edu.csdn.net/lecturer/944

  5. Javascript 3.3 编写DOM脚本的四个基本方法

    id属性的用途是给某个元素加上独一无二的标识符,搭配"#"使用 class搭配"."使用 getElementById()方法:方法名称的大小写不能写错,方法将 ...

  6. myBatis---接口代理开发(demo)

    一.概述 使用接口代理开发,可以不用写接口的实现类,而采用的是MapperFactoryBean代理的实现类. * 接口代理方式开发,遵循四大原则 * 1.方法名 == mapper.xml的id名 ...

  7. SQL server 多个字段设为主键

    create table teacher_course( ton char(8) not null, classno char(8) not null, con char(4) not null pr ...

  8. 使用User Primary Email作为GUID的问题

    最近发现有人使用CRM的user primary email作为GUID, 并且做了plugin来控制user primary email. 这样做法是非常有问题而且会影响同名的再次注册的用户. 假如 ...

  9. 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式

    如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.

  10. Dynamics 365—脚本

    Xrm.Page.getAttribute() 转控件:controls.get(0) 取赋值:getValue(),setValue() 是否改动:getIsDirty() 表单载入时的值:getI ...