如何?Oracle修改使用者權限

來源:互聯網
上載者:User

這裡將介紹Oracle修改使用者權限的實現過程,包括一些許可權管理方面的東西。希望通過本文能對大家瞭解Oracle修改使用者權限有所協助。

 

ORACLE資料庫使用者與許可權管理

 

ORACLE是多使用者系統,它允許許多使用者共用系統資源。為了保證資料庫系統的安全,資料庫管理系統配置了良好的安全機制。

 

2. 1 ORACLE資料庫安全性原則

建立系統級的安全保證

系統級特權是通過授予使用者系統級的權利來實現,系統級的權利(系統特權)包括:建立資料表空間、建立使用者、修改使用者的權利、刪除使用者等。系統特權可授予使用者,也可以隨時回收。ORACLE系統特權有80多種。

 

建立對象級的安全保證

對象級特權通過授予使用者對資料庫中特定的表、視圖、序列等進行操作(查詢、增、刪改)的權利來實現。

 

建立使用者級的安全保證

使用者層次安全性保障通過使用者口令和角色機制(一組權利)來實現。引入角色機制的目的是簡化對使用者的授權與管理。做法是把使用者按照其功能分組,為每個使用者建立角色,然後把角色指派給使用者,具有同樣角色的使用者有相同的特權。

 

2.2 使用者管理

ORACLE使用者管理的內容主要包括使用者的建立、修改和刪除

 

使用者的建立

SQL>CREATE USER jxzy 
   >IDENTIFIED BY jxzy_password
   >DEFAULT TABLESPACE system
   >QUATA 5M ON system; //供使用者使用的最大空間限額

 

Oracle修改使用者權限

SQL>CREATE USER jxzy
   >IDENTIFIED BY jxzy_pw
   >QUATA 10M ON system;

 

刪除使用者及其所建對象

SQL>DROP USER jxzy CASCADE; //同時刪除其建立的實體

 

2.3系統特權管理與控制

ORACLE 提供了80多種系統特權,其中每一個系統特權允許使用者執行一個或一類資料庫操作。

授予系統特權

SQL>GRANT CREATE USER,ALTER USER,DROP USER
   >TO jxzy_new
   >WITH ADMIN OPTION;

回收系統特權

SQL>REVOKE CREATE USER,ALTER USER,DROP USER
   >FROM jxzy_new  //但沒有級聯回收功能

顯示已被授予的系統特權(某使用者的系統級特權)

SQL>SELECT*FROM sys.dba_sys_privs

 

2.4 對象特權管理與控制

ORACLE對象特權指使用者在指定的表上進行特殊操作的權利。這些特殊操作包括增、刪、改、查看、執行(預存程序)、引用(其它表欄位作為外

鍵)、索引等。

授予對象特權

SQL>GRANT SELECT,INSERT(office_num,office_name),
   >UPDATE(desc)ON office_organization
   >TO new_adminidtrator
   >WITH GRANT OPTION;  //級聯授權

  SQL>GRANT ALL ON office_organization
  >TO new_administrator

回收對象特權

SQL>REVOKE UPDATE ON office_orgaization
   >FROM new_administrator  //有級聯回收功能 

SQL>REVOKE ALL ON office_organization
   >FROM new_administrator 

顯示已被授予的全部對象特權

SQL>SELECT*FROM sys.dba_tab_privs

 

2.5 角色的管理

ORACLE的角色是命名的相關特權組(包括系統特權與對象特權),ORACLE用它來簡化特權管理,可把它授予使用者或其它角色。

ORACLE資料庫系統預先定義了CONNECT 、RESOURCE、 DBA、 EXP_FULL_DATABASE、 IMP_FULL_DATABASE五個角色。CONNECT具有建立表、視圖、序

列等特權;RESOURCE具有建立過程、觸發器、表、序列等特權、DBA具有全部系統特權;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出與裝

入資料庫的特權。

通過查詢sys.dba_sys_privs可以瞭解每種角色擁有的權利。

授予使用者角色

SQL>GRANT DBA TO new_administractor
   >WITH GRANT OPTION;

 

==============================================================

Oracle 的使用者根據所被授與權限分為系統許可權和對象許可權。其中最高的許可權是sysdba。 Sysdba具有控制Oracle一切行為的特權,諸如建立、

啟動、關閉、恢複資料庫,使資料庫歸檔/非歸檔,備份資料表空間等關鍵性的動作只能通過具有sysdba許可權的使用者來執行。這些任務即使是普通DBA

角色也不行。Sysoper是一個與sysdba相似的許可權,只不過比sysdba少了SYSOPER privileges WITH ADMIN OPTION,CREATE DATABASE,RECOVER

DATABASE UNTIL這幾個許可權而已。這兩者的認證方式是相同的辦法,所以下面只介紹sysdba的認證管理。

一般對sysdba的管理有兩種方式: *** 作系統認證和密碼檔案認證。具體選擇那一種認證方式取決於:你是想在Oracle啟動並執行機器上維護資料庫

,還是在一台機器上管理分佈於不同機器上的所有的Oracle資料庫。若選擇在本機維護資料庫,則選擇 *** 作系統認證可能是一個簡單易行的辦

法;若有好多資料庫,想進行集中管理,則可以選擇password檔案認證方式。

比較直觀的說明了這個選擇權衡過程:

使用 *** 作系統認證方式的配置過程:

1. 在 *** 作系統中建立一個合法帳戶。

具體來說,在NT上,首先建立一個本機使用者組,取名為ORA__DBA,其中SID為該資料庫執行個體的SID,或者建立一個ORA_DBA地組,該組不對應於任何

