前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于权限设置的一个小把戏(r2第27天)

关于权限设置的一个小把戏(r2第27天)

作者头像
jeanron100
发布2018-03-14 15:39:23
5360
发布2018-03-14 15:39:23
举报

现在有一个需求,需要开放一些"特殊“的权限给开发组。 具体的背景是这样的: 有三个数据库用户,tabowner, tabconn, tab_temp三个用户 tableowner是owner用户,里面存放着表,索引,序列,存储过程等。 tabconn是一个连接用户,在这个用户里面建立了一些同义词,可以直接通过这个用户来进行数据的增删改查。 tab_temp是一个临时的连接用户,通过这个用户只能查询一些有限的信息,不能进行数据的改动。而且不能执行select sequence_name.nextval from dual这样类型的语句,避免人为干扰sequence的增长。 现在的问题是,因为没有开放select on sequence的权限给tab_temp,所以通过tab_temp无法查询到tabowner里的sequence信息。 举个简单的例子。 --tabowner创建一个视图,从user_sequence里面查询当前schema中的sequence信息,得到的结果是实时的。 SQL> create view a as select *from user_sequences; View created. --里面有198条记录 SQL> select count(*)from a; COUNT(*) ---------- 198 如果我尝试把视图访问的权限赋予tabconn,那么是否可以通过tabconn访问到tabowner中的user_sequences信息呢? SQL> grant select on a to tabconn; Grant succeeded. SQL> conn tabconn/tabconn Connected. SQL> select count(*)from tabowner.a; COUNT(*) ---------- 0 可以看到,这样是行不通的 不过可以做一个小把戏,使得权限的访问可以选择性的开放。通过dblink 目前tabconn可以访问all_sequences的信息,里面包含tabowner里的sequence信息 可以在tab_temp下创建一个db link,然后通过这个db link来做一些工作。 SQL> conn tab_temp/tab_temp Connected. SQL> SQL> create database link temp_link connect to tabconn identified by tabconnusing 'TESTDB'; Database link created. SQL> select count(*)from all_sequences@temp_link; COUNT(*) ---------- 230 可以看到能够查到数据了,不过如果足够细心的话,发现结果好像多了一点,按照我们的要求,指定查询的是tabowner下的sequence信息。 SQL> select count(*) from all_sequences@temp_link where sequence_owner='TABOWNER' 2 / COUNT(*) ---------- 197 这样就没有问题了。 创建视图 create view sequence_summary_v as select *from all_sequences@temp_link where sequence_owner='TABOWNER'; 直接暴露视图也不太好,可以通过同义词来进行屏蔽 SQL> select count(*)from sequence_summary; COUNT(*) ---------- 197 SQL> create synonym sequence_summary for sequence_summary_v; Synonym created. 这样对于开发来说,就能够查到实时的sequence信息了。而且也能够杜绝增长/修改sequence value 的情况。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档