在Oracle中创建新用户, 并且赋予该用户查看其他用户视图的权限
本文由Markdown语法编辑器编辑完成。 1. 需求提出在HIS与第三方系统进行集成时,某第三方系统需要访问HIS数据库的视图而非全部的数据库表。 HIS的数据库为Oracle,因此需要在Oracle中在原有用户的基础上,再增加一个用户,该用户仅能查看HIS中为其开放的视图。这也是为了系统之间的安全考虑的。 2. 解决方案经过技术查阅,找到的解决方案如下: (1)以system用户登录oracle数据库. --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数据库有可能会报错。 经过研究,出错的原因应该是,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. 参考链接:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |