1. 程式人生 > 其它 >在Oracle中建立新使用者, 並且賦予該使用者檢視其他使用者檢視的許可權

在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