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

现在有一个需求,需要开放一些"特殊“的权限给开发组。 具体的背景是这样的: 有三个数据库用户,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 的情况。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-07-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大神带我来搬砖

用antrun maven插件检查文本文件

如果想检查java代码的质量,那么使用checkstyle plugin就可以.但是怎么检查其他文本文件的内容呢?可以使用antrun这个插件. 比如,我们的...

2566
来自专栏杨建荣的学习笔记

MySQL数据导入导出牛刀小试(r5笔记第3天)

最近学习了下MySQL中数据的导入导出,发现功能点真是丰富,很方便很快捷。 这些导入导出的方式还是有不少的细节的,在此先不做扩展和深入分析。 --数据导出 方式...

3714
来自专栏企鹅号快讯

MySQL的常用操作命令整理

缘由:初次接触命令行操作MySQL数据库,使用还不熟练,故整理之,方便日后查阅。 备注: 用户登录MySQL后,对数据库操作的命令基本都以”;” 或 “g”结尾...

2006
来自专栏令仔很忙

SQL server 2008 无法连接Local服务器的解决办法

 SQL server 2008 中连接local服务器时,显示无法找到local

1.5K2
来自专栏xiaoheike

linux 创建sudo账号.md

root ALL=(ALL) ALL 在该行下面添加: username ALL=(ALL) ALL

941
来自专栏性能与架构

SQL与MongoDB的对应关系图表

关系数据库有一套标准的SQL语句来操作数据库,MongoDB是文档型数据库,概念与操作方式与SQL都不相同,下面的几张表全面的表达了SQL与MongoDB的对应...

3726
来自专栏禁心尽力

mybatis_开发篇

一、使用mybatis的动态代理方式开发 需求:这里以crm系统中分页条件查询所有的客户信息的功能为例? 1、创建工程 2、引入所需的jar包 3、引入日志文件...

1885
来自专栏james大数据架构

Access数据库多表连接查询

第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A、B、C,A关联B,B关联C,均用ID键...

2406
来自专栏debugeeker的专栏

mysql导出数据库表结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

1302
来自专栏测试开发架构之路

SQL之mysql常用操作语句(入门级)

1.进入数据库: mysql -u root -p    mysql -h localhost -u root -p database_name   2.列出数...

2798

扫码关注云+社区