用户

用户分为 系统用户 和 普通用户 两类

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中的用户、角色和权限控制的更多相关文章

  1. SpringSecurity 自定义用户 角色 资源权限控制

    SpringSecurity 自定义用户 角色 资源权限控制 package com.joyen.learning.security; import java.sql.ResultSet; impor ...

  2. RabbitMQ用户角色及权限控制

    RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator RabbitMQ各类角色描述:none不能访问 managem ...

  3. RabbitMQ用户角色及权限控制(转)

    转载至:https://blog.csdn.net/awhip9/article/details/72123257 2017年05月15日 10:39:26 awhip9 阅读数:3538   ### ...

  4. RabbitMQ用户角色及权限控制 -2

    1.RabbitMQ的用户角色分类: none.management.policymaker.monitoring.administrator none 不能访问 management plugin ...

  5. RabbitMQ用户角色及权限控制(不错)

    ########################用户角色####################### RabbitMQ的用户角色分类:none.management.policymaker.moni ...

  6. oracle中新建用户和赋予权限

    1.新建个用户 create user xxxxx(用户名) identified by "密码" alert user 用户名 identified by “新密码” --修改用 ...

  7. Oracle中注意用户的访问权限

    新增表.序列.存储过程等,要注意用户(例如System)的权限.如果在增删改查过程中出现数据库读写权限的报错,则在建表(或者序列.存储过程等)时,在脚本前面加 GRANT CREATE TABLE T ...

  8. Oracle中给用户赋予debug权限

    通过可视化工具(如PL/SQL Developer.Oracle SQL Developer)调试Oracle的存储过程时,如果遇到如下错误信息:...ORA-01031: insufficient ...

  9. Oracle 用户管理与权限控制

    Oracle 用户管理与权限控制 oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create ...

  10. SQL Server中查询用户的对象权限和角色的方法

    --SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_h ...

随机推荐

  1. Linux权限之基础权限

    介绍 Linux是多用户的操作系统,允许多个用户同时登录和工作,Linux权限是操作系统用来限制不同用户对资源的访问机制.这里暂且将Linux的权限分为三类: 基本权限:给文件和目录的所属者.所属组. ...

  2. vue获取浏览器地址栏参数

    this.accountId = this.$route.query.id

  3. Traefik,想说爱你不容易:一场动态反向代理的心累之旅

    前言:技术选型的初心 在微服务盛行.容器部署逐渐常态化的今天,"动态反向代理"显得尤为重要. Traefik 凭借其原生支持 Docker.自动生成路由.集成 Let's Encr ...

  4. EF ——left join

    如何在EF中实现left join(左联接)查询_ var TestList = from p in context.PersonalInformation join d in context.Dep ...

  5. 痞子衡嵌入式:在含多个i.MXRT的主从系统中共享一颗Flash启动的方法与实践(上篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是多个i.MXRT共享一颗Flash启动的方法. 有些特殊的客户应用会采用多颗 i.MXRT 芯片设计一主多从的硬件架构(目的不一,或仿多 ...

  6. WPF封装一个懒加载下拉列表控件(支持搜索)

    因为项目中PC端前端针对基础数据选择时的下拉列表做了懒加载控件,PC端使用现成的组件,为保持两端的选择方式统一,WPF客户端上也需要使用懒加载的下拉选择. WPF这种懒加载的控件未找到现成可用的组件, ...

  7. 【BUG】Python3|爬虫请求得到的json中的值全是问号

    如图: 原因:headers的"Accept":是text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, ...

  8. 关于ADB-数据包抓取-反编译工具(手机刷机使用)

    1 逆向基本流程 1 获取目标app(官网,豌豆荚),尽量不要去华为应用市场,小米应用市场下载--多渠道打包,安装到手机上 2 使用抓包工具抓包分析(charles,fiddler...) 3 使用反 ...

  9. RPC实战与核心原理之熔断限流

    熔断限流 服务端的自我保护 策略 在 RPC 调用中服务端的自我保护策略就是限流 如何实现 方式有很多,比如最简单的计数器,还有可以做到平滑限流的滑动窗口.漏斗算法以及令牌桶算法等等.其中令牌桶算法最 ...

  10. JTextField限制输入数据类型(java GUI)

    package javaBasic; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Co ...