成为MySQL DBA后,再看ORACLE数据库(九、用户与权限)

news/2024/10/6 6:46:20

数据库的用户和权限的管理是DBA日常运维工作中的重要组成部分,不同数据库的用户权限体系及管理方式也会有差别,本文将对ORACLE的用户权限体系和常用操作进行一个总结。

一、用户管理

ORACLE中创建用户语句和mysql一样,不同的是mysql可以在用户后面加ip以实现ip层面的访问控制。在ORACLE中,创建用户即创建同名schema。记得初学ORACLE时就搞不懂schema的概念,后来理解了其实schema就是指数据库对象的集合,包括表、视图、存储过程等等,在ORACLE中这个集合是集合到用户下,而在MySQL中这个集合是集合到数据库下,所以在MySQL中database即schema。另外在SQLServer和PG中,在实例下的数据库下面还有一层schema的概念,这就和ORACLE、MySQL都不一样,可以说在对数据库对象管理的层次上面又多了一层。在ORACLE中可以通过conn user/password命令切换不同的用户,在删除用户时需要加上cascade:drop user user_name [cascade],这样才可以级联删除该用户下面的数据库对象。

二、系统权限

ORACLE的用户权限可以分为系统权限、对象权限以及角色权限。其中系统权限是指执行特定类型SQL命令的权限,它用于控制用户可以执行的一个或一组数据库操作,常用的系统权限包括create session,create table等,新创建的用户至少要授予create session才可以连接数据库。

系统权限中对数据对象加上any,比如create any table,表示可以在任意用户中进行操作。通过查询视图dba_sys_privs可以获取用户的系统权限,其中select any table权限是指可以访问其他用户所有的表,但是仍然无法查询dba_数据字典视图,这个需要select any dictionary权限。

三、对象权限

对象权限就是指针对数据库对象的权限,比如对表的增删改查权限。在ORACLE中,对象的拥有者拥有对象的所有权限,比如用户创建了一个对象,该用户拥有这个对象的所有权限,并且对象的拥有者可以向外分配权限。通过数据字典视图dba_tab_privs可以查询用户拥有的对象权限。

四、角色权限

角色可以理解为一些权限的集合,角色的作用是用来简化权限的管理。我们可以创建一个角色,再将一些系统权限或对象权限一并赋予给这些创建的角色,再把这个角色赋予给用户,此时该用户就拥有这个角色下的所有权限。在ORACLE中,使用最多的还是两个系统角色,connect和resource。创建应用用户时可以给用户connect和resource角色这样该用户就可以满足大多数业务场景的需要,此外也可以把connect和resource角色授给不同的用户以实现权限管控和隔离。查询系统视图role_sys_privs和role_tab_privs可以分别查询角色拥有的系统权限和对象权限。通过查询dba_role_privs视图可以查询用户拥有哪些角色。

五、总结

除了以上几类用户权限,还有一种权限叫做列权限,即对表的某一列或几列赋权,在对表的精细化权限管理时会用到。由于mysql的用户和schema是分离的,所以mysql的权限管理看上去也更简单,mysql在8.0以后才支持角色权限,但是实际中也很少用到,而ORACLE的两个系统角色帮助管理员简化了用户权限的管理。mysql中可以通过show grants语句很方便查看用户的授权语句,在ORACLE可以通过拼接sql的方式导出用户的授权语句:

#对象权限授权语句
select 'grant '||PRIVILEGE||' on '||OWNER||'.'||TABLE_NAME||' to '||GRANTEE||';' from dba_tab_privs where GRANTEE='APP2';
#系统权限授权语句
select 'grant '||PRIVILEGE||' to '||GRANTEE||';' from dba_sys_privs where GRANTEE='APP2';
#角色授权语句
select 'grant '||GRANTED_ROLE||' to '||GRANTEE||';' from dba_role_privs where GRANTEE='APP2';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/43748.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

FreeRTOS 简单内核实现1 前言

为深入理解 RTOS 内核工作机制,笔者制作了名为 “FreeRTOS 内核简单实现” 的项目专栏 ,目标为自己动手从 0 到 1 编程一个简单的 RTOS 内核,从而实现任务并行工作的效果0、写在前面 为深入理解 RTOS 内核工作机制,笔者制作了名为 “FreeRTOS 内核简单实现” 的项目专栏 ,…

异常处理记录

异常处理过程: 当我们遇到异常时,我们首先需要把当前程序P的状态保存起来,而后跳到异常处理程序进行诊断。这里我们从指令集状态机S = {<R,M>}的视角来讨论咯 R为寄存器,M为内存。异常处理程序和P事两个不同的程序,它们使用不同的M,所以:只要异常处理程序不随意修…

kali

1.下载kali下载地址:Get Kali | Kali Linux 我们直接下载已经搭建好的kali虚拟机 ​​根据你的需求选择版本下载,一般都是选择64位的,点击VMware ​​直接开始下载,如果下载速度慢,请自行挂代理加速下载! 2.安装Kali下载完成之后是一个压缩包文件,请将其解压在无中文目录…

《操作系统原理》读书笔记

《操作系统原理》读书笔记信息 《操作系统原理(第4版)》 庞丽萍 华中科技大学出版社 摘录 绪论 存储程序式计算机冯诺依曼计算机体系结构从20世纪40年代至今,计算机体系结构不断地发展变化,但冯诺依曼计算机体系结构定义的一个存储程序式计算机的家族,几乎是当代所有计算机系…

SAP: SALV Grid 单元格颜色

SALV GRID 单元格颜色1、SAP: SALV Grid 单元格颜色 2、详细程序代码*&---------------------------------------------------------------------* *& Report Z17_43 *& *&---------------------------------------------------------------------* *& SA…

编程学习MarkDown学习

软件 Typora 标题 几个#代表几级标题,最多6级 基本操作 粗体 斜体 划线 分割线图片超链接 百度 列表 有序列表1, 2, 3. 无序列表 减号加空格 引用

GIT版本管理规范

版本管理规范文档编写中1. Git版本管理 1.1 分支命名先来一张典中典分支生命周期 以上生命周期仅作参考,不同开发团队可能有不同的规范,可自行灵活定义。 例如我们团队在开发时,至少需要保证以下流程: develop 分支和 hotfix 分支,必须从 master 分支检出 由 develop 分支…

基于禁忌搜索算法的TSP路径规划matlab仿真

1.程序功能描述 基于禁忌搜索算法的TSP路径规划,输出优化收敛曲线以及路线规划图。2.测试软件版本以及运行结果展示 MATLAB2022a版本运行3.核心程序for it = 1:Iterationit% 初始化本次迭代的最佳新解代价为正无穷 bestnewsol.Cost = inf;% 遍历所有动作并尝试应用它们 for …