Oracle基礎(二):使用者及許可權管理,oracle許可權管理

來源:互聯網
上載者:User

Oracle基礎(二):使用者及許可權管理,oracle許可權管理

一、建立使用者(一)簡單建立1、許可權:只有DBA使用者才有許可權,或有create user 的系統許可權2、文法:

  • create user 使用者名稱 identified by 密碼;
  • oracle密碼不能以數字打頭
3、執行個體:使用者名稱-sam_sho、密碼-sam123
  • create user  sam_sho identified by sam123;
4、注意:1)剛建立的使用者沒有任何許可權, 需要管理員分配許可權。如登入許可權:
  • grant create session to sam_sho ;        --分配登入許可權
  • create session:登入許可權。
2)oracle的許可權較為複雜,下面單獨處理。

(二)複雜建立1、執行個體
  • create usersam_shoidentified by sam123 
  • default tablespace users                      --預設資料表空間。users是oracle自己建立的資料表空間
  • temporary tablespace temp                 --暫存資料表空間
  • quota 3m on users ;                          --分配資料表空間大小,3m。unlimited-不限制大小
  • grant create session to sam_sho ;        --分配登入許可權
  • grant dba to sam_sho ;                       --分配DBA 角色
  • grant select on V_table to sam_sho ;   --分配查詢表的許可權
2、資料表空間理解1)表存在的空間,即在邏輯上表(Table)都是存放在資料表空間中(Tablespace )2)一個資料表空間指向具體的資料檔案


3)resourse 角色的使用者,建立的表沒有資料表空間限制。
  • grant resourse to sam_sho ;   --分配resourse  角色
(三)Oracle的使用者管理機制1、一些概念:
  • oracle dbms:資料庫管理系統
  • db 執行個體:
  • 資料表空間
  • 資料對象
  • 使用者
  • 許可權:系統許可權與資料庫許可權。
  • 角色:把常用的許可權集中起來。
2、許可權、角色、使用者的關係




二、登入及修改密碼(一)使用者登入1、切換使用者,使用者登入。1)文法:
  • conn 使用者名稱/密碼 【as sysdba/sysoper】
2)執行個體:
  • conn sam_sho/sam123;
  • conn sam_sho/sam123 as sysdba;
    • 實際登入的不是sam_sho,可以show user看看
    • 和驗證機制有關,見下面。
2、顯示當前登入使用者的名稱1)文法:
  • show user;

(二)修改密碼1、給使用者修改密碼1)文法:
  • passw【ord】  使用者名稱
2)執行個體:
  • passw sam_sho;
  • passw  
3)注意:
  • 給自己修改,不需要帶使用者名稱,給別人修改需要帶上。
2、給別人修改密碼1)許可權:需要DBA的許可權,或者擁有alter user 的系統許可權2)文法:
  • alter user 使用者名稱 identified by 新密碼;
3)執行個體:
  • alter user sam_sho identified by sam456;
(三)刪除使用者1、許可權:一般需要DBA的許可權,或者需要具有drop user的許可權2、文法:
  • 文法:drop user 使用者名稱 (cascade)
  • cascade 參數:串聯刪除該使用者建立的表等資料對象。資料庫會提醒的。
3、執行個體:
  • drop user sam_sho ;
  • drop user sam_sho cascade;--串聯刪除使用者建立的表等資料
4、刪除某個使用者,但保留其資料對象
  • 方案:鎖定該使用者
    • alter user 使用者 account lock;
    • alter user 使用者 account unlock;--解鎖

三、使用者口令
1、概述:
  • 需要DBA身份
  • profile 是口令限制,資源限制的命令集合,當建立資料庫時,oracle會自動建立名稱為default 的profile。
  • 當建立使用者沒有指定 profile  選項,那麼oracle 就會將default  分配給使用者。
2、賬戶鎖定
  • 概述:指定該賬戶登入時最多可以輸入密碼的次數,也可以指定使用者鎖定的時間(天),一般用dba 的身份去執行該命令。
  • 執行個體:指定 這個使用者最多隻能嘗試3次登入,鎖定時間為2天。
    • create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
    • alter user sam123 profile lock_account ;--分配


3、賬戶解鎖:
  • 文法:
    • alter user 使用者名稱 account unlock;
  • 執行個體:
    • alter user sam123 account unlock;


4、終止口令
  • 概述:為了讓使用者定期修改密碼可以使用終止口令來完成
  • 執行個體:建立新的profile ,要求該使用者每隔10天要修改自家的登入密碼,寬限期為2天。
    • create profile myProfile limit password_life_time 10 password_grace_time 2;
    • alter user sam123 profile myProfile;
5、曆史口令:新舊密碼不能重複
  • create profile myProfile2 limit password_life_time 10 password_grace_time 2 password_reuse_time 1
  • alter user sam123 profile myProfile2;
6、刪除口令
  • drop profile myProfile2 ;

