Oracle的權限控制

一)用戶
Oracle中的用戶分爲二大類
1)Oracle數據庫服務器創建時,由系統自動創建的用戶,叫系統用戶,如sys。
2)利用系統用戶創建的用戶,叫普通用戶,如scott,hr,c##tiger,zhaojun,...


》用sys登錄,查詢當前Oracle數據庫服務器中已有用戶的名字和狀態
  username表示登錄名
  expired&locked表示帳號過期和鎖定
  open表示帳號現在可用
  sqlplus / as sysdba;
  col username for a30;
  col account_status for a30;
  set pagesize 100;
  select username,account_status from dba_users;
  
  查詢Oracle中有哪些用戶
  select * from all_users;






二)創建與刪除普通用戶
可以在Oracle中創建新的普通用戶,創建普通用戶命令是:create user,在創建普通用戶的同時,應該爲其分配一個具體的表空間,通常叫users。


》用sys登錄,查詢Oracle中有哪些可用存儲空間,所有普通用戶默認爲users存儲空間
  select * from v$tablespace;


》用sys登錄,創建普通用戶c##tiger,密碼爲abc,默認使用users存儲空間,即對應硬盤上的一個DBF二進制文件
  sqlplus / as sysdba;
  create user c##tiger identified by abc default tablespace users;


》用sys登錄,爲c##tiger分配users空間無限制使用,即數據庫中DBF文件可以無限增加,一個DBF文件不夠,會創建第二個DBF文件
  sqlplus / as sysdba;
  alter user c##tiger quota unlimited on users;


》用c##tiger登錄,能進orcl數據庫嗎?
  sqlplus c##tiger/abc
  進不去orcl數據庫


》用sys登錄,刪除普通用戶c##tiger
  sqlplus / as sysdba;
  drop user c##tiger cascade;






三)瞭解系統用戶
sys是Oracle中一個重要的系統用戶,sys是Oracle中最高權限用戶,其角色爲SYSDBA(系統管理員)
sqlplus / as sysdba






四)權限
權限的最終作用於用戶。即所有用戶在數據庫內的操作對象和可執行的動作都是受到限制的。
Oracle中權限分爲二大類:
1)系統權限
2)對象權限






五)系統權限
針對數據庫中特定操作的許可,例如:讓c##tiger能登錄到orcl數據庫,能在orcl數據庫中創建表


》用sys登錄,獲取系統權限的相關信息,例如:select any table表示針對所有表的select權限
  sqlplus / as sysdba;
  select distinct privilege from dba_sys_privs;


》用sys登錄,爲c##tiger分配create session與數據庫建立會話的權限,即允許該用戶登錄
  sqlplus / as sysdba;
  grant create session to c##tiger;


》用c##tiger登錄,能進orcl數據庫嗎?
  sqlplus c##tiger/abc
  能進去orcl數據庫


》用c##tiger登錄,創建一張tiger的表,能創建嗎?
  sqlplus c##tiger/abc
  create table tiger(
    name varchar2(20)
  );
  這時c##tiger沒有權限創建表


》用sys登錄,爲c##tiger分配create table權限,即允許創建表
  sqlplus / as sysdba;
  grant create table to c##tiger;


》用c##tiger登錄,創建一張tiger的表,能創建嗎?
  sqlplus c##tiger/abc
  create table tiger(
    name varchar2(20)
  );
  可以創建c##tiger表


》用sys登錄,查詢c##tiger所擁有的系統權限
  sqlplus / as sysdba;
  select grantee,privilege from dba_sys_privs where lower(grantee) = 'c##tiger';
  grantee表示普通用戶名
  privilege權限名  


》用sys登錄,撤銷c##tiger的create table權限
  sqlplus / as sysdba;
  revoke create table from c##tiger;






六)對象權限
用戶對已有對象的操作權限,包括:
1)select可用於表,視圖和序列
2)insert向表或視圖中插入新的記錄
3)update更新表中數據
4)delete刪除表中數據
5)execute函數,過程的執行
6)index爲表創建索引
7)references爲表創建外健
8)alter修改表或者序列的屬性


》用sys登錄,查詢c##tiger所擁有的對象權限
  sqlplus / as sysdba;
  col grantee for a10;
  col table_name for a10;
  col privilege for a20;
  select grantee,table_name,privilege from dba_tab_privs where lower(grantee) = 'c##tiger';


》用sys登錄,爲c##tiger分配對tiger表的所有權限,即增刪改查操作
  sqlplus / as sysdba;
  grant all on c##tiger.tiger to c##tiger;
  注意:c##tiger表示空間名
        tiger表示該空間下的表名
  C##TIGER   TIGER      FLASHBACK
  C##TIGER   TIGER      DEBUG
  C##TIGER   TIGER      QUERY REWRITE
  C##TIGER   TIGER      ON COMMIT REFRESH
  C##TIGER   TIGER      REFERENCES
  C##TIGER   TIGER      UPDATE
  C##TIGER   TIGER      SELECT
  C##TIGER   TIGER      INSERT
  C##TIGER   TIGER      INDEX
  C##TIGER   TIGER      DELETE
  C##TIGER   TIGER      ALTER


》用c##tiger登錄,對tiger表進行增刪改查操作
  sqlplus c##tiger/abc;
  insert into tiger(name) values('AA');
  update tiger set name = 'BB';
  delete from tiger where rownum = 1;
  select * from tiger;


 







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章