用户

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

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. 学习Django【1】模型

    编辑 models.py 文件,改变模型. 运行 python manage.py makemigrations 为模型的改变生成迁移文件. 运行 python manage.py migrate 来 ...

  2. 技术博客:如何构建AI模拟面试系统(附完整GitHub代码)

    引言:当董明珠.雷军.马斯克和特朗普成为你的面试官 在当今竞争激烈的求职市场中,模拟面试系统正成为开发者提升竞争力的秘密武器.但传统的模拟面试太过平淡,于是我开发了一个多风格AI面试官系统,让你可以体 ...

  3. fidder抓包微信小程序的方法

    想获取小程序的请求和返回数据,要么通过抓包工具抓包,要么使用小程序调试工具直接查看 总结下怎样使用fidder抓包 第一步,各种配置,把下面一系列图片里该勾的都勾上,够好了重启fidder 第二步,打 ...

  4. 几种JAVA表达式语言计算工具

    测试表达式工具分类 这里测试了几种方式,MS excel,Spring SEPL,MVEL,Google aviator import com.googlecode.aviator.AviatorEv ...

  5. 你了解 Java 的 ZGC(Z Garbage Collector)吗?

    Java 的 ZGC(Z Garbage Collector) ZGC(Z Garbage Collector) 是 Java 11 引入的一种低延迟垃圾回收器,旨在减少垃圾回收时的停顿时间,并能够在 ...

  6. Java编程之面向对象

    一.面向对象 1.定义 (1)类:描述的是具有共性的一类事物 (2)对象:一个个具备了类的特点和功能的个体 (3)面向对象:要完成某件事,首先要先有对象,然后直接调用这个对象的响应功能 2.成员变量: ...

  7. 一文带你看透什么是ResNet

    目录 什么是ResNet 提出背景 梯度爆炸/梯度消失: 退化现象: 原理解析 网络结构 参考资料 什么是ResNet 首先我们来看什么是ResNet,其全称为Residual Network(残差网 ...

  8. 关于symfony报错: Oops An Error Occurred ,The server returned a “500 Internal Server Error“

    symfony3.4 开发环境正常,生产环境访问任何路由都报错: Oops! An Error Occurred The server returned a "500 Internal Se ...

  9. php 二维数组转成一维数组

    // 1 $c = call_user_func('array_merge', $reds);// 2 $c = array_merge(...$reds);// 3 array_map(functi ...

  10. 微信小程序 6/12 的坑

    配置 小程序的时候配置请求的是 https://xxx 不是http://xxx 前端请求的链接都是https