首页 > 数据库 >Oracle将用户权限移植到另一个用户上

Oracle将用户权限移植到另一个用户上

时间:2023-06-30 17:14:10浏览次数:46  
标签:END 用户 owner user Oracle rec 权限 priv

问题描述:往往有些需求,A用户依赖于B用户创建,A用户想要获取B用户的权限,oracle没找到有命令可以直接继承,只能写一些语句来代替

 

1.查询用户下的权限有哪些

SET PAGESIZE 100
SET LINESIZE 200

COLUMN owner FORMAT A20
COLUMN table_name FORMAT A30
COLUMN privilege FORMAT A30

SELECT owner, table_name, privilege FROM DBA_TAB_PRIVS WHERE grantee = 'A_user';
SELECT owner, table_name, privilege FROM DBA_TAB_PRIVS WHERE grantee = 'B_user';

 

2.利用程序执行体把A_user用户权限授权给B_user

BEGIN
  FOR priv_rec IN (SELECT * FROM DBA_TAB_PRIVS WHERE grantee = 'A_user') LOOP
    EXECUTE IMMEDIATE 'GRANT ' || priv_rec.privilege || ' ON ' || priv_rec.owner || '.' || priv_rec.table_name || ' TO B_user';
  END LOOP;
END;
/

 

3.把A_user用户下除了自己本身以外的其他所有权限授权给B_user

BEGIN
  FOR priv_rec IN (SELECT * FROM DBA_TAB_PRIVS WHERE grantee = 'A_user' AND owner != 'A_user') LOOP
    EXECUTE IMMEDIATE 'GRANT ' || priv_rec.privilege || ' ON ' || priv_rec.owner || '.' || priv_rec.table_name || ' TO B_user';
  END LOOP;
END;
/

 

4.在程序执行的过程中,可能会发生一些权限依赖的视图会编译错误,导致执行失败,可以在程序执行体中加入异常处理

BEGIN
  FOR priv_rec IN (SELECT * FROM DBA_TAB_PRIVS WHERE grantee = 'A_user' AND owner != 'A_user') LOOP
    BEGIN
      EXECUTE IMMEDIATE 'GRANT ' || priv_rec.privilege || ' ON ' || priv_rec.owner || '.' || priv_rec.table_name || ' TO B_user';
    EXCEPTION
      WHEN OTHERS THEN
        NULL; -- Ignore the error and continue to the next iteration
    END;
  END LOOP;
END;
/

 

5.执行完成后,查询B_user与A_user是否有权限关联

SELECT * FROM DBA_TAB_PRIVS WHERE grantee = 'B_user' AND owner = 'A_user';

 

标签:END,用户,owner,user,Oracle,rec,权限,priv
From: https://www.cnblogs.com/avasteven/p/17517285.html

相关文章

  • centos7系统root无法通过su切换到某个普通用户 原创
    1、centos7系统root无法通过su切换到某个普通用户https://blog.51cto.com/wutengfei/2063716centos7系统root无法通过su切换到某个普通用户故障原因今天由于同事的误操作,在起某个服务的时候,指定错了参数,导致系统线程被用完。故障现象[root@data~]#su-siterecoffline``su:faile......
  • ESXI | ESXI6.7如何在网页端添加用户并且赋予不同的权限
    1、https://www.vediotalk.com/archives/4130我这里演示的话,我就添加一个用户然后只赋予它查看的权限为演示。一、首先添加一个用户管理—用户—安全和用户 ......
  • Oracle与MySQL的最大连接数和超时时间查询与设置
    Oracle--查询最大连接数SELECTVALUEFROMv$parameterWHERENAME='processes';/*IDLE_TIME:限制每个会话所允许的最长连续空闲时间,超过这个时间会话将自动断开。(参数值是一个整数,单位是分钟,UNLIMITED不限制)CONNECT_TIME:限制指定会话的总运行时间限制,超过这个时间会话将......
  • adb/appium 重置手机数据/权限失败 的解决方案
    现象:在启动appium时,设置了noReset为False,或者直接用adb清除数据,报错下次执行APP自动化时,仍然是登录状态、记住了权限 解决方案:打开开发者选项,打开以下3个开关,重启手机,重新连接USBUSB调试、OEM解锁、禁止权限监控 再次执行adb清除命令,成功,用appium打开APP指定noRese......
  • 报表的实现以及用户组资源注册
    报表的实现以及用户组资源注册报表实现1.1帆软报表是以表格、图表的形式来动态展示数据,企业通过报表进行数据分析,进而用于辅助经营管理决策。FineReport是一款用于报表制作,分析和展示的工具,用户通过使用FineReport可以轻松的构建出灵活的数据分析和报表系统,大大缩短项目周......
  • 若依管理系统-权限介绍
    1角色管理本文中都以若依自带的系统管理下面的岗位管理为例进行说明。首先新建一个测试用户角色,菜单权限只是勾选了系统管理下的用户、角色、菜单三项。 使用test用户登录进行访问的时候,只能看到勾选的菜单。 修改测试用户角色,发现岗位管理下面有五个选项,分别是岗位查询......
  • 第十章 app端用户行为处理
    第十章app端用户行为处理目标能够理解app端的行为记录能够完成作者关注行为的功能能够完成文章点赞行为的功能能够完成文章阅读行为的功能能够掌握不喜欢和收藏功能的实现思路能够完成app文章关系展示功能1app-用户操作行为记录用户行为数据的记录包括了关注、点赞、......
  • 音乐推荐系统 系统算法:基于用户的协同过滤推荐算法
    音乐推荐系统系统算法:基于用户的协同过滤推荐算法编程语言:python数据库:sqlite框架:MVCweb应用框架:Django解压就可以运行(自己需要有调试项目环境的能力),需要软件python和pycharm或者Anaconda项目有配套的文档原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/678695319073.......
  • 亿级用户实时互动,GaussDB(for Redis)带您沉浸式体验迷你世界
    摘要:GaussDB(forRedis)助您聊天不卡顿,畅玩更痛快爱冒险是人的天性,游戏创造的虚拟世界充分满足了人们这一需求,玩游戏也成为人们闲暇时光的重要放松方式之一。作为国内头部沙盒创意平台,《迷你世界》目前月活用户超过1亿,用户创作的场景地图超过2亿。持续增加的用户数,层出不穷的游戏地......
  • oracle函数 wm_concat 与 listagg
    1.wm_concatselectt.type,to_char(wm_concat(t.id||'---'||t.seq))asid_seq,to_char(wm_concat(t.seq))asseqsfrom(select'A'type,'A001'id,1seqfromdualunionallselect'A'type,'A002......