oracle数据库管理--管理权限和角色

2024-02-23 08:38

本文主要是介绍oracle数据库管理--管理权限和角色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言:

         当刚刚建立新用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种待定的数据库操作,则必须为其授予系统权限;如果用户要访问其它方案的对象,则必须为其授予对象权限。为了简化权限的管理,可以使用角色。

(1)角色:一个角色可以被授予系统权限,或者对象权限
         oracle事先定义了若干角色,查看所有角色:
SQL> select * from dba_roles;
其中:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
可以查询sys_dbs,sys_privs可以了解各种角色拥有的权限
eg:
对于普通用户:授予connect, resource权限。

对于DBA管理用户:授予connect,resource, dba权限。

(2)权限:指执行特定类型sql命令或是访问其它方案对象的权利,包括系统权限和对象权限
A、系统权限:描述用户对数据库的相关权限,指执行特定类型sql命令的权利,它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table 权限时,可以在任何方案中建表。
常用的有:
create session 连接数据库         create table 建表
create procedure  建过程、函数、包
例如,CREATE TABLE权限允许用户创建表,GRANT ANY PRIVILEGE 权限允许用户授予任何系统权限。
查看用户系统权限:
SQL> select * from dba_sys_privs;
SQL> select * from all_sys_privs;
SQL> select * from user_sys_privs;

授予系统权限传递:
    一般情况下,授予系统权限是有DBA完成的,如果用其它用户来授予系统权限,则要求该用户必须具有grant any privilege 的系统权限在授予系统权限时,可以带有with admin option 选项。
grant 系统权限 to 用户名 [with admin option].带上with子句,可以让该用户有权限把系统权限授予其他用户。
eg:system 给用户xiaoming 权限时:
grant connect to xiaoming with admin option//意味用户xiaoming可以把connect 权限传递下去

回收系统权限:

    一般情况下,回收系统权限是DBA来完成的,如果其它的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option),回收系统权限使用revoke来完成。
eg:
SQL> revoke create session from ***(用户)  级联回收

B、对象权限:用户对其他用户的数据对象访问/操作的权限,其中,数据对象指用户创建的表,视图、存储过程、触发器等。
常用的有:alter、delete、select、insert、update 等。
查看对象权限:通过数据字段视图可以显示用户或是角色所具有的对象杼,视图为dba_tab_privs。
eg:
SQL> conn system/manager
SQL> select distinct privilege from dba_tab_privs
eg:希望xiaoming用户可以去查看scott的emp表(对象权限)
sql>conn scott/sheng
sql>grant select on emp to xiaoming  

希望xiaoming 用户去修改scott 的emp表
SQL> grant update on emp to xiaoming

希望xiaoming 用户去所有权限scott 的emp表
SQL> grant all on emp to xiaoming

授予对象权限传递:
如果是对象权限,就加入with grant option
grant select on emp to xiaoming with grant option //意味着xiaoming可以传递权限
回收权限revoke
scott 希望收回xiaoming对emp表的查询权限
revoke select on emp from xiaoming

这篇关于oracle数据库管理--管理权限和角色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/738068

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优