![](/img/trans.png)
[英]gather dba_users information in Oracle database when connected as normal user without granting privileges
[英]gather dba_users information in Oracle database when connected as a user
我是Oracle數據庫的新手。 我看到如果我以sys
用戶身份連接,我可以做
select * from dba_users;
但是一旦完成conn nonsys@dbid
,我就不能再這樣做了。 我會得到一個錯誤的說法
ORA-00942: table or view does not exist
select * from sys.dba_users;
也不工作。
您能否解釋一下這是為什么,以及如何select * from dba_users;
后以非系統用戶身份連接?
另外, disconnect
使我完全斷開連接; 是否只能“退出”當前用戶並在sqlplus中返回sys
,如果可以,該怎么做?
Oracle中的DBA_ *視圖包含有關數據庫中所有對象的信息,無論其所有權如何。 默認情況下,只有管理帳戶有權訪問這些視圖。 出於安全原因這樣做。 為了使“普通”用戶能夠訪問這些視圖,必須直接基於每個視圖或通過諸如SELECT ANY TABLE(不建議)之類的系統特權全局授予它們訪問權限。 最好授予對用戶真正需要的實際DBA_視圖的訪問權限。 通常,ALL_視圖將為典型用戶提供他們所需的所有信息。
要退出當前用戶會話並以其他用戶身份連接,請使用CONNECT命令:
CONNECT sys/pw as sysdba
編輯:
對象的所有者可以通過GRANT命令將對任何對象的訪問權限授予其他用戶或角色:
GRANT SELECT ON dba_users TO nonsys;
作為用戶SYS執行,這將向用戶nonsys授予對dba_users視圖的選擇訪問權限。
執行授予后,用戶nonsys將能夠通過SELECT語句從此視圖中進行選擇:
SELECT * FROM dba_users;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.