当前位置:  数据库>oracle

如何实现Oracle中用户B只能访问用户A的视图

    来源: 互联网  发布时间:2017-04-28

    本文导语: 我们有这样一个需求:在数据库中建立两个用户,用户A 用于创建一些视图,直接访问自己数据库中一个模式下的表,以及通过数据库链路访问其他数据库中的表;另一个用户B 能访问到这个用户A 中的视图,并且只能访问视图,...

我们有这样一个需求:在数据库中建立两个用户,用户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;


    
 
 

您可能感兴趣的文章:

  • 怎么实现当用户多次尝试密码后锁定用户?
  • 特急!!!怎样用JAVA代码实现对web客户端用户licence管理(如:licence限定为5用户)
  • 谁知道:怎样用JAVA代码实现对web客户端用户licence管理(如:licence限定为5用户)
  • 使用ssh-keygen -t rsa建立密钥之后,可以实现两台linux主机之间的root用户免密码登陆。但无法实现两个普通用户之间免密码登陆
  • 我需要唯一用户在线,不能两个用户同时在线的JSP实现的设计文档
  • 如何获得当前登陆的用户名,并判断是否为超级用户(通过编程实现)?
  • 怎样实现把用户限定在自身的目录
  • linux 用户态锁的实现
  • 〔help〕有关JSP实现注册用户中的类型问题?
  • 对用户点击某个链接进行计数,如何实现?
  • 50分!几个小问题。对于一个J2EE项目:怎样实现对客户端数目的控制(如:licence限定为5用户,10用户)?...
  • 请问怎样用JAVAMAIL实现自动给用户发送邮件的功能?弄好了送100分
  • redhat9如何配置,实现在用户登陆的时候自动执行指定程序。
  • 普通用户身份执行一个程序来更改另外一个文件的读写属性,可以实现吗?
  • 如何使用shell脚本实现fdisk /dev/sdb的自动分区,不与用户进行交互
  • 请问聊天室中显示用户在线离线的原理是怎样?有哪些方法实现呢?
  • mysql数据库添加用户及分配权限具体实现
  • 不让用户选择文件,程序指定本地文件,Java可以实现上传到服务器吗?
  • UNIX SHELL实现su用户切换功能
  • asp.net session实现用户登录的疑问
  • ******"Servlet根据JSP视图的需求生成JavaBeans的实例并输出给JSP环境"如何实现上面这句话的效果??*******
  • 请问,用 gtk+ 怎么实现类似 windows 下列表视图+复选控件 的功能?
  • android开发教程之使用线程实现视图平滑滚动示例
  • mysql触发器实现oracle物化视图示例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ejb-ql只能 like '?%' 么?我想实现模糊查寻,想实现 like'%?%' 怎么办??
  • 在LINUX下,进程间访问临界资源只能通过效率很低的锁文件方式来实现吗?
  • 锁定Vector类型,使其同一时刻只能有一个线程访问,怎么实现??
  • unix 下 C++实现 ftp 到另一台主机上 修改文件内容 !能不能直接在主机上修改 还是只能get下来本地修改完后 在put上去
  • jQuery实现文本框只能输入数字/关闭输入法状态
  • JQuery实现INPUT只能输入数字与小数点
  • C# 实现只能输入数字的文本框
  • C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • boost unordered_map和std::list相结合的实现LRU算法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • linux下如实现与window下的驱动器实现文件共享??
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • qt如何实现:操作键盘实现数据的滚动?
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,