四、許可權與角色(一)、概述:
1、剛建立的使用者沒有任何許可權(不能登入),需要賦予各種許可權。oracle對於許可權的管理,需要引用角色的概念。2、許可權1)系統許可權:使用者對資料庫管理的操作以及對資料對象本身的操作的許可權。
  • 包括建庫、建表、建索引、登入資料庫、修改密碼等等
2)對象許可權:使用者對其他使用者的資料對象資料操作的許可權。
  • 許可權主要分為:select、insert、update、delete、all、create index 等等
3、角色:簡化對許可權的管理。1)預定義角色
  • connect :串連的角色
  • DBA:管理員角色
  • resource:這個角色可以在任何錶空間中建表。
2)自訂角色
4、查看許可權、角色
  • 通過PL/SQL DEV工具查看
  • 通過各種指令
5、許可權分配的方式
  • 直接分配許可權
    • 系統許可權(與資料庫管理相關):
      • grant create sessionto sam_sho ;--分配登入許可權
    • 對象許可權(增刪改查):
      • grantselectonV_tableto sam_sho ;--分配查詢表的許可權
  • 分配角色,批量分配許可權
    • grantdbato sam_sho ;--分配DBA 角色
6、撤銷許可權
  • 文法:revoke 許可權 from 使用者
  • 執行個體:
    • revoke select on emp from sam_sho; 從sam_sho收回emp表的查詢許可權
    • revoke connect from sam_sho;

(二)許可權1、系統許可權:是指執行特定類型sql命令的許可權,它用於控制使用者可以執行的一個或是一組資料庫操作。比如當使用者具有 create table 許可權時,可以在其方案中建表。當使用者具有 create any table 許可權時,可以再任何方案中建表。1)內容
  • create session 串連資料庫
  • create table 建表
  • create view 建視圖
  • create public synonym 建同義字
  • create procedure 建過程、函數、包
  • create trigger 觸發器
  • create cluster 建簇
  • create sequence 建索引
  • create type 
2)顯示:
  • oracle 提供了166系統許可權,查詢資料字典視圖 system_privilege_map
  • select * from system_privilege_map order by name;--查詢系統許可權
3)賦予系統許可權:grant 
  • 一般情況下只有DBA才能完成 或者擁有 grant any privilege 許可權
  • 賦許可權語句後+ with admin option  ,實現系統許可權的傳遞(和方案一起理解)
    • grant connect to sam_sho with admin option
4)許可權回收:revoke
  • 不是級聯回收。
2、對象許可權:訪問其他方案對象的權利。使用者可以直接存取自己方案的對象,但是如果要訪問別的方案的對象,則必須具有對象的許可權。1)內容:
  • alter 修改
  • delete 刪除
  • select 查詢
  • insert 添加
  • update 修改
  • index 索引
  • references 引用
  • execute 執行
2)顯示:DBA使用者可以查看對象許可權 dba_tab_privs
  • select distinct privilege from dba_tab_privs;
3)賦予對象許可權
  • 直接可以賦許可權給使用者 或者角色
  • 賦許可權語句後+ with grant option  ,實現系統許可權的傳遞
    • grant select on emp to sam_sho with grant option
    • 只能賦予使用者,不能賦予角色
4)許可權回收:revoke
  • 是級聯回收。
(三)角色1、預定義角色:33種1)常見內容
  • connect :串連的角色
  • DBA:管理員角色(sys 和 system)。不具備啟動和關閉資料庫
  • resource:這個角色可以在任何錶空間中建表。
    • 隱藏了 unlimited tablespace 的許可權
2)顯示
  • 查看預定義角色:33種角色
    • select * from dba_roles;
  • 查看角色的系統許可權
    • SELECT * FROM dba_sys_privs where grantee = 'DBA'
    • SELECT * FROM role_sys_privs WHERE role = 'DBA';
  • 查看角色的對象許可權
    • SELECT * FROM dba_tab_privs where grantee = 'DBA'
  • 查看某個使用者的角色
    • SELECT * FROM dba_role_privs WHERE grantee='SYS';
2、自訂角色1)建立角色
  • 注意:
    • BDA角色建立或者 需要具有create role 許可權
    • 在建立角色的時候,可以設定驗證方式,如不驗證、資料庫驗證等
  • 不驗證建立(一般都是這種)
    • create role 角色名稱 not identified
  • 資料庫驗證
    • create role 角色名稱 identified by 密碼;
2)給角色賦許可權
  • grant create session to 角色
3)執行個體
  • create role myRole not identified;
  • grant create session to myRole ;
  • grant select on scott.emp to myRole ;
  • grant myRole  to sam_sho;
3、刪除角色
  • drop role 角色名稱;
(四)給使用者賦許可權1、賦予直接的許可權。如直接登入許可權(create session)
  • grant create session to sam_sho;
  • grant select on emp to sam_sho;
2、直接分配角色,批量分配許可權。如
  • grant connect to sam_sho;
    • 授於sam_sho connect的角色,即擁有登入的許可權。connect,包含7 種許可權。
  • grant resource to sam_sho;
