今天遇到一個數據庫的問題:
系統數據庫用戶下創建了幾個視圖用於外部系統開發報表使用,當外部系統提取視圖數據時,需要通過一個只能訪問需要視圖權限的用戶,於是想到給他創建一個新的用戶,並給這個用戶分配只能訪問這幾個視圖的權限。
- 使用 oracle sql developer 客戶端登陸數據庫。
2. 查看當前數據庫用戶擁有的角色:
select * from USER_ROLE_PRIVS;
查看用戶系統權限:select * from dba_sys_privs;
查看用戶系統權限:select * from user_sys_privs;
3、因為系統數據庫用戶擁有dba權限,所以,使用數據庫系統用戶創建用戶:
create user BI identified by 123;
4、給BI用戶授權連接權限:
grant connect to BI;
5、給BI用戶授權
grant RESOURCE to BI;
6、給BI用戶授權select 某視圖的權限:
7、使用BI用戶連接數據庫:
查詢視圖發現提示表或視圖不存在:SELECT * FROM VW_MONTHLY_BUDGET_ANALYSI;
在視圖前加上視圖所有者用戶名稱則可以查詢成功。 eg:SELECT * FROM FSSC.VW_MONTHLY_BUDGET_ANALYSI;
7、給BI用戶授權同義詞權限:
8、使用BI用戶連接數據庫:
此時查詢發現還是不可以!!!
9、在BI用戶下創建同義詞視圖:
10、BI用戶下直接查詢視圖名稱則可以查詢
11、但是登陸BI用戶,則在視圖列表里看不到任何視圖,如何能夠查詢並且登陸用戶也能看到該視圖?