将指定用户下所有表的查询权限赋权给查询用户
将指定用户下所有表的查询权限赋权给查询用户[转]
-----------------------------------------------2013/11/1
oracle的开发和管理往往都是分开的,当然不否认这种"集万千宠爱于一身"的人才也大有人在,但是在公司,往往开发人员兼顾程序和数据库的设计与开发,而oracle dba则是负责oracle的安全与维护。那么这就出现了一个问题,权限问题,不是所有人都可以有dba权限的,这样很容易造成不安全的隐患。所以要合理的分配用户和权限。 以下举例说明:
一、创建了一个查询用户rptuser,该用户具有scott(根据公司具体要求替换用户)用户下所有表的查询权限。
注意:如果只是把scott用户下emp表的select权限赋权给rptuser,那么很简单,直接在dba用户下执行grant select on scott.emp to rptuser;即可,那是因为仅此一条语句,所以可以直接赋权,若是要求将一个具有几千几万张表的用户(此时若不是scott用户只有9张表)下的所有表赋权给一个查询用户,那岂不是悲剧了?
稍安勿躁,下面有请"绝招"上场,大家鼓掌欢迎~~吼吼
二、两种方式:此处我采用方法二列举过程
1.select 'grant select on '|| tname ||' to rptuser ;' from tab;
(当前用户有dba权限如system或者sysdba,执行输出脚本)
2.select 'grant select on user.' || tname || ' to rptuser;' from tab;
(当前用户无dba权限也就是scott用户,用system或者sysdba用户执行输出脚本)
输出内容为:
grant select on DEPT to rptuser ;
grant select on EMP to rptuser ;
grant select on BONUS to rptuser ;
grant select on SALGRADE to rptuser ;
grant select on AVGSAL to rptuser ;
grant select on BOOK to rptuser ;
grant select on TEST_INDEX to rptuser ;
grant select on TB_EMPLOYEES to rptuser ;
三、直接复制此内容使用system用户执行即可,这里我使用的是oracle的客户端Toad for oracle,执行结果如下:
赋权执行成功。
四、再用具有dba权限的用户给rptuser用户赋予建同义词的权限
grant create synonym to rptuser;
五、再在scott用户下执行
select 'create synonym ' || tname || ' for scott.' || tname || ';' from tab;
或者
select 'create synonym '|| table_name || ' for scott.' || table_name || ';' from user_tables;
输出脚本内容为:
create synonym DEPT for scott.DEPT;
create synonym EMP for scott.EMP;
create synonym BONUS for scott.BONUS;
create synonym SALGRADE for scott.SALGRADE;
create synonym BOOK for scott.BOOK;
create synonym TB_EMPLOYEES for scott.TB_EMPLOYEES;
create synonym TEST_INDEX for scott.TEST_INDEX;
六、最后将这个脚本内容用rptuser查询用户执行,完成
七、用rptuser用户查询scott用户下的表,即无需from scott.tablename了,可以直接查询了
SQL> show user;
USER is "RPTUSER"
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
总结:这种办法的好处就是可以使dba简化繁琐的工作,若是一张一张表的赋权,那么要是遇到一个用户几千张,不,估计几十张,你就得疯了,所以采用此方法。
举一反三:如果赋权给查询用户sequence的查询权限也是一样,我想大家都看得明白了,仅给出语句,过程就不写了,呵呵。select 'grant select on ' || sequence_name || ' to itreport;' from dba_sequences where sequence_owner='USER_NAME';
注意两点:1.此处应该用具有dba权限的用户执行此语句
2.红色部分USER_NAME为具体用户名
其他过程如上所述,此处省略十分钟的口水。。。。
转载于:https://www.cnblogs.com/jackhub/p/3402227.html
将指定用户下所有表的查询权限赋权给查询用户相关推荐
- oracle把所有表查询权限赋与另一用户
oracle把所有表查询权限赋与另一用户. 2008-02-01 9:07 昨天有一同事问如何把oracle里一个用户所有表查询权限赋与另一用户,在网上查了好像没有现成的一劳永逸的语句,只能手了一个批 ...
- oracle sqlserver 查看指定用户下面的表
一.oracle 的sql语句查看指定用户下表的数量 (KOKO提供) ---------------------------------------------------------------- ...
- ORACLE授权用户查询另一个用户下的表与视图
实际应用中,会遇到在某个用户下需要查询另一个用户下的表数据或视图的情况,然而在没有授权时,会提示无权限操作的错误.那就需要通过授权处理后,再能进行查询操作,下面我们来看看是怎么处理的. 一.系统权限说 ...
- oracle查看表中记录数,Oracle 查询某一用户下所有表的记录数
要查询Oracle下某一个用户下所有表的记录条数,可以采用如下办法: 1.创建function count_tables_rows create or replace function count_t ...
- mysql查询当前用户下的表空间_oracle 如何查看当前用户的表空间名称
如何查询当前用户的表空间名称?因为oracle建立索引,需要知道当前用户的表空间,查找了一下资料 --查询语法-- select default_tablespace from dba_users w ...
- oracle查询某个用户下所有表记录总数
1.查询库中的表名和表中记录数: SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T; 2.查询库中记录总数: SELECT SUM(A.NUM_RO ...
- oracle 用户下建表进行加密(redact)实验
实验准备:oracle scott用户下建表进行加密(redact)实验 1. 加密准备工作: REVOKE dba FROM SCOTT; GRANT CONNECT, resource, unli ...
- bootstraptable获取所有数据_一键获取oracle用户下所有表的表名与其数据量
概述 作为DBA,对数据库中表段.索引段之类的数量,大概的级别是需要有个大致了解的,今天主要分享一个存储过程,可以很实用的获取到oracle用户下所有表的表名与其数据量. 查询当前用户名下所有表 se ...
- oracle删除当前用户下所有表
oracle删除当前用户下所有表 1.如果有删除用户的权限,则可以: drop user user_name cascade; 加了cascade就可以把用户连带的数据全部删掉. 删除后再创建该用户. ...
- spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
1.spool 命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创 ...
最新文章
- [20180412]订阅+镜像切换
- ExtJs_关于combobox的那些分页二三事
- MDL--元数据锁的锁请求与锁等待+元数据锁类对象
- unity3d中画线有几种方式_【源码】Unity3D运行期间如何绘制直线-百度经验
- [密码学] Shannon保密系统的信息理论 熵与完美保密性
- linux 开机自动启动服务
- LeetCode14 Longest Common Prefix
- 合并数组内的对象的数字
- css display: inline-block 去间隙
- 编程语言_JavaScript_面试题005
- 【luogu P2319 [HNOI2006]超级英雄】 题解
- LeetCode131:Palindrome Partitioning
- ServletRequest--从html页面获取信息
- 用excel制作双层饼图_excel双层饼图怎么做
- 导航栏的HTML的布局方式
- 个性签名html,经典个性签名-2021最新QQ经典-QQ经典个性签名-腾牛个性网
- 再读德鲁克#3 从管理外包人员到全面质量管理
- CSS DIV 滚动(CSS,HTML)
- JIRA部署破解和confluence整合
- 基于Python爬虫的大众点评商家评论的文本挖掘
热门文章
- 《测试驱动数据库开发》——2.1 TDD中类的角色
- 屏蔽Codeforces做题时的Problem tags提示
- python复习第一节
- Android Add new target
- linux子进程知道父进程退出的解决方案
- js基础-13-常见DOM操作
- universe是什么牌子_【寰宇影视】品牌介绍→寰宇电影_寰宇娱乐_买购网
- visio中公式太小_冲压模具设计:冲床吨位计算公式、实例分析,设计师值得一看...
- 空间说说html,适合发空间说说的经典心情短语
- 动态规划实战16 leetcode-198. House Robber