(五)使用者的許可權操作1、賦許可權:grant  1)文法:grant  許可權(角色) to 使用者名稱;
2)執行個體1:
  • grant create table to sam_sho:賦予 sam_sho 建立表的許可權。
  • grant dba to sam_sho:賦予 sam_sho dba的角色,其自然具有建立表的角色。
3)執行個體2
  • grant select on emp to sam_sho; 把emp表的查詢許可權賦予sam_sho
  • SELECT * FROM scott.emp;可以查詢,但是需要在表前面加上scott首碼。
2、收回許可權:revoke1)文法:
  • revoke select on emp from sam_sho; 從sam_sho收回emp表的查詢許可權
2)注意:
  • 誰授權,誰收回。或者DBA
  • 系統許可權,不是級聯回收。
  • 對象許可權,是級聯回收。
3、許可權的傳遞1)scott把emp表的查詢許可權賦予sam_sho,sam_sho再把這種許可權傳遞給rabby_zho2)文法:
  • 對象許可權使用 with grant option 進行傳遞
    • grant select on emp to sam_sho with grant option;(scott登入)
    • grant select on scott.emp to rabby_zho;(sam_sho登入)
  • 角色、系統許可權使用 with admin option
    • grant connect to sam_sho with admin option;(scott登入)
    • grant connect to rabby_zho;
3)回收
  • 系統許可權,不是級聯回收。
  • 對象許可權,是級聯回收。

五、方案(Schema)1、問題:同一個資料庫執行個體 DEV_SAM,建立了2個使用者 A 和 B 。使用者 A 建立表a_table,B建立表b_table。結果A 訪問不了 b_table,B訪問不了 a_table 。2、解決:
  • 當一個使用者,建立好後,如果該使用者建立了任意一個資料對象,這時,dbms就會建立一個對應的【方案】與該使用者對應,並且該【方案】的名字與使用者名稱一致。
  • 在這樣的機制下,同一個資料庫執行個體,可以建立多張相同表名的表,但是同一個方案中表名是具有唯一性的。
  • A 如果需要去訪問 B方案下的資料,需要許可權的轉移。
    • 文法: 
      • grant 許可權 to 使用者名稱 【with grant option】 對象許可權
      • grant 許可權 to 使用者名稱 【with admin option】系統許可權
    • 執行個體
      • grant select on emp to sam_sho ;(scott登入)
        • 使用的時候,需要帶【方案】名:select * from scott.emp 。
      • grant all on emp to sam_sho with grant option;可以轉移
        • grant select on scott.emp to sam2;



六、資料庫的啟動流程(遠程登入)(一)windows:1、lsnrctl start (啟動監聽)2、oradim  -startup -sid  資料庫執行個體名
  • oradim  -startup -sid  orcl
3、附:查看windows系統的資訊
  • systeminfo
(二)Linux1、lsnrctl start (啟動監聽)2、sqlplus sys/change_on_install as sysdba 
  • sqlplus /nolog
  • conn sys/change_on_install as sysdba 
3、startup

七、Oracle的登入認證方式(一)Windows1、oracle登入認證在windows 和linux 下是不完全相同。2、現象:1)conn XXXX/CCC as sysdba; 登入成功,並且顯示目前使用者為 sys。2)XXXX/CCC 可以任意,只要以 as sysdba 即可。
2、作業系統認證1)如果【目前使用者】屬於本地作業系統的 ora_dba 組,即可通過作業系統認證。2)目前使用者,指目前作業系統使用的使用者,可以簡單通過windows 工作管理員查看。


3)作業系統的使用者與組:
  • 我的電腦-->右擊管理-->本機使用者和組-->使用者,如使用者 sam

  • 我的電腦-->右擊管理-->本機使用者和組-->組,顯示sam屬於ora_dba組


3、oracle 資料庫驗證(密碼檔案驗證)1)對於普通使用者:
  • oracle預設使用資料庫驗證。
2)對於特權使用者(比如 sys 使用者,或以 as sysdba)
  • oracle 預設使用作業系統認證,如果驗證不通過,再到資料庫驗證。
  • 通過配置 NETWORK\ADMIN\sqlnet.ora 檔案,可以修改oracle登入認證方式。
    • SQLNET.AUTHENTICATION_SERVICES= (NTS)  
      • NTS:基於系統,預設的。
      • NONE:基於Oracle 驗證
      • NONE,NTS:二者都驗證

(二)Linux,略。
七、丟失 Oracle 管理員密碼1、恢複辦法:把原有密碼檔案刪除,產生一個新的密碼檔案2、恢複步驟如下:1)搜尋名為 PWD+資料庫執行個體名.ora 檔案。一般在\database\PWDorcl.ora2)刪除該檔案,建議備份。3)產生新的密碼檔案,在doc 下輸入命令:
  • orapwd file = 原來密碼檔案的全路徑\密碼檔案名稱.ora password=新密碼 entries=10;
  • entries=10:允許幾個特權使用者
  • 密碼檔案名稱 一定要和原來的密碼檔案名稱一致。
4)重啟生效
3、例子:
  • orapwd file=D:\oracle10g\database\PWDorcl.ora password=abc123 entries=10;

八、資料庫管理員



















相關文章

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.