一個單獨的Oracle執行個體。這樣當一個NT上有好幾個Oracle執行個體時,不用分別管理。然後再NT上建立一個使用者,並且把它歸入該組中。但是實際上

這兩步在Oracle8I安裝過程中已經自動完成了,一般不用手動進行。

第三步:在sqlnet.ora(位於$ORACLE_HOME/NETWORK/ADMIN目錄中)中,把SQLNET.AUTHENTICATION _SERVICES 設定為

SQLNET.AUTHENTICATION_SERVICES= (NTS),意思為使用NT認證方式。

第四步,在INIT.ORA中,把REMOTE_LOGIN_PASSWORD設定為NONE,意思是不用password認證方式。

完成以上步驟後,就可以在登入到NT後,直接在SQL*Plus 和SERVER MANAGER中CONNECT INTERNAL (CONNECT / AS SYSDBA)來作為超級使用者登入到

Oracle中,執行一些只有超級使用者才能進行的 *** 作。

在Unix下,情況有些不同。畢竟這是兩個完全不同的 *** 作系統。

首先,在安裝Oracle之前,建立一個DBA組,這一步不用說了,不然是裝不上Oracle的。一般還建立一個名為Oracle的使用者,並把它加入到DBA組

中。

第二步, 設定REMOTE_LOGIN_PASSWORD為NONE。在Oracle8.1以後,該參數預設為EXCLUSIVE。一定要記得改過來。

第三步, 用該使用者名稱登入Unix,運行SQL*Plus 或者SERVER MANAGER,輸入以下命令:CONNECT INTERNAL(CONNECT / AS SYSDBA)來登入到Oracle

中。

使用password檔案認證的具體步驟:

Oracle提供orapwd公用程式來建立password 檔案,運用orapwd建立該認證方式的具體步驟如下:

1. 使用Orapwd公用程式來建立一個PASSWORD檔案。文法:

orapwd file=檔案名稱 password=internal使用者密碼 entried=entries.

詳細解釋:

檔案名稱要包含完整的全路徑名,如果不指定,Oracle把它預設放置$ORACLE_HOME/dbs(Unix下)或者$ORACLE_HOME/DATABASE(NT下)下。

使用者密碼是使用者internal的密碼。當然後來還可以再向裡邊加入別的超級使用者。

Entries表示最大允許有的超級使用者數目。這個是一個可選的。前兩者是必須指定的。一般會把它設定的比實際需要大一些,以免不夠。

2. 把INIT.ORA中REMOTE_LOGIN_PASSWORD設定為EXCLUSIVE 或SHARED.使用EXCLUSIVE表示只有當前INSTANCE使用這個password檔案。而且允許有

別的使用者作為sysdba登入進系統裡邊,而若選擇了SHARED,則表明不止一個執行個體使用這個密碼檔案,伴隨著一個很強的約束:sysdba許可權只能授

予sys和internal這兩個使用者名稱。(其實internal不是一個實際使用者,而只是sys作為sysdba登入時的一個別名。)

同時還要記得把sqlnet.ora檔案中SQLNET.AUTHENTICATION _SERVICES設定為NONE。一般在Unix下它是預設設定。在NT下,若選擇典型安裝時,會

使用OS認證,而自訂時會使用密碼檔案認證方式。在安裝過程中會提示輸入INTERNAL密碼。這樣的話,就不用在手工建立密碼檔案和設定

INTERNAL的密碼了。

3. 用SQL*Plus 或SERVER MANAGER運行下面命令登入進系統:CONNECT INTERNAL/密碼。

注意點:

1.在Oracle8.1.6安裝在WIN2000下建立資料庫時,常常會發生憑證檢索失敗的錯誤。這是由於Oracle不能應用OS認證的結果。一般可以通過修改

sqlnet.ora中SQLNET.AUTHENTICATION _SERVICES為NONE來解決。這時,Oracle將採用密碼檔案認證方式。

2.由於Oracle有幾個系統預建的使用者,所以最好在安裝完成以後馬上改變這些使用者的密碼。系統預設得密碼分別為:internal/oracle ,

sys/change_on_install, system/manager.

3.當選擇密碼檔案認證方式時,可以再向系統中加入其他超級使用者。比如用以下語句把使用者SCOTT加入超級使用者之中:(由具有sysdba許可權的人執

行)

SQL>GRANT SYSDBA TO SCOTT;這樣SCOTT使用者就具有了sysdba許可權。注意,此時SCOTT使用者可以以兩種身份登入:SCOTT , SYS.當SCOTT在登入時沒

有輸入AS SYSDBA時,SCOTT是作為普通使用者登入的。而當登入時輸入了AS SYSDBA時,此時SCOTT登入進去的使用者實際上為sys。

4. 當前系統中的具有sysdba許可權的使用者名稱可以從資料字典視圖v$pwfile_user中查詢得到:

SELECT * FROM V$PWFILE_USERS; 如所示。

5. 系統中最大的具有sysdba許可權的使用者數由建立密碼檔案時的ENTRIES參數決定。當需要建立更多的具有sysdba許可權的使用者時,就需要刪除原有

的密碼檔案,重新建立一個。這需要關閉資料庫,刪除密碼檔案,重新建立一個新的密碼檔案,在entries中輸入足夠大的數目。再啟動Oracle。

這時,所有原來北授權的超級使用者都不再存在,需要重新授權。所以在重新建立密碼檔案前,先要查詢該視圖,記下使用者名稱,再在建立完密碼文

件後重新授權。

6. Internal使用者密碼忘記的處理方法:

有兩種辦法:

1. ALTER USER SYS IDENTIFIED BY 新密碼;//這同時也改變了Internal的密碼,在Oracle8I中通過

2. 重新建立一個新的密碼檔案,指定一個新的密碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.