我们有这样一个需求:在数据库中建立两个用户,用户A 用于创建一些视图,直接访问自己数据库中一个模式下的表,以及通过数据库链路访问其他数据库中的表;另一个用户B 能访问到这个用户A 中的视图,并且只能访问视图,且访问连接数有限制。 这个用户B 是用来给其他系统访问的,因此对权限和资源使用都需要有限制条件。 这种需求在很多行业的应用中都很常见。假如这是一道面试题,您该如何去回答呢? 我采用下面的方法来回答这个问题。 第一步,创建新用户A 和B 。 这里用户名称分别为ryd_interface_src 和ryd_interface ,对这两个用户都授予非常有限的权限。 drop user ryd_interface_src cascade; create user ryd_interface_src identified by ryd_interface_src; grant connect,create view to ryd_interface_src; drop user ryd_interface cascade; create user ryd_interface identified by ryd_interface; grant connect,create synonym to ryd_interface; 第二步,登录数据库一个模式中,授权给用户A ,使得用户A 能创建视图 conn qlzqclient/qlzqclient grant select on INVEST_CLOCK to ryd_interface_src with grant option; grant select on INVEST_LOG to ryd_interface_src with grant option; 这里授权方法加了一个with grant option ,请注意。 第三步,登录数据库用户A 中,创建视图 conn ryd_interface_src/ryd_interface_src create or replace view run_views as select id as doc_id, title,fbsj as upload_date,"" as branch_code from qlzq.runs_lantern@CLIENT_QLZQWEB where EXT1="1" and sysdate > START_TIME and sysdate < SOLID_TIME union select a.doc_id,a.title,a.upload_date,a.branch_code from qlzq.cms_doc_single_attr@CLIENT_QLZQWEB a left join qlzq.cms_doc_category_map@CLIENT_QLZQWEB b on a.doc_id=b.doc_id where a.state =1 and a.is_delete =0 and a.upload_date> sysdate-90 and b.cat_id=4; create or replace view INVEST_CLOCK_VIEWS as select * from qlzqclient.INVEST_CLOCK; create or replace view INVEST_LOG_VIEWS as select * from qlzqclient.INVEST_LOG;
Oracle用户访问权限与PUBLIC角色的关系mysql-5.1.60-linux-x86_64-glibc23 安装相关资讯 Oracle数据库学习
- Oracle数据库学习总结 (12/30/2013 18:30:01)
- Oracle数据库数据访问安全与审计方 (06/05/2012 09:55:58)
- Oracle 10g expdp/impdp在项目中实 (06/05/2012 09:53:10)
| - Oracle用户访问权限与PUBLIC角色的 (06/05/2012 09:57:17)
- 如何不备份已备过的Oracle归档日志 (06/05/2012 09:55:16)
- exp/expdp传输表空间和rman (06/05/2012 09:51:41)
|
本文评论 查看全部评论 (0)