1. 程式人生 > >oracle-02 用戶管理

oracle-02 用戶管理

with drop user scott oracle user cascade 綜合 sys 建表

一、創建用戶
概述:在oracle中要創建一個新的用戶使用create user語句,一般是具有dba(數據庫管理員)的權限才能使用。
create user 用戶名 identified by 密碼;
註意:oracle有個毛病,密碼必須以字母開頭,如果以數字開頭,它不會創建用戶
eg、create user xiaoming identified by oracle;

二、給用戶修改密碼
概述:如果給自己修改密碼可以直接使用
SQL> password 用戶名或passw
如果給別人修改密碼則需要具有dba的權限,或是擁有alter user的系統權限
SQL> alter user 用戶名 identified by 新密碼

三、刪除用戶


概述:一般以dba的身份去刪除某個用戶,如果用其它用戶去刪除用戶則需要具有drop user的權限。
比如drop user 用戶名 【cascade】
註意:在刪除用戶時,如果要刪除的用戶,已經創建了表,那麽就需要在刪除的時候帶一個參數cascade,即把該用戶及表一同刪除;

四、權限
權限分為系統權限和對象權限。
何為系統權限?
用戶對數據庫的相關權限,connect、resource、dba等系統權限,如建庫、建表、建索引、建存儲過程、登陸數據庫、修改密碼等。
何為對象權限?
用戶對其他用戶的數據對象操作的權限,insert、delete、update、select、all等對象權限,數據對象有很多,比如表,索引,視圖,觸發器、存儲過程、包等。
執行SELECT * FROM Dba_Object_Size;語句可得到oracle數據庫對象。

五、角色
角色分為預定義角色和自定義角色。

六、用戶管理的綜合案例
概述:創建的新用戶是沒有任何權限的,甚至連登陸的數據庫的權限都沒有,需要為其指定相應的權限。給一個用戶賦權限使用命令grant,回收權限使用命令revoke。
為了講清楚用戶的管理,這裏我給大家舉一個案例。
SQL> conn xiaoming/oracle
ERROR:
ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied
警告: 您不再連接到 ORACLE。
SQL> show user
USER 為 ""
SQL> conn system/oracle
已連接。
SQL> grant connect to xiaoming;
授權成功。
SQL> conn xiaoming/oracle
已連接。
SQL>
註意:grant connect to xiaoming;在這裏,準確的講,connect不是權限,而是角色。

現在說下對象權限,現在要做這麽件事情:
* 希望xiaoming用戶可以去查詢emp表
* 希望xiaoming用戶可以去查詢scott的emp表
grant select on scott.emp to xiaoming
* 希望xiaoming用戶可以去修改scott的emp表
grant update on scott.emp to xiaoming
* 希望xiaoming 用戶可以去修改/刪除,查詢,添加scott的emp表
grant all on scott.emp to xiaoming
* scott希望收回xiaoming對emp表的查詢權限
revoke select on scott.emp from xiaoming

七、權限的傳遞
//對權限的維護。
* 希望xiaoming用戶可以去查詢scott的emp表/還希望xiaoming可以把這個權限傳遞給別人。
--如果是對象權限,就加入with grant option
grant select on emp to xiaoming with grant option
我的操作過程:
SQL> conn scott/oracle;
已連接。
SQL> grant select on scott.emp to xiaoming with grant option;
授權成功。
SQL> conn system/oracle;
已連接。
SQL> create user xiaohong identified by oracle;
用戶已創建。
SQL> grant connect to xiaohong;
授權成功。
SQL> conn xiaoming/oracle;
已連接。
SQL> grant select on scott.emp to xiaohong;
授權成功。

--如果是系統權限。
system給xiaoming權限時:grant connect to xiaoming with admin option
問題:如果scott把xiaoming對emp表的查詢權限回收,那麽xiaohong會怎樣?
答案:被回收。
下面是我的操作過程:
SQL> conn scott/oracle;
已連接。
SQL> revoke select on emp from xiaoming;
撤銷成功。
SQL> conn xiaohong/oracle;
已連接。
SQL> select * from scott.emp;
select * from scott.emp
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
結果顯示:小紅受到誅連了。。

八、with admin option與with grant option區別
1、with admin option用於系統權限授權,with grant option用於對象授權。

2、給一個用戶授予系統權限帶上with admin option時,此用戶可把此系統權限授予其他用戶或角色,但收回這個用戶的系統權限時,這個用戶已經授予其他用戶或角色的此系統權限不會因傳播無效,如授予A系統權限create session with admin option,然後A又把create session權限授予B,但管理員收回A的create session權限時,B依然擁有create session的權限,但管理員可以顯式收回B create session的權限,即直接revoke create session from B.

而with grant option用於對象授權時,被授予的用戶也可把此對象權限授予其他用戶或角色,不同的是但管理員收回用with grant option授權的用戶對象權限時,權限會因傳播而失效,如grant select on table with grant option to A,A用戶把此權限授予B,但管理員收回A的權限時,B的權限也會失效,但管理員不可以直接收回B的SELECT ON TABLE 權限。

oracle-02 用戶管理