我刚刚为开发人员@ oracle数据库11.2.0.4创建了一个新的只读用户(TEMPDBREAD)
现在,他们喜欢仅从一个模式(TEMPDBUSER)对所有表的读取访问权限
有没有选择授予任何表的替代方法。
他们应该无法阅读其他方案。但是由于表结构经常更改,因此很难手动证明所有内容。
这就是为什么选择任何表都可以非常快速,轻松地获得奖励的原因 我还能拒绝访问其他方案吗?
任何想法我都可以解决这个非常简单的问题吗?
朱利安(BR Julian)
手动授予表访问权限 授予选择任何表
答案 0 :(得分:1)
不。您可以给他们select any table
并让他们读取数据库中的任何表,也可以给他们单独访问TempDBUser
中的每个表的权限。在绝大多数情况下,您希望向他们授予TempDBUser
中每个表的访问权限(大概是通过一个角色,因为会有很多需要运行查询的开发人员帐户)。
我尚不清楚为什么授予对象级访问权限对您来说会成问题。 “表结构更改”不需要新的授权,因为它们只是对现有对象的更改。如果您真的要经常创建新表,那么您只想将这些授权纳入您的变更控制和部署过程中即可。
如果您有一个打包的应用程序来定期创建新表(这是很糟糕的做法),则可以创建一个DDL触发器,该触发器每次在TempDBUser
中创建新表时都会发出授权。您需要一个DDL触发器,该触发器通过dbms_job
软件包提交了一份工作,该软件包完成了实际的授权,这是一个相当复杂的体系结构,但是可以工作。
答案 1 :(得分:0)
spool /tmp/grant_issue.sql
select 'grant select on TEMPDBUSER.' || table_name || ' TO TEMPDBREAD;' from dba_tables where owner='TEMPDBUSER' ;
spool off;
run the spool file.
sqlplus @/tmp/grant_issue.sql