在Oracle中创建新用户, 并且赋予该用户查看其他用户视图的权限
在Oracle中创建新用户, 并且赋予该用户查看其他用户视图的权限
1. 需求提出
在HIS与第三方系统进行集成时,某第三方系统需要访问HIS数据库的视图而非全部的数据库表。
HIS的数据库为Oracle, 因此需要在Oracle中在原有用户的基础上,再增加一个用户,该用户仅能查看HIS中为其开放的视图。这也是为了系统之间的安全考虑的。
2. 解决方案
经过技术查阅,找到的解决方案如下:
(1)以system用户登录oracle数据库.
(2)创建用户并且为用户赋予查看视图的权限.
这里假设要创建一个tester用户,登录密码为:“123456”.
HIS需要开放的视图是在原来用户 outpatient下的,视图名称为:v_daily_charge.
此时,应该撰写的SQL为:
--01: 创建tester用户,并且初始密码为123456. create user tester identified by "123456"; --02: 赋予该用户登录数据库的权限. grant create session to tester; --03: 赋予该用户查看outpatient下的视图v_daily_charge的权限. grant select on outpatient.v_daily_charge to tester;
注意:在运行以上第三条SQL的时候,oracle数据库有可能会报错。
“ORA-01720: 不存在对 emergency.t_cost表的授权选项。”
经过研究,出错的原因应该是,tester用户要访问outpatient用户的视图,该视图不仅会查阅outpatient用户下的某些表,如t_user, t_dept表,而且还访问了其他用户的表,如emergency用户下的t_cost表。
为了避免以上的错误,就需要在为tester用户赋予查看outpatient的视图权限前,先将outpatient视图中需要访问到的emergency用户下的表的权限开放给outpatient用户。
因此,在第三句SQL前还需要补充几句:
--04: 由于在outpatient用户下的视图需要访问另一个用户emergency下的表,因此需要将emergency用户下的表t_cost先授权给outpatient和tester这两个用户.
grant select on emergency.t_cost to outpatient with grant option;
如果除了赋予tester用户, 查看outpatient下视图的权限外,还想再赋予tester用户查看outpatient用户下表t_user, t_dept表的权限,则需要增加以下的SQL:
--赋予tester用户查看outpatient用户下的t_user和t_dept表的权限.
grant select on outpatient.t_user to tester; grant select on outpatient.t_dept to tester;
3. 参考链接:
oracle建立视图,创建用户并授予查询权限
http://www.cnblogs.com/king1302217/p/4543543.html
ORA-01720: 不存在“*.*“授权选项
http://blog.csdn.net/xyy511/article/details/41546209
————————————————
版权声明:本文为CSDN博主「inter_peng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/inter_peng/article/details/79462153
原文地址:https://www.cnblogs.com/yao5758/p/15094254.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中MongoDB如何实现远程自动备份详解
- 覆盖原先的PATH导致命令失效提示command not found的解决方法
- Linux中可以节省你时间的15个命令别名
- Linux下利用unzip命令如何解压多个文件详解
- linux查看磁盘使用情况方法
- 详解Linux(centos7)下安装OpenSSL安装图文方法
- 面试官:考你几个简单的事件问题吧
- 如何创建Linux的swap交换分区文件的方法步骤
- Linux利用keepalived实现lvs的高可用性的操作方法
- Canvas系列(11):动画中级
- 使用autoconf生成Makefile并编译工程的步骤
- frida- registernatives获取so层动态注册函数
- Ubuntu下安装并配置VS Code编译C++的方法
- LInux下如何挂载光盘找rpm包的方法步骤
- Linux 改变文件大小的方法