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 ...
随机推荐
- Matlab 如何/怎样 读取图片 显示图片 转换成灰度图
% 读取图片 im = imread('路径') >> im = imread('ny.png'); % 显示图片 imshow(im) >> imshow(im) % 转换成 ...
- 不同系统、不同存储格式(textfile, parquet)数据的传递
描述: 本地测试环境hive中有数据,存储格式为textfile,现在要上传到公司开发环境,存储格式为parquet, 如何实现??? tb_textfile表---> local file - ...
- 兄弟连学python---网络简介
网络简介 1.什么是网络 网络是辅助双方能够连接在一起的工具 使用网络的目的 为了联通多方然后进行通讯,能够让软件在不同的电脑上运行,相互传输数据 网络的发展 网络协议 什么是协议 约定俗成的,没有理 ...
- C#服务端Web Api
本教程已经录制视频,欢迎大家观看我在CSDN学院录制的课程:http://edu.csdn.net/lecturer/944
- Javascript 3.3 编写DOM脚本的四个基本方法
id属性的用途是给某个元素加上独一无二的标识符,搭配"#"使用 class搭配"."使用 getElementById()方法:方法名称的大小写不能写错,方法将 ...
- myBatis---接口代理开发(demo)
一.概述 使用接口代理开发,可以不用写接口的实现类,而采用的是MapperFactoryBean代理的实现类. * 接口代理方式开发,遵循四大原则 * 1.方法名 == mapper.xml的id名 ...
- SQL server 多个字段设为主键
create table teacher_course( ton char(8) not null, classno char(8) not null, con char(4) not null pr ...
- 使用User Primary Email作为GUID的问题
最近发现有人使用CRM的user primary email作为GUID, 并且做了plugin来控制user primary email. 这样做法是非常有问题而且会影响同名的再次注册的用户. 假如 ...
- 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式
如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.
- Dynamics 365—脚本
Xrm.Page.getAttribute() 转控件:controls.get(0) 取赋值:getValue(),setValue() 是否改动:getIsDirty() 表单载入时的值:getI ...