oracle中,用户如何获得grant权限?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中,用户如何获得grant权限?相关的知识,希望对你有一定的参考价值。

用户user1中有表test1,test2,
用户user2希望可以有权限来查询user1中的test1和test2以及user1以后新增加的表。
要求user2查询user1的表的权限,是由user1赋予,而不是sys账户赋予。
所以面临2个问题,
1.user1如何获得grant的权限?
2.user2如何自动获得user1新增表的select权限?

1、系统权限的授予权获得
在获得一个系统权限的同时选择WITH ADMIN OPTION从句。
例: grant Create any view to scott WITH ADMIN OPTION;
2、对象权限的授予权获得
在获得一个系统权限的同时选择WITH ADMIN OPTION从句。
例:grant Select on emp to Myuser WITH GRANT OPTIION;
3、对于用户自身对象的对象授予权限没有必要获得,可以直接授予其他用户。
4、user2获得user1所有表的权限有两种方法实现:
a) 登入user1用户,把表的Select权限一个一个授予user2.
b) 登入DBA用户权限授予suer2用户Select Any权限。
例:Grant Select Any Table to user2; --这样获得是所有用户表的Select权限。
参考技术A 如果用户1中有表很多。1、你只是要把这2个表的权限给USER2 2、对于以后新增的表自动赋权。看来你只能去写个触发器了。监控用户的操作,增加表了就赋权。不过为什么增加表的时候不执行赋权语句呢?奇怪追问

user1中有3000多张表,需要把这些表的全部select权限都授予user2。
手工操作太麻烦,所以想写java来控制。
临时需要用到oracle,临时学的,还不知道有触发器这概念。
能否多指教一些?
比如,如何在增加表的时候执行赋权?这个SQL代码怎么写?

追答

我觉得最简单的办法:你只需要用SQL将这3000多个表 一次性赋权给 USER2。 写个SQL语句将这些赋权的语句拼出来,然后 拷贝 粘贴到命令窗口执行就可以了。如果USER1再增加表,且需要赋值给USER2,建议建立表的同时就将权限赋予USER2。

SELECT 'GRANT SELECT ON '||TABLE_NAME ||' TO USER2 ;'
FROM ALL_ALL_TABLES
WHERE OWNER='USER1'

如果是想USER1增加表了,就自动赋值给USER2,这就不行了,这是手工赋权

本回答被提问者采纳

以上是关于oracle中,用户如何获得grant权限?的主要内容,如果未能解决你的问题,请参考以下文章

ORA-0131:Insufficient privileges(Oracle授予用户DEBUG权限)

ORA-01031权限不足怎么解决?

oracle 存储过程 权限问题 PL/SQL: ORA-01031: 权限不足

Oracle命令:授权-收回权限-角色

oracle授权时“with admin option”与“with grant option”的区别

Oracle 用户权限 Grant