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 ...
随机推荐
- xdoj-1297 Tr0y And His Startup
题目: 1297: Tr0y And His Startup 时间限制: 1 Sec 内存限制: 256 MB提交: 18 解决: 8[提交][状态][讨论版] 题目描述 Tr0y创办了一家安全公 ...
- Hello2实例的分析
首先: java EE 上的hello2项目是一个部署在glass fish上的开发源码的java web项目,在终端通过命令行使用maven进行打包成.war文件,最后部署到相关的glass fis ...
- ROADMAP
- java-IO流-其他流
###22.01_IO流(序列流)(了解) * 1.什么是序列流 * 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, ...
- 2018.8.8 SpringMVC分层
分层: 表示层:请求分发,调用处理器,页面展示. 业务层:业务处理接口和实现. 持久层:数据访问和持久化. 各层之间解耦,下层对上层透明. 具体代码分析如下图,图转自https://blog.csdn ...
- admin-4
每个学员机上有三台预先配置好的虚拟机server —— 作为练习用服务器desktop —— 作为练习用客户机classroom —— 提供网关/DNS/软件素材等资源 通过真机上“虚拟系统管理器”访 ...
- 在Ubuntu15.10中,使用wxPython的webview和JS进行交互
在Ubuntu下进行wxPython开发,因为需求,所以使用了wxPython的webview和JS的交互. 在Windows下,下图显示的代码可以正常的运行,但是在Ubuntu下进行开发,以下的代码 ...
- 18.11 ROM、RAM、DRAM、SRAM和FLASH区别
ROM(Read Only Memory)和RAM(Random Access Memory)指的都是半导体存储器.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,但 ...
- OpenStack搭建Q版只属于计算节点上的环境准备(step6)
配置NTP服务 1.安装chronyd yum install chrony -y 2.修改配置文件,使计算节点与控制节点同步时间 vim /etc/chrony.conf 注释掉下面四行: #ser ...
- (转)初学Git及简单搭建git服务器和客户端
终于搞定,mac自己作为git服务器,mac也是客户端,如何免登 从另外一个linux服务器的上传公钥得到提示 ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168 ...