1. 程式人生 > >Grant授權、revoke取消授權

Grant授權、revoke取消授權

Oracle學習筆記一

終於開始學習oracle了,在電腦上成功安裝了oracle9i 
今天學習的是oracle的許可權管理 
首先在開始--》執行——》cmd,然後輸入 sqlplus sys/密碼 as sysdba 
以sys許可權登陸進去 
然後可以進行操作、: 
建立使用者 create user test indentified by test; 
這樣就建立了一個使用者名稱密碼都為test的使用者 
但這個時候test還是不能登陸成功的,我們需要賦予相應的許可權 
首先賦予create session的許可權 
grant create session to test; 
這樣test使用者就能成功登陸進去 
但是此時使用者還是不能建立表 我們需要賦予使用者建立表的許可權: 
grant

 create table to test; 
但是使用者此時還不能建立表 因為需要有使用表空間的許可權(相當於 使用者有了進房間的鑰匙 但是沒有進大門的鑰匙。。。) 
所以也應該賦予相應的許可權 
grant unlimited tablespace to test; 
這個時候使用者就擁有了建立表的許可權 由於表是使用者test的 相應的他就擁有了對建立的表的增刪查改的許可權了 
我們要檢視使用者擁有什麼許可權可以通過查詢一個系統的檢視(數字字典) 
select * from user_sys_privs; 
這樣就可以知道當前使用者的許可權 

撤銷許可權 revoke create table from test; 

場景: 
使用者test 使用者test1 
test1的使用者建立了個表mytab 並且插入了一些資料 
那麼 test使用者是否可以訪問到test1的mytab怎麼訪問? 
答:不可以,必須先授權 
test1必須授權給test :grant
 select on mytab to test; 
那麼這個時候test可以通過 select * from test1.mytab;來訪問mytab中的資料 
如果想把某個表(物件)的所有許可權都賦予給test那麼可以: 
grant all on mytab to test; 
撤銷所有許可權 
revoke all on mytab to test; 


總結 
對於系統許可權由sys來做 
對於物件許可權由 誰擁有誰授權 
系統許可權: 
    grant create session to test; 
    grant create table to test; 
   grant
 unlimited tablespace to test; 

   revoke create session from test; 
   revoke create table from test; 
   revoke unlimited tablespase from test; 

   grant create session to public;  //表示把建立表的許可權賦予所有人 

    select * from user_sys_privs;  //返回當前使用者的所有系統許可權 
物件許可權 
    grant select on mytab to test; 
   grant all on mytab to test; 

   revoke select on mytab from test; 
   revoke all on mytab from test; 

   select * from user_tab_privs;  //返回當前使用者所有的物件許可權 
    
   物件許可權可以控制到列 
   grant update(name) on mytab to test; 
   grant insert(id) on mytab to test; 

   select * from user_col_privs; 
   注意、:查詢和刪除不能控制到列    
    需要有commit的 insert update insert 

許可權的傳遞 
  系統許可權的傳遞: 
   grant alter table to A with admin option; 
  那麼A可以通過把該許可權傳遞給B,如果想B也可以傳遞下去那麼可以也帶上with admin option 
   grant alter table to B; 
  物件許可權的傳遞: 
   grant select on mytab to A with grant option; 
  那麼A可以把在表mytab的select許可權賦予給B,如果B想也能傳遞該select許可權也可以帶上with grant option 
   grant select on mytab to B;