oracle入坑日记<三>用户详解(角色理解)
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权限登录,仅能用sysdba和sysoper权限登录。

1.3.2、system不能用sysoper权限登录,仅能用normal和sysdba权限登录。

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

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

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

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

2.2、一个用户可以有多个身份,就好比在一家公司一个人可以身兼数职,而登录数据库时选择的 Normal、SYSDBA、SYSOPER 就是选择以什么职位对数据库进行操作。
2.3、之前提到,Oracle默认用户SYS可以用 SYSDBA和SYSOPER连接,用户SYSTEM可以用SYSDBA和Normal连接,用户scott仅能用Normal连接;身份和角色是多对多的关系,

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

其中SYS用户拥有最高权限,SYS 是所有内部数据库表、结构、过程包、等拥有者,此外它还拥有 V$ 和数据字典视图,并创建所有封装的数据库角色(DBA,CONNECT,RESOURCE)。 SYS是一个唯一能访问特定内部数据字典的用户。
作为一般开发人员一般用Normal身份连接数据即可。
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.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入坑日记<三>用户详解(角色理解)的更多相关文章
- oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
0 前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...
- oracle入坑日记<四>表空间
1 表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数 ...
- oracle入坑日记<二>认识oracle(含sqlplus基础使用)
1.SID(数据库实例) 1.1. oracle安装的时候有一项叫[全局数据库名]的填写项,这个就是oracle的SID也是数据库的唯一标识符: 1.2.一个oracle数据库有且只有一个SID(一般 ...
- oracle入坑日记<一> 安装
学习日记系列(前辈/大神勿喷) 一.下载 下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads ...
- oracle入坑日记<五>数据表
1 数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在o ...
- java架构之路-(MQ专题)RocketMQ从入坑到集群详解
这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧. 早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到 ...
- Oracle Database 12c Release 2安装详解
第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多 ...
- oracle数据库定时任务dbms_job的用法详解
本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点 1.创建job: variable jobno number; ...
- Oracle中用exp/imp命令参数详解【转】
Oracle中用exp/imp命令参数详解 [用 exp 数 据 导 出]:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp sy ...
随机推荐
- echarts数据区域缩放(鼠标滚轮、滚动条、拉选框)
当一个echarts图表上的数据很多时,想要查看部分区域的数据状态,可以通过数据区域缩放来实现,现总结三个方法: 鼠标滚轮缩放: var arr = []; for(var i = 0;i<15 ...
- hadoop MapReduce
简单介绍 官方给出的介绍是hadoop MR是一个用于轻松编写以一种可靠的.容错的方式在商业化硬件上的大型集群上并行处理大量数据的应用程序的软件框架. MR任务通常会先把输入的数据集切分成独立的块(可 ...
- js中日期格式与时间戳格式互换
2014-04-23 18:55:49:123 日期格式 1398250549123 时间戳格式 前台显示日期格式,则 function tsToTime(ts) { var da ...
- React Native开发的一种代码规范:Eslint + FlowType
[这篇随笔记录的很简单,没有涉及具体的Eslint规则解释以及FlowType的类型说明和使用等,只是链接了所需的若干文档] js开发很舒服,但是代码一多起来就参差不齐,难以阅读了.所以加上一些代码规 ...
- DataFrame对行列的基本操作实战
1.pandas对行列的基本操作命令: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser ...
- mailto链接
mailto链接是一种html链接,能够设置你电脑中邮件的默认发送信息,但是需要你电脑安装默认的E-mail软件,类似Microsoft Outlook等,那么点击mailto链接就可以获得默认设置的 ...
- linux后台执行命令:&与nohup的用法
& 这种方法很简单,就是在命令之后加个“&”符号就可以了,如下: ./test & 这样一来,test程序就在后台运行了.但是,这样处理还不够,因为这样做虽然程序是在后台运行了 ...
- VS2017自定义新建模板
今天测试了一下用自定义的模板新建C++模板,结果出了一些问题,不过已经解决了,现在把经验分享出来. 1. 首先可以先自定义一个以后经常用的模板,例如下面这个. 2. 项目 下找到 导出模 ...
- 【申嵌视频】5-1 ubuntu下安装VMWare Tools工具
[申嵌视频]5-1 ubuntu下安装VMWare Tools工具 适合搭建mini2440, Tiny6410, smart210,Tiny4412, NanoPC-T2, NanoPC-T3, N ...
- LBA和CHS转换
磁盘填充,先填满一个柱面之后,再填下一个柱面.LBA是从0开始的. LBA = (C-CS)*HPC*SPT + (H-HS)*SPT + (S-SS) C, H, S: 当前的CHS值 CS, HS ...