Oracle用户、角色、权限
一、Oracle权限
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)
对象权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)
1.Oracle系统权限
oracle提供了166系统权限,而且oracle的版本越高,提供的系统权限就越多,我们可以查询数据字典视图system_privilege_map,可以显示所有系统权限。
基本语法
select * from system_privilege_map order by name;
oracle11GR2中提供了208个系统权限。
Oracle常用100个权限
权限名 | 含义 |
---|---|
alter any cluster | 修改任意簇的权限 |
alter any index | 修改任意索引的权限 |
alter any role | 修改任意角色的权限 |
alter any sequence | 修改任意序列的权限 |
alter any snapshot | 修改任意快照的权限 |
alter any table | 修改任意表的权限 |
alter any trigger | 修改任意触发器的权限 |
alter cluster | 修改拥有簇的权限 |
alter database | 修改数据库的权限 |
alter procedure | 修改拥有的存储过程权限 |
alter profile | 修改资源限制简表的权限 |
alter resource cost | 设置佳话资源开销的权限 |
alter rollback segment | 修改回滚段的权限 |
alter sequence | 修改拥有的序列权限 |
alter session | 修改数据库会话的权限 |
alter sytem | 修改数据库服务器设置的权限 |
alter table | 修改拥有的表权限 |
alter tablespace | 修改表空间的权限 |
alter user | 修改用户的权限 |
analyze | 使用analyze命令分析数据库中任意的表、索引和簇 |
audit any | 为任意的数据库对象设置审计选项 |
audit system | 允许系统操作审计 |
backup any table | 备份任意表的权限 |
become user | 切换用户状态的权限 |
commit any table | 提交表的权限 |
create any cluster | 为任意用户创建簇的权限 |
create any index | 为任意用户创建索引的权限 |
create any procedure | 为任意用户创建存储过程的权限 |
create any sequence | 为任意用户创建序列的权限 |
create any snapshot | 为任意用户创建快照的权限 |
create any synonym | 为任意用户创建同义名的权限 |
create any table | 为任意用户创建表的权限 |
create any trigger | 为任意用户创建触发器的权限 |
create any view | 为任意用户创建视图的权限 |
create cluster | 为用户创建簇的权限 |
create database link | 为用户创建的权限 |
create procedure | 为用户创建存储过程的权限 |
create profile | 创建资源限制简表的权限 |
create public database link | 创建公共数据库链路的权限 |
create public synonym | 创建公共同义名的权限 |
create role | 创建角色的权限 |
create rollback segment | 创建回滚段的权限 |
create session | 创建会话的权限 |
create sequence | 为用户创建序列的权限 |
create snapshot | 为用户创建快照的权限 |
create synonym | 为用户创建同义名的权限 |
create table | 为用户创建表的权限 |
create tablespace | 创建表空间的权限 |
create user | 创建用户的权限 |
create view | 为用户创建视图的权限 |
delete any table | 删除任意表行的权限 |
delete any view | 删除任意视图行的权限 |
delete snapshot | 删除快照中行的权限 |
delete table | 为用户删除表行的权限 |
delete view | 为用户删除视图行的权限 |
drop any cluster | 删除任意簇的权限 |
drop any index | 删除任意索引的权限 |
drop any procedure | 删除任意存储过程的权限 |
drop any role | 删除任意角色的权限 |
drop any sequence | 删除任意序列的权限 |
drop any snapshot | 删除任意快照的权限 |
drop any synonym | 删除任意同义名的权限 |
drop any table | 删除任意表的权限 |
drop any trigger | 删除任意触发器的权限 |
drop any view | 删除任意视图的权限 |
drop profile | 删除资源限制简表的权限 |
drop public cluster | 删除公共簇的权限 |
drop public database link | 删除公共数据链路的权限 |
drop public synonym | 删除公共同义名的权限 |
drop rollback segment | 删除回滚段的权限 |
drop tablespace | 删除表空间的权限 |
drop user | 删除用户的权限 |
execute any procedure | 执行任意存储过程的权限 |
execute function | 执行存储函数的权限 |
execute package | 执行存储包的权限 |
execute procedure | 执行用户存储过程的权限 |
force any transaction | 管理未提交的任意事务的输出权限 |
force transaction | 管理未提交的用户事务的输出权限 |
grant any privilege | 授予任意系统特权的权限 |
grant any role | 授予任意角色的权限 |
index table | 给表加索引的权限 |
insert any table | 向任意表中插入行的权限 |
insert snapshot | 向快照中插入行的权限 |
insert table | 向用户表中插入行的权限 |
insert view | 向用户视图中插行的权限 |
lock any table | 给任意表加锁的权限 |
manager tablespace | 管理(备份可用性)表空间的权限 |
references table | 参考表的权限 |
restricted session | 创建有限制的数据库会话的权限 |
select any sequence | 使用任意序列的权限 |
select any table | 使用任意表的权限 |
select snapshot | 使用快照的权限 |
select sequence | 使用用户序列的权限 |
select table | 使用用户表的权限 |
select view | 使用视图的权限 |
unlimited tablespace | 对表空间大小不加限制的权限 |
update any table | 修改任意表中行的权限 |
update snapshot | 修改快照中行的权限 |
update table | 修改用户表中的行的权限 |
update view | 修改视图中行的权限 |
Oracle权限相关的视图
与权限,角色相关的视图:
视图名 | 说明 |
---|---|
BA_SYS_PRIVS | 查询某个用户所拥有的系统权限 |
SER_SYS_PRIVS | 前用户所拥有的系统权限 |
ESSION_PRIVS | 当前用户所拥有的全部权限 |
OLE_SYS_PRIVS | 某个角色所拥有的系统权限 |
OLE_ROLE_PRIVS | 当前角色被赋予的角色 |
ESSION_ROLES | 当前用户被激活的角色 |
SER_ROLE_PRIVS | 前用户被授予的角色 |
dba_roles | Oracle 角色 |
dba_sys_privs | 角色包含的系统权限 |
dba_tab_privs | 角色包含的对象权限 |
注意: 要以SYS用户登陆查询这些视图,否则返回空!
针对表访问权限的视图:
视图名 | 说明 |
---|---|
ABLE_PRIVILEGES | |
LL_TAB_PRIVS | |
OLE_TAB_PRIVS | 某个角色被赋予的相关表的权限 |
A:授予权限
一般情况,授予系统权限是有dba完成的,如果用其它用户来授予系统权限,则要求用户必需具有grant any privilege的系统权限在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授予其它的用户或是角色。
授权基本语法:
grant 权限名称 to 用户名;
示例: grant create session to test with admin option; 授予连接数据库权限给test
grant create table, create view to test with admin option; 授予创建表,创建视图的权限给test
B:回收权限
一般情况下,回收系统权限是dba来完成的,如果其它的用户来回收系统权限,要求该用户必需具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成,当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限级联收回问题!(不会级联回收权限)
回收系统权限基本语法:
revoke系统权限名 from 用户名;
特别说明:系统权限的回收不是级联回收
示例: revoke create session from test; test用户权限被回收后,还可以登录
2.Oracle对象权限
访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必需具有对象的权限,比如smith用户要访问scott.emp表(scott:方案,emp:表),则必需在scott.emp表上具有对象的权限。
常用的权限
alter 修改、delete 删除、select 查询、insert 添加、update 修改、index 索引、references 引用、execute执行。
注: 在oracle9i前,授予对象权限是由对象的所有者来完成的,如果用其它的用户来操作,则需要用户具有相应的(with grant option)权限,从oracle9i开始,sys,system可以将任何对象上的对象权限授予其它用户 。
A:授权基本语法
grant 对象权限 on 数据库对象 to 用户名 [with grant option] [,角色名];
特别说明:可以把权限直接赋给用户或角色。[with grant option]选项只能授予用户,不能授予角色。
示例:
grant select on geoff.emp to test; 将geoff用户emp表的查询权限赋予test用户
grant alter on geoff.emp to test; 将geoff用户emp表的alert权限(修改表结构)赋予test用户
B:回收基本语法:
revoke 对象权限 on 数据库对象 from 用户名[,角色名];
特别说明:对象的权限回收是级联回收。
3.sys和system用户
区别:
system用户只能用normal身份登陆em。除非你对它授予了sysdba的系统权限或者syspoer系统权限。
sys用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。
最重要的区别,存储的数据的重要性不同
sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。
system用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有普通dba角色权限。
“SYSOPER”权限,即数据库操作员权限,权限包括:
打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库 日志归档 会话限制
“SYSDBA”权限,即数据库管理员权限,权限包括:
打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库 日志归档 会话限制 管理功能 创建数据库
normal 、sysdba、 sysoper区别
normal 是普通用户,只有通过被sys授权之后才可以对数据库进行操作
sysdba拥有最高的系统权限
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public
sysdba登陆后是sys,而且只能是SYS登录sysdba.
系统权限 | sysdba | sysoper |
---|---|---|
Startup(启动数据库) | startup | |
Shutdown(关闭数据库) | shutdown | |
alter database open/mount/backup | alter database open/mount/backup | |
改变字符集 | none | |
create database(创建数据库) | None不能创建数据库 | |
drop database(删除数据库) | none | |
create spfile | create spfile | |
alter database archivelog(归档日志) | alter database archivelog | |
alter database recover(恢复数据库) | 只能完全恢复,不能执行不完全恢复 | |
拥有restricted session(会话限制)权限 | 拥有restricted session权限 | |
可以让用户作为sys用户连接 | 可以进行一些基本的操作,但不能查看用户数据 | |
登录之后用户是sys | 登录之后用户是public |
二、Oracle角色
角色就是权限的一个集合体,如果将权限比作一个士兵,那么角色就是排长、连长、营长,不同的角色拥有的权限个数和大小也不同!
角色分为预定义角色和自定义角色。
A:预定义角色
预定义角色是指oracle所提供的角色,每种角色都用于执行一些特定的管理任务。
常用的预定义角色
1、connect角色
connect角色具有一般应用开发人员需要的大部分权限,只要给用户授予connect和resource角色就够了。
connect角色具有:create session 创建连接权限
2、resource角色
resource角色具有应用开发人员所需要的其它权限,比如建立存储过程、触发器等。这里需要注意的是resource角色隐含了unlimited tablespace系统权限。
resource角色具有:
角色名 | 说明 | 角色名 | 说明 |
---|---|---|---|
create trigger | 创建触发器 | create cluster | 创建集群 |
create sequence | 创建序列 | create operator | 创建运营商 |
create type | 创建类型权限 | create indextype | 创建索引类型 |
create procedure | 创建过程 | create table | 创建表 |
3、dba角色
dba角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system他们可以将任何系统权限授予其它用户,但是要注意的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库)
B:自定义角色
就是自己定义的角色,根据自己的需要来定义,一般是dba来建立,如果使用别的用户来建立,则需要具有create role的系统权限。在建立角色时可以指定验证方式(不验证,数据库验证等)
1、建立角色(不验证)
如果角色是公用的角色,可以采用不验证的方式建立角色。
建立角色不验证基本语法:create role 角色名 not identified;
2、建立角色(数据库验证)
采用这样的方式时,角色名、口令存放在数据库中。当激活该角色时,必需提供口令。在建立这种角色时,需要为其提供口令。
建立角色需数据库验证基本语法:create role 角色名 identified by 口令;
3、角色授权
给角色授予权限和给用户授权没有太多区别,但是要注意,系统权限的unlimited tablespace和对象权限的with grant option选项是不能授予角色的。
给角色授权基本语法:grant 对象权限 on 数据库对象 to 自定义角色名;
4、 分配角色给用户
一般分配角色是由DBA来完成的,如果要以其它用户身份分配角色,则要求用户必需具有grant any role的系统权限。
通过角色名授权用户基本语法:grant 角色名 to 用户名 [with admin option];
如果给用户赋权限时带了with admin option选项,被授权的用户可以继续将此权限授予其它用户。
5、删除角色
使用drop role,一般是dba来执行,如用其它用户则要求该用户具有drop any role系统权限
删除角色基本语法:drop role 角色名;
三、Oracle用户
Oracle数据库是根据用户进行分片管理的,可以简单理解为每个Oracle用户都是一个相对独立的数据库,每个用户对应的表空间是用于永久存储当前用户数据的空间,对应的临时表空间是用于当前用户在数据库进行处理数据的空间,用户是Oracle角色权限和角色的载体。
用户相关操作
详细操作请看我另一篇文章:Oracle新建用户
相关查询操作
查询当前用户系统权限:select * from session_privs;
查询当前用户拥有角色:select * from role_sys_privs;
参考文献: https://www.cnblogs.com/yucoder/p/11057764.html
如有问题,欢迎指正!
Oracle用户、角色、权限的更多相关文章
- Oracle用户角色权限相关视图
常用相关视图概述 DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS: 当前用户所拥有的系统权限 SESSION_PRIVS: 当前用户所拥有的全部权限 ROLE ...
- Oracle用户,权限,角色以及登录管理 scoot 授权
Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者syspoer系统权限. sy ...
- Oracle用户、权限、角色管理学习(文字很系统)
Oracle用户.权限.角色管理 2009-03-16 13:20:50 标签:oracle 数据库 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明 ...
- Oracle 用户和权限
Oracle 用户和权限Oracle 中,一般不会轻易在一个服务器上创建多个数据库,在一个数据库中,不同的项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,因此用户的概念在 Oracle中非常 ...
- Oracle 用户管理权限
Oracle 用户管理权限 一.创建用户的Profile文件 SQL> create profile student limit // student为资源文件名 FAILED_LOGIN_AT ...
- 2、oracle用户和权限
权限主要可以分成三类:系统权限.角色.对象权限,角色是一类系统权限的分组, Oracle 的角色存放在表 dba_roles 中,某角色包含的系统权限存放在 dba_sys_privs 中, 包含的对 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...
- [转]扩展RBAC用户角色权限设计方案
原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地 ...
- 扩展RBAC用户角色权限设计方案
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
随机推荐
- python 学习路程(一)
好早之前就一直想学python,可是一直没有系统的学习过,给自己立个flag,从今天开始一步步掌握python的用法: python是一种脚本形式的语言,据说是面向废程序员学习开发使用的,我觉得很适合 ...
- 减少HTTP请求的方式
1. 图片地图 缺点:坐标难定义:除了矩形之外几乎无法定义其他形状:通过DHTML(动态DOM操作)创建的图片地图在 IE 不兼容 <img usemap="#map1" b ...
- JSON的使用场景及注意事项介绍
上篇我们讲解了JSON的诞生原因是因为XML整合到HTML中各个浏览器实现的细节不尽相同,所以道格拉斯·克罗克福特(Douglas Crockford) 和 奇普·莫宁斯达(Chip Mornings ...
- 【集训Day1 测试】选择课题
选择课题(bestproject) [问题描述] Robin 要在下个月交给老师 n 篇论文,论文的内容可以从 m 个课题中选择.由于课题数有限,Robin 不得不重复选择一些课题.完成不同课题的论文 ...
- linux [CTRL]+c与[CTRL]+d
[CTRL]+c:中断目前程序.用于在linux中输入了错误的命令或者参数,有的时候会在系统不停的运行,如果想让程序需停下来,可以使用[CTRL]+C [CTRL]+d:这个组合键代表着键盘输入结束( ...
- Java包package之间调用问题-cmd运行窗口编译运行
问题:在使用了java包机制(package)后,编译出现错误:找不到或无法加载主类 xxx 的错误提示信息(各种编译不通过) 先给演示结果: 编译:javac -d classes src/a/He ...
- VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
背景简介 Visual Studio Code 是一款现代化轻量级代码编辑器,它免费.开源.跨平台.功能强大.本次 VS Code Day 是广大 VS Code 爱好者一起学习与交流的盛会,让我们对 ...
- JS中的同步异步编程
首先我们先看看同步与异步的定义,及浏览器的执行机制,方便我们更好地理解同步异步编程. 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS) 进程大线程小:一个进程中包含多个线程,例如 ...
- Centos 7.x 内核升级
作者信息 邮箱:sijiayong000@163.com Q Q:601566386 Centos 7.x 内核升级 注意:这篇文章只在 CentOS 7.× 系列版本上验证过,其他 CentOS 版 ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...