Oracle12c學習——使用者管理(二)
Oracle使用者管理機制
Oracle通過管理員使用者例如sys和system通過分配許可權與角色來管理普通使用者。
許可權分為系統許可權和物件許可權兩種。
系統許可權:規定使用者使用系統的許可權,也就是和資料庫管理的相關許可權。
系統許可權大概有200多種,大多數都是影響資料字典的操作(建立表或者使用者),其他的影響資料庫和例項,例如建立表空間,調整例項引數值等,或者是建立會話 常見的許可權: 1. create session 建立會話 只有有這個許可權才能連線2. restricted session 受限制的會話(假如使用startup restrict或者alter system enable restricted session進行調整的話,那麼只有這個許可權的使用者才能夠連線) 3. alter database 更改資料庫,允許訪問多個修改物理結構所需的命令 4. alter system 更改系統,允許控制例項引數和記憶體結構 5. create tablespace6. create table 注意, 7. grant any object privilege 授予任何物件許可權:允許被授權人將其本身不擁有的物件的物件權授予他人,但是不能授予自己 8. create any table :能夠建立屬於其他使用者的表 9. drop any table :能刪除其他使用者的表 9. insert any table,update any table,delete any table :能夠DML其他使用者的表10. select any table :被授權人能夠對資料庫中的任何表執行select操作
物件許可權:規定使用者對資料庫物件(表或試圖)的訪問,例如增、刪、查、改等。
角色分為預定義角色和自定義角色兩種。
預定義角色:Oracle預先把常用的許可權集中起來,定義好的角色。
自定義角色:自己定義的角色。
問題1:首使用者先建立一個test使用者,密碼也為test。
create user user_name identified by password;
因為實在CDB環境下,所以使用者名稱開頭加上C##,即現在使用者名稱為C##test.
Oracle12c的賬戶分為公用賬戶和本地賬戶,公用賬戶實在CBD下建立的,即賬戶名必須以C##開頭,並且可以給所有的PDB使用者使用。本地使用者只能在PDB中建立賬戶,本地賬戶不能以C##開頭。
問題2:登入C##test使用者
conn user_name/password
問題3,:為什麼剛建立的使用者不能登入?
因為剛建立的使用者沒有任何的許可權,需要管理員給使用者分配相應的許可權,
grant create session to user_name.
問題4:在當前的使用者下,給使用者C##test修改密碼
password user_name;
問題5:在管理員使用者下,給使用者C##test修改密碼
alter user user_name identified by password;
問題6:給使用者C##test分配相應的角色
grant connect to C##test;
grant resource to C##test;
問題7:在使用者下建立表tb,並且對錶做出相應的操作。
此時如上圖可知,該使用者對錶空間users沒有相應的許可權,所以不能對錶tb做出插入操作,此時我們會疑惑表空間users從哪裡來的呢?
在建立使用者時的完整語句為:
create user user_name identified by password /user_name為使用者名稱 password為密碼
default tablespace users /預設表為空間users
temporary tablespace temp /臨時表空間為temp
quto 3M on users; /限制使用者建立的表不能超過3M
我們可以瞭解到當我們建立C##test使用者時,系統會建立預設的表空間為users,而對使用者沒有相應的許可權,我們可以通過管理員給使用者分配相應的許可權,此時我們就可以操作了。
Oracle中與表空間有關的系統許可權。
create tablespace 允許使用者建立表空間。
alter tablespace 允許使用者修改表空間的屬性。
drop tablespace 允許使用者刪除表空間。
manage tablespace 允許使用者更改表空間的狀態,包括online,offline,begin backup和end backup。
unlimited tablespace 允許使用者無限度使用表空間。
問題8:在使用者下刪除表tb,並且回收使用者C##test的相應許可權。
刪除表:sql>drop tabel table_name;撤銷角色connect:sql>revoke connect form user;
撤銷角色resource:sql>revoke resource form user;
撤銷許可權unlimited tablespace:sql>revoke unlimited tablespace from user;
問題9:刪除使用者C##test。
sql>drop user user_name [cascade];cascade:當我們刪除某個使用者時,如果這個使用者穿件過資料物件,那我們刪除使用者時,需要加上cascade,表示刪除使用者時,把該使用者建立的資料物件一併刪除。