Oracle中的用户、角色和权限控制
用户
用户分为 系统用户 和 普通用户 两类
Oracle中的用户概况
在Oracle中,视图dba_users存储了所有用户的基本信息。查看用户信息:
select * from dba_users
利用系统用户创建新用户
create user 用户名 identified by 密码 default tablespance 表空间
identified by 选项是必需的,用于指定新用户的密码
用户的对象集合–模式
模式(Schema)是用户的附属对象,依赖于对象的存在而存在。一个用户在数据库中所拥有的所有对象的集合即为该用户的模式。这些对象包括表、索引、视图和存储过程等。可以通过视图dba_objects来查看一个对象的拥有者。
desc dba_objects;
引用一个用户的所有对象,可以使用user.schema的形式。
创建用户事件触发器
create or replace trigger tr_truncate_table
after truncate
on system.schema
begin
insert into truncate_log values (ora_dict_obj_name,user,sysdate);
end;
用户的schema与用户同名,例如用户System的Schema名称同为system。
通过骚起来语句查看当前登录用户
select sys_context('userenv','current_user') current_user,sys_context('userenv','current_schema') current_schema from dual;
sys_context是一个系统函数;sys_context(‘userenv’,‘current_user’) 获取当前用户的用户名;sys_context(‘userenv’,‘current_schema’)获取当前用户的schema
系统用户–system与sys
sys的用户角色为sysdba(数据库管理员),是数据库中权限最高的用户。system的用户角色为sysoper(数据库操作员),权限仅次于sys用户
为用户解锁
alter User system account unlock
重置用户密码
alter User system identified by abc123
权限
权限分为系统权限和对象权限
系统权限
系统权限是Oracle内置的、与具体对象无关的权限类型。这些权限不指向具体对象,而是针对某种操作而言。例如创建表的权限
获得系统权限信息
视图dba_sys_privs描述系统权限及权限分配情况
desc dba_sys_privs
视图system_privilege_map描述Oracle的系统权限信息
desc system_privilege_map
分配系统权限
grant用户分配权限;
grant create session to test
将create session 权限分配给用户test
利用system用户为test分配在表空间users上的可用空间
alter User test quota 100m on users quota 20m on temp
quota用于为用户test分配可用空间。在users分配100m,在temp分配20m
admin option
admin option可以将权限接着传播给下一个用户,分配权限时不指定admin option 那么权限就无法传播给下一个用户。
利用用户system为用户test重新分配权限,并指定admin option
grant create session,create table to test with admin option;
一次性分配多个权限时,用‘,’(逗号)分隔
利用用户test为用户test_user分配权限
grant create session,create table to test_user
收回用户的系统权限
例如,收回用户test的权限
revoke create session,create table from test
此时test没有权限,但是test_user权限不变,说明使用admin option 传播的权限。不会因传播者权限的变更而失效
对象权限
对象权限主要包括:
select、insert、Update、delete、
execute:函数、存储过程、程序包等的调用或执行
index:为表创建索引
references:为表创建外键
alter:修改表或者序列的属性
查看一个用户针对某个数据表的权限,通过视图user_tab_privs或者dba_tab_privs
分配权限
grant 权限 on 对象 to 用户
将表employee的select权限分给用户test
grant select on employee to test
分配 Update、insert权限
grant update,insert on employee to test
分配所有权限
grant all on employee to test
with grant option
with grant option允许权限传播
grant select on employee to test with grant option
收回权限
revoke update,insert on employee from test
因为select权限被传播了,那么收回用户test的select权限时。用户test_user的的权限也会被回收。这与admin option 传播的系统权限完全不同
角色
利用角色进行权限分配
创建角色
create Role role_employee;
利用用户system为角色分配权限
grant select,Update,insert,delete on employee to role_employee;
利用角色为用户分配权限
grant role_employee to test,test_user;
角色的延伸–继承
一个角色可以继承其他角色的权限集合
creat Role role_test;
grant role_employee to role_test
grant creat session,creat table to role_test
将角色分配给角色实际是实现了角色的继承。
从其他角色继承来的权限不会体现在数据字典中,但可以在视图dba_role_privs中获得继承信息
禁用/启用角色
禁用用户test的角色
alter User test default role none
启用用户test的角色
set role role_employee
role_employee为用户所拥有的角色,set role role_employee用于设置当前用户的默认角色。
Oracle常见的三个内置角色
dba角色:数据库管理员角色
connect角色:创建会话、创建表、创建视图等权限。这些权限在用户自己的schema内部。admin_option均为no。表名这些权限不可传播
resource角色:这些权限在用户自己的schema内部。admin_option均为no。表名这些权限不可传播,此角色隐含另一个权限–unlimited tablespane。该权限不局限于表空间磁盘配额的限制,可以任意扩展大小。
如果安全性要求并非特别高,可以将两种角色同时赋予用户
Oracle中的用户、角色和权限控制的更多相关文章
- SpringSecurity 自定义用户 角色 资源权限控制
SpringSecurity 自定义用户 角色 资源权限控制 package com.joyen.learning.security; import java.sql.ResultSet; impor ...
- RabbitMQ用户角色及权限控制
RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator RabbitMQ各类角色描述:none不能访问 managem ...
- RabbitMQ用户角色及权限控制(转)
转载至:https://blog.csdn.net/awhip9/article/details/72123257 2017年05月15日 10:39:26 awhip9 阅读数:3538 ### ...
- RabbitMQ用户角色及权限控制 -2
1.RabbitMQ的用户角色分类: none.management.policymaker.monitoring.administrator none 不能访问 management plugin ...
- RabbitMQ用户角色及权限控制(不错)
########################用户角色####################### RabbitMQ的用户角色分类:none.management.policymaker.moni ...
- oracle中新建用户和赋予权限
1.新建个用户 create user xxxxx(用户名) identified by "密码" alert user 用户名 identified by “新密码” --修改用 ...
- Oracle中注意用户的访问权限
新增表.序列.存储过程等,要注意用户(例如System)的权限.如果在增删改查过程中出现数据库读写权限的报错,则在建表(或者序列.存储过程等)时,在脚本前面加 GRANT CREATE TABLE T ...
- Oracle中给用户赋予debug权限
通过可视化工具(如PL/SQL Developer.Oracle SQL Developer)调试Oracle的存储过程时,如果遇到如下错误信息:...ORA-01031: insufficient ...
- Oracle 用户管理与权限控制
Oracle 用户管理与权限控制 oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create ...
- SQL Server中查询用户的对象权限和角色的方法
--SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_h ...
随机推荐
- 静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析
静态批处理[1] 定义 标明为 Static 的静态物件,如果在使用相同材质球的条件下,在Build(项目打包)的时候Unity会自动地提取这些共享材质的静态模型的Vertex buffer和Inde ...
- 🎀SpringBoot启动创建系统托盘及功能
简介 SpringBoot启动时,创建系统托盘,提供打开主程序及退出功能. 实现 启动类添加构造函数 public TjtoolApplication() { initUI(); } private ...
- Java 的 CMS 垃圾回收流程
Java 的 CMS 垃圾回收流程 CMS(Concurrent Mark-Sweep)垃圾回收器 是一种并发垃圾回收器,旨在减少垃圾回收时的停顿时间,适用于对低延迟要求较高的应用.CMS 主要通过并 ...
- JVM 方法区是否会出现内存溢出?
JVM 方法区是否会出现内存溢出? 方法区内存溢出的可能性 方法区是 JVM 内存中的一个重要组成部分,存储类的元信息.静态变量和运行时常量池等.尽管它是一个独立的内存区域,但如果内存使用过多,也可能 ...
- 精选 14 款 .NET 开源、功能强大的快速开发框架,提高开发生产效率、避免工作996!
前言 最近发现DotNetGuide技术社区微信交流群有不少小伙伴在问:.NET有哪些不错的快速开发框架推荐的? 选择一款全面且功能强大的快速开发框架能够帮助我们解决C#..NET项目中的很多重复工作 ...
- 贪心算法——Demo1
题干: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j,都有 ...
- 基于Kubernetes可扩展的Selenium 并行自动化测试部署及搭建(3)——基于k8s的selenium grid集群搭建
本篇主要讲解如何使用k8s搭建selenium grid集群 Selenium Grid集群部署 1. 首先我们将通过 Kubernetes 服务进行通信以到达hub和nodes.Kubernete ...
- java基础之“深复制和浅复制的区别”
一.浅复制 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都任然指向原来的对象. 二.深复制 深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用对象 三.举例 产品 ...
- JS 上下文 this 指向总结
这个 js 语言中的 this 和其他面向对象的语言有本质的不同, 也更复杂, 它更多取决于函数在不同场景下的调用方式, 要理解它并总结出它的规律的话, 优先要从上下文 这个概念认知说起. 理解上下文 ...
- vue3 基础-API-案例-ToDoList
前面几篇我们介绍了 compostion API 的一些基础用法, 如 setup, ref, reactive, toRefs, toRef, context 等. 本篇呢找了一个经典的 TodoL ...