达梦数据库授权给某个用户查询其他指定用户下所有表的权限

方法1:

新版本有一个数据库参数

 GRANT_SCHEMA,表示是否开启授予和回收模式权限功能。0:否;1:是

此参数为静态参数,默认是0,将改参数修改为1后,重启数据库生效。

将参数修改为1

SP_SET_PARA_VALUE(2,'GRANT_SCHEMA',1);

参数生效后,可直接执行SQL进行授权,例如将模式 B 下所有对象的查询权限授予用户 A

GRANT SELECT ON SCHEMA B TO A;

方法2:

可以通过创建一个存储过程来实现:

CREATE OR REPLACE PROCEDURE GRANT_ALL_SEL(GRANTOR IN VARCHAR2, GRANTEE IN VARCHAR2) ASSQLSTMT VARCHAR2(4000);CURSOR CUR FOR SELECT ID, NAME FROM SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN ('STAB', 'UTAB') AND (PID = -1 OR PID = 0) AND SCHID = (SELECT ID FROM SYSOBJECTS WHERE TYPE$ = 'SCH' AND NAME = GRANTOR);TYPE MYREC IS CUR%ROWTYPE;REC_V MYREC;TYPE R_PRIV IS RECORD (CUR_PRIV_NAME VARCHAR2(128), CUR_BE_GRANT CHAR(1), CUR_CAN_GRANT CHAR(1), CUR_IS_GRANT CHAR(1), ORG_PRIV_NAME VARCHAR2(128), ORG_CAN_GRANT CHAR(1)); TYPE T_PRIV IS TABLE OF R_PRIV;t_p T_PRIV;OBJ_PRIV CURSOR;
BEGINFOR REC_V IN CUR LOOPOPEN OBJ_PRIV FORWITH CUR_PRIVS(PRIV_NAME, BE_GRANT, CAN_GRANT, ISGRANT) AS(SELECT 'SELECT', 'Y', 'N', 'Y' FROM DUAL )SELECT CUR_PRIVS.*, SF_GET_SYS_PRIV(ORG_PRIV.PRIVID), ORG_PRIV.GRANTABLEFROM CUR_PRIVSLEFT JOIN (SELECT * FROM SYSGRANTS WHERE OBJID = REC_V.ID AND COLID = -1 AND URID = 50331751) ORG_PRIV ON CUR_PRIVS.PRIV_NAME = SF_GET_SYS_PRIV(ORG_PRIV.PRIVID);FETCH OBJ_PRIV BULK COLLECT INTO t_p;CLOSE OBJ_PRIV;FOR I IN 1..t_p.COUNT LOOPSQLSTMT := NULL;IF (t_p(I).CUR_IS_GRANT = 'Y') THENIF (t_p(I).CUR_CAN_GRANT = 'Y') THENSQLSTMT := 'GRANT ' || t_p(I).CUR_PRIV_NAME || ' ON "' || GRANTOR || '"."' || REC_V.NAME || '" TO "' || GRANTEE || '" WITH GRANT OPTION';ELSEIF (t_p(I).ORG_PRIV_NAME IS NULL) THENSQLSTMT := 'GRANT ' || t_p(I).CUR_PRIV_NAME || ' ON "' || GRANTOR || '"."' || REC_V.NAME || '" TO "' || GRANTEE || '"';ELSEIF (t_p(I).ORG_CAN_GRANT = 'Y') THENSQLSTMT := 'REVOKE GRANT OPTION FOR ' || t_p(I).CUR_PRIV_NAME || ' ON "' || GRANTOR || '"."' || REC_V.NAME || '" FROM "' || GRANTEE || '" CASCADE';END IF;END IF;END IF;ELSEIF (t_p(I).CUR_BE_GRANT = 'Y' AND t_p(I).ORG_PRIV_NAME IS NOT NULL) THENSQLSTMT := 'REVOKE ' || t_p(I).CUR_PRIV_NAME || ' ON "' || GRANTOR || '"."' || REC_V.NAME || '" FROM "' || GRANTEE || '" CASCADE';ELSEIF (t_p(I).CUR_CAN_GRANT = 'Y' AND t_p(I).ORG_CAN_GRANT = 'Y') THENSQLSTMT := 'REVOKE GRANT OPTION FOR ' || t_p(I).CUR_PRIV_NAME || ' ON "' || GRANTOR || '"."' || REC_V.NAME || '" FROM "' || GRANTEE || '" CASCADE';END IF;END IF;END IF;IF (SQLSTMT IS NOT NULL) THENEXECUTE IMMEDIATE SQLSTMT;END IF;END LOOP;END LOOP;COMMIT;
END GRANT_ALL_SEL;

然后调用此存储过程即可,例如将模式 B 下所有对象的查询权限授予用户 A

CALL GRANT_ALL_SEL('B','A');

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人大金仓国产数据库与PostgreSQL

一、简介 在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。据了解,Kingba…

Python之参数星号(*)使用笔记

背景 在学习python时发现方法调用和方法定义会经常发现有带星号的标记,为了弄明白是怎么使用的。特此做个笔记。 一、参数符号对比速查表 符号类使用场景作用描述示例无符号函数定义/调用普通位置参数或关键字参数.def func(a, b)*函数定义收集多余位置参数为元组…

使用haproxy实现MySQL服务器负载均衡

一、环境准备 主机名IP地址备注openEuler-1192.168.121.11mysql-server-1openEuler-2192.168.121.12mysql-server-2openEuler-3192.168.121.13clientRocky-1192.168.121.51haproxy 二、mysql-server配置 [rootopenEuler-1 ~]# yum install -y mariadb-server [rootopenEuler…

Python与Web3.py库:构建去中心化应用的未来

Python与Web3.py库:构建去中心化应用的未来 在区块链的世界里,“去中心化”是最核心的理念之一,它赋予了用户更多的控制权和自由,消除了传统中心化系统中的单点故障和信任问题。而在这场技术革命中,Web3.0无疑是最受瞩…

对“预训练”的理解

预训练有什么用 传统的机器学习是偏数学的,对数据的量不做过多要求,而深度学习的项目通常是有大量的数据可供使用。 在平常的任务或者项目中,我们可能并没有大量数据,只有少量数据,在这时我们就可以通过“借用”有大…

VMware Ubuntu 共享目录

在VMware中挂载Ubuntu共享目录需要以下步骤,分为设置共享文件夹和在Ubuntu中挂载两部分: 一、VMware 设置共享文件夹 关闭Ubuntu虚拟机 在配置前,建议先关闭虚拟机(若已运行需关闭,部分VMware版本支持热添加&#xff0…

AF3 crop_chains函数解读

AlphaFold3 feature_processing_multimer模块的crop_chains函数的功能是对多条链的蛋白质结构预测任务中的MSA(多序列比对)特征和模板特征进行裁剪(cropping)。裁剪的目的是为了控制输入模型的MSA序列数量和模板数量,以适应模型的输入限制或优化计算效率。 源代码: def…

Java基础-数组,集合创建方式

Java 中 new 关键字的作用 在 Java 中,new 关键字用于 在堆内存中分配空间 并创建对象。 数组 和 集合 在 Java 中都是对象,因此必须使用 new 来创建实例。Java 和 C 之间的主要区别在于 内存管理 和 对象的创建方式。 Java 与 C 中数组 & 集合的创…

LeeCode题库第三十九题

39.组合总和 项目场景: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同…

大模型应用案例 | 大模型+金融运维,擎创携手某证券创新运维能力新范式

一、当大模型遇上金融运维:一场让告警处理“脱胎换骨”的变革 2022年底,ChatGPT的横空出世让AI技术彻底出圈;短短两年后,大模型已悄然潜入金融行业的“心脏地带”——运维系统。面对指数级暴增的告警信息、碎片化的处理流程&#…

【MongoDB】在Windows11下安装与使用

官网下载链接:Download MongoDB Community Server 官方参考文档:https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 选择custom类型,其他默认 注意,此选…

阿里云轻量级服务器通过宝塔安装PgVector要点

设置环境变量: export PG_HOME/www/server/pgsql export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/www/server/pgsql/lib export PG_CONFIG/www/server/pgsql/bin/pg_config export PGDATA/www/server/pgsql/data PATH$PATH:$HOME/.local/bin:$HOME/bin:$PG_HOME/bin ali…

OpenSSL 基础使用流程

理解 OpenSSL 的基础使用流程是学习如何进行安全通信的关键,特别是在实现 SSL/TLS 连接时。以下是 OpenSSL 基础使用流程的一个简要总结,并附上一个简单的示例代码,帮助你理解如何通过 OpenSSL 建立一个基本的安全通信连接。 OpenSSL 基础使…

什么是最终一致性,它对后端系统的意义是什么

最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…

SQL命令详解之增删改数据

目录 简介 1 添加数据 1.1 基础语法 1.2 SQL 练习 2 修改数据 2.1 基础语法 2.2 SQL 练习 ​3 删除数据 3.1 基础语法 3.2 SQL 练习 总结 简介 在数据库操作中,增、删、改是最基础的操作,它们通常对应着SQL中的INSERT、DELETE和UPDATE命令。…

std::allocator_traits 能做但 std::allocator 不能的事情

🌟 std::allocator_traits 能做但 std::allocator 不能的事情 1️⃣ 适配自定义分配器 假设你要实现一个内存池 MyAllocator,而 STL 容器默认使用的是 std::allocator。 如果你希望 STL 容器可以使用你的 MyAllocator,你 不能直接用 std::a…

QT——c++界面编程库

非界面编程 QT编译的时候,依赖于 .pro 配置文件: SOURCES: 所有需要参与编译的 .cpp 源文件 HEADERS:所有需要参与编译的.h 头文件 QT:所有需要参与编译的 QT函数库 .pro文件一旦修改,注意需要键盘按 ctrls 才能加载最新的配置文…

基于专利合作地址匹配的数据构建区域协同矩阵

文章目录 地区地址提取完成的处理代码 在专利合作申请表中,有多家公司合作申请。在专利权人地址中, 有多个公司的地址信息。故想利用这里多个地址。想用这里的地址来代表区域之间的专利合作情况代表区域之间的协同、协作情况。 下图是专利合作表的一部分…

汽车小助手智能体

汽车小助手:智能驱动汽车服务新体验 链接:文心智能体平台AgentBuilder | 想象即现实 文心智能体平台AgentBuilder,是百度推出的基于文心大模型的智能体平台,支持广大开发者根据自身行业领域、应用场景,选取不同类型的…

各种传参形式

一、QueryString 前端请求:http://localhost:8080/test/user/find?id26&namezhangsan 后端接收: 1.参数接收: RequestMapping("/find") public void find(String id,String name){... }2.对象接收: RequestMa…