1. 程式人生 > >為什麼任何隨便輸入的賬號使用SYSDBA許可權都能登陸oracle

為什麼任何隨便輸入的賬號使用SYSDBA許可權都能登陸oracle

其實簡單點就是檢查一下你的機器有沒有一個ora_dba使用者組,而且你登陸os的使用者是否在這個組裡,有的話問題的原因就找到了,下面是轉的高手的介紹

本文環境配置:Oracle10gR2,Windows XP

Oracle的使用者資訊一般來說是儲存在資料字典裡的,所以常規使用者在Oracle資料庫沒有啟動的時候是無法登陸的。但有兩類使用者例外,這就是具有sysdba或者sysoper許可權的使用者。Oracle sysdba或者sysoper使用者的登陸有兩種方式:一是通過OS認證,二是通過密碼檔案驗證。

究竟使用哪一種驗證方式以及能否成功登陸取決於三個方面的因素:

1. sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的設定

2. 引數檔案中REMOTE_LOGIN_PASSWORDFILE的設定

3. 密碼檔案 PWD%sid%.ora

Oracle進行許可權驗證的大致順序如下:

1. 根據SQLNET.AUTHENTICATION_SERVICES的值決定是進行os驗證還是密碼檔案驗證。

2. 如果是os驗證,根據當前使用者的使用者組判斷是否具有sysdba許可權。如果os驗證失敗,則進行密碼檔案驗證。

2. 如果是密碼檔案驗證,REMOTE_LOGIN_PASSWORDFILE的值以及密碼檔案是否存在決定了驗證是否成功。

1. OS

要啟用os驗證,就必須在qlnet.ora中設定SQLNET.AUTHENTICATION_SERVICES=(NTS),然後在Windows中建立ora_dba使用者組,把相關使用者加入到這個組中(e.g., administrator),這樣administrator就可以在不用提供使用者名稱和密碼(或者提供任意的使用者名稱和密碼)的情況下以sysdba身份本地登陸。因為作業系統已經代替Oracle進行了驗證。

測試一:ora_dba使用者本地登陸

Sql程式碼 複製程式碼
  1. C:/>sqlplus / as sysdba   
  2. Connected to:   
  3. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production   
  4. With the OLAP and Data Mining options   
  5. SQL>   
  6. C:/>sqlplus wrong_user/wrong_password as sysdba   
  7. Connected to:   
  8. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production   
  9. With the OLAP and Data Mining options   
  10. SQL>  
C:/>sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>

C:/>sqlplus wrong_user/wrong_password as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>

測試二:非ora_dba使用者本地登陸

Java程式碼 複製程式碼
  1. C:/>sqlplus / as sysdba   
  2. ERROR:   
  3. ORA-01031: insufficient privileges   
  4. Enter user-name:   
  5. C:/>sqlplus wrong_user/wrong_password sysdba   
  6. ERROR:   
  7. ORA-01017: invalid username/password; logon denied   
  8. Enter user-name:   
  9. C:/>sqlplus sys/change_on_install as sysdba   
  10. Connected to:   
  11. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production   
  12. With the OLAP and Data Mining options   
  13. SQL>  
C:/>sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:

C:/>sqlplus wrong_user/wrong_password sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:

C:/>sqlplus sys/change_on_install as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>

2. 密碼檔案驗證

密碼檔案包含了被授予sysdba和sysoper許可權的使用者的使用者名稱和密碼。這是一個加密檔案,一般來說存放在%oracle_home%/database目錄下,檔名為PWD%sid%.ora。

如果要使用密碼檔案驗證,則把sqlnet.ora改為SQLNET.AUTHENTICATION_SERVICES=none,或者從sqlnet.ora中刪除SQLNET.AUTHENTICATION_SERVICES。同上匿名登陸sqlplus會失敗,給出使用者名稱和密碼就可以成功登陸。

Sql程式碼 複製程式碼
  1. C:/>sqlplus / as sysdba   
  2. ERROR:   
  3. ORA-01031: insufficient privileges
  4. Enter user-name:   
  5. C:/>sqlplus sys/change_on_install as sysdba   
  6. Connected to an idle instance.   
  7. idle>  
C:/>sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:

C:/>sqlplus sys/change_on_install as sysdba
Connected to an idle instance.
idle>

測試一:刪除密碼檔案。使用使用者名稱和密碼登陸,失敗!

Sql程式碼 複製程式碼
  1. C:/>sqlplus sys/change_on_install as sysdba   
  2. ERROR:   
  3. ORA-01031: insufficient privileges
  4. Enter user-name:  
C:/>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:

測試二:恢復密碼檔案,設定REMOTE_LOGIN_PASSWORDFILE=none。使用使用者名稱和密碼登陸,失敗!

Sql程式碼 複製程式碼
  1. SQL> alter system set remote_login_passwordfile=none scope=spfile;   
  2. System altered.   
  3. C:/>sqlplus sys/change_on_install as sysdba   
  4. ERROR:   
  5. ORA-01017: invalid username/password; logon denied   
  6. Enter user-name:  
SQL> alter system set remote_login_passwordfile=none scope=spfile;
System altered.

C:/>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:

測試三:恢復密碼檔案,設定REMOTE_LOGIN_PASSWORDFILE為EXCLUSIVE或者SHARED。使用使用者名稱和密碼登陸,成功!

Sql程式碼 複製程式碼
  1. SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;   
  2. System altered.   
  3. C:/>sqlplus sys/change_on_install as sysdba   
  4. Connected to an idle instance.   
  5. SQL>  
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered.

C:/>sqlplus sys/change_on_install as sysdba
Connected to an idle instance.
SQL>

3. 密碼檔案

檢視具有sysdba或者sysoper許可權的使用者:

Sql程式碼 複製程式碼
  1. SQL> select * from v$pwfile_users;   
  2. USERNAME                        SYSDB    SYSOP   
  3. ------------------------------  -------  -------
  4. SYS                             TRUETRUE
SQL> select * from v$pwfile_users;

USERNAME                        SYSDB    SYSOP
------------------------------  -------  -------
SYS                             TRUE     TRUE

每次使用grant sysdba/sysoper授予新使用者特殊許可權或是alter user命令修改擁有sysdba/sysoper許可權的使用者密碼的時候,Oracle都會自動的同步密碼檔案,這樣保證在資料庫沒有開啟的情況擁有特殊許可權的使用者能正常的登陸資料庫以進行管理操作。

Sql程式碼 複製程式碼
  1. SQL> grant sysdba to logicgate;   
  2. Grant succeeded.   
  3. SQL> select * from v$pwfile_users;   
  4. USERNAME                       SYSDB     SYSOP   
  5. ------------------------------- -------- --------
  6. SYS                             TRUETRUE
  7. LOGICGATE                       TRUEFALSE
SQL> grant sysdba to logicgate;
Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB     SYSOP
------------------------------- -------- --------
SYS                             TRUE     TRUE
LOGICGATE                       TRUE     FALSE

使用orapwd命令可以重建密碼檔案。

Java程式碼 複製程式碼
  1. C:/>orapwd   
  2. Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>   
  3.   where   
  4.     file - name of password file (mandatory),   
  5.     password - password for SYS (mandatory),   
  6.     entries - maximum number of distinct DBA (optional),   
  7.     force - whether to overwrite existing file (optional)  
C:/>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
  where
    file - name of password file (mandatory),
    password - password for SYS (mandatory),
    entries - maximum number of distinct DBA (optional),
    force - whether to overwrite existing file (optional)

其中檔名和密碼是必需的。entries設定了密碼檔案可包含的dba使用者的最大數目。force定義了是否覆蓋當前檔案。重建密碼檔案會清除系統內除了sys使用者以外所有sysdba使用者的密碼。必須使用grant sysdba同步密碼檔案。

Java程式碼 複製程式碼
  1. C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y;   
  2. C:/>sqlplus sys/temp as sysdba   
  3. Connected to:   
  4. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production   
  5. With the OLAP and Data Mining options   
  6. SQL> select * from v$pwfile_users;   
  7. USERNAME                        SYSDB    SYSOP   
  8. ------------------------------- -------- --------   
  9. SYS                             TRUE     TRUE  
C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y;

C:/>sqlplus sys/temp as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options

SQL> select * from v$pwfile_users;

USERNAME                        SYSDB    SYSOP
------------------------------- -------- --------
SYS                             TRUE     TRUE

相關推薦

為什麼任何隨便輸入賬號使用SYSDBA許可權登陸oracle

其實簡單點就是檢查一下你的機器有沒有一個ora_dba使用者組,而且你登陸os的使用者是否在這個組裡,有的話問題的原因就找到了,下面是轉的高手的介紹 本文環境配置:Oracle10gR2,Windows XP Oracle的使用者資訊一般來說是儲存在資料字典裡的,所以常

[Oracle]Oracle資料庫任何使用者密碼sysdba角色登入

* 本文相關環境:Windows 10,64位作業系統;Oracle 11gR2;toad for Oracle12.1       最近在學習Oracle資料庫,使用Toad for Oracle來檢視資料庫的資訊,發現在以sysdba角色登入資料庫時,無論輸入什麼

phpmyadmin-錯誤:配置文件權限錯誤,不應任何用戶修改!這裏有答案

highlight 文字 所有權限 配置文件 inux style true 所有 整理 今天在linux下使用phpMyadmin的時候突然出現這個紅色警告。差點把我嚇暈在電腦前。不過冷靜想一下這個報錯,肯定就是linux權限那幾個 ‘7’ 惹的禍。 於是 通過命令

django自定義許可權防止所有使用者進行刪除操作

場景描述:對於刪除操作等不希望所有登入使用者都能刪除,且不是使用django進行的資料控制,需要進行特殊控制 1,url檔案: path('task-del.html', views.TaskDel.as_view(), name='task_del'), 2,views檔案:

Word神器!輸入幾個字你想要啥給你!就是哆啦A夢的口袋啊!

今天小編教大家一個word神奇功能,你想要什麼就有什麼,當你輸入幾個字,點選【F3】,就能自動彈出你想要的內容,是不是很神奇,這一款功能,他的名字叫做【自動圖文集】。我們來看看吧!   1. 如圖效果顯示,當我們在word的輸入"個人簡歷,"就能自動彈出一份簡歷模板,輸入"房

如何讓Git記住你的賬號密碼,不用每次push時輸入賬號密碼

碼雲裡有HTTPS和SSH兩種拖拽程式碼的方式,HTTPS每次都要輸入密碼,但SSH可以通過配置來避免重複設定密碼 首先你要是專案的擁有者,因為配置SSH時需要新增專案金鑰,以下是配置流程 1.安裝Git和tortoiseGIT小烏龜(視覺化工具) 2.安裝成功之後在檔案目

終於有了任何程式設計師快速編寫文件的工具!

李老闆:小王,咱們馬上要參加一個宇宙超級管理系統的投標,你組織人員寫個競標方案!李老闆:小王,那個宇宙超級管理系統咱們中標了,你這幾天寫個需求文件馬上安排開發吧!李老闆:小王,宇宙超級管理系統已經上線了,客戶反映使用太複雜,你寫個使用者手冊吧!小王:競標方案,幾百頁都算是少的

【Git】如何讓git記住你的賬號密碼?不用每次push的時候輸入賬號密碼

兩步操作 1.在本機上生成ssh公鑰,將其新增你的碼雲/github賬戶,操作如下圖 開啟git bush視窗,,輸入  ssh-keygen -t rsa -C “您的郵箱地址” 生成新的ssh-keygen: $ ssh-keygen -t rsa -C “您的郵

任何問題在Stack Overflow找到答案!

在myeclipse 中集成了jstl,所以只需要在jsp頁面頭部新增如下一句話就可以使用jstl的core標籤庫: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 但是ec

隨便輸入的“netsh winsock reset”

寫這篇文章是因為我在cmd輸入了題目中這段命令,結果問題越解決越麻煩。至於為什麼輸這段指令也是一個悲傷的故事,不再多說。 netsh winsock reset 這個命令作用是重置 Winsock

任何主機訪問到伺服器上的MySql的方法

先要進入mysql/bin目錄下 1。 改表法。 可能是你的帳號不允許從遠端登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 "mysql" 資料庫裡的 "user" 表裡的 "host" 項,從"localhost"

git生成ssh key 避免每次push輸入賬號密碼

第一步:生成public/private rsa key pair 在git的安裝目錄下,雙擊bash.exe,在命令列中輸入ssh-keygen -t rsa -C "[email protected]" 預設在這個目錄C:\Users\Administrator\.ssh生成id_rsa和id

git push/pull每次輸入賬號密碼 解決方案

首先 git config –global credential.helper store 然後 git push/pull, 按照往常一樣 輸入賬號密碼。第二次就不需要了。 相當於設定預設的操作

科目二倒車入庫不論怎麽入進去的方法

參考線 一次 個人 平時 寬度 原因 1.5 概率 調整 無奈10次死在倒車入庫上,最終終於煉成了一招不論怎麽脖子怎麽妞,個字怎麽低,座位怎麽矮都能倒進去的方法,科二這次總算一次過去了,一吐為快: 先是右入庫: 先按教練交的走直走正,左側留1.2-1.5米的距離,這個根

隨便輸入一個時間,得到當前時間的周一和周日時間

-1 date() getdate ndt mon 一周 rtti time 得到 function getThisWeek(str){ //按周日為一周的最後一天計算 var date = new Date(str); var thisday = dat

如何做電視節目直播(電視臺視頻直播)實現手機微信觀看

play 管理 target 圖文 連接 .net 菜單 註冊帳號 用戶 STEP1 . 硬件準備及設備連接 場景說明: 1.電視節目直播一般是用於電視信號的直播,對一個電視頻道的的信號進行直播,常用於電視臺、校園電視節目等; 2.電視信號直播,實現在微信

PDF編輯器讓大家合並PDF文檔 從此不求人

開始 php 一個 one 什麽 我們 準備就緒 tar 解決問題 有很多網友對如何將兩個PDF文檔合並成一個PDF傷透了腦筋,不是在貼吧裏求助,就在在問答知乎上提問,今天小編就要化身為解決問題小能手,幫助大家解決這個問題,讓大家都能合並PDF文檔,從此不求人! 首先,我

javascript+HTMl5遊戲下載,開發一個月薪上萬!舅服你

lock itl 五子棋 opera sta 你是 http store 進階學習 HTML5時代已經到來許久了,你是否已經掌握了那麽一點呢?今天小編給大家講講h5的折疊多設備、跨平臺特性, 即用HTML5制作遊戲。相比flash,HTML5更加靈活方便,隨著瀏覽器技術的

共享法拉利、購物車、遛娃車……不是所有帶輪子的“走”下去

共享法拉利共享經濟到底有多熱?看看現在烏煙瘴氣、花樣百出的共享經濟項目就能知曉。除了共享打車、共享單車、共享充電寶等已經有大筆融資進賬,且已經展現自身潛力並對大眾生活產生極大影響的項目外,共享籃球、共享馬紮等不知所謂的項目也來湊熱鬧。甚至很多創業者認為只要是有“輪子”的共享經濟項目,就都能一直“走”下去。於是

Go語言的GUI方案,與Qt和QML綁定,也有從頭寫的gxui

tool ins 感覺 for wid called 路徑 linu 適合 半官方:https://godoc.org/golang.org/x/exp/shiny 作者:王益鏈接:https://www.zhihu.com/question/22483719/answe