Oracle中,一般不會輕易在一個服務(wù)器上創(chuàng)建多個數(shù)據(jù)庫,在一個數(shù)據(jù)庫中,不同的項目由不同的用戶訪問,每一個用戶擁有自身創(chuàng)建的數(shù)據(jù)庫對象,因此用戶的概念在Oracle中非常重要。Oracle的用戶可以用CREATE USER命令來創(chuàng)建。其語法是:
語法結(jié)構(gòu):創(chuàng)建用戶
CREATE USER 用戶名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]
語法解析:
LOCK|UNLOCK創(chuàng)建用戶時是否鎖定,默認為鎖定狀態(tài)。鎖定的用戶無法正常的登錄進行數(shù)據(jù)庫操作。
代碼演示:創(chuàng)建用戶
SQL> CREATE USER jerry
2 IDENTIFIED BY tom
3 ACCOUNT UNLOCK;
Oracle在SQL*Plus中的命令以分號(;)結(jié)尾,代表命令完畢并執(zhí)行,系統(tǒng)同時會把該命令保存在緩存中,緩存中只保存最近執(zhí)行過的命令,如果重新執(zhí)行緩存中的命令,直接使用左斜杠符號(/)。如果命令不以分號結(jié)尾,該命令只是寫入緩存保存起來,但并不執(zhí)行。
盡管用戶成功創(chuàng)建,但是還不能正常的登錄Oracle數(shù)據(jù)庫系統(tǒng),因為該用戶還沒有任何權(quán)限。如果用戶能夠正常登錄,至少需要CREATE SESSION系統(tǒng)權(quán)限。
Oracle用戶對數(shù)據(jù)庫管理或?qū)ο蟛僮鞯臋?quán)利,分為系統(tǒng)權(quán)限和數(shù)據(jù)庫對象權(quán)限。系統(tǒng)權(quán)限比如:CREATE SESSION,CREATE TABLE等,擁有系統(tǒng)權(quán)限的用戶,允許擁有相應(yīng)的系統(tǒng)操作。數(shù)據(jù)庫對象權(quán)限,比如對表中的數(shù)據(jù)進行增刪改操作等,擁有數(shù)據(jù)庫對象權(quán)限的用戶可以對所擁有的對象進行對應(yīng)的操作。
還有一個概念就是數(shù)據(jù)庫角色(role),數(shù)據(jù)庫角色就是若干個系統(tǒng)權(quán)限的集合。下面介紹幾個常用角色:
CONNECT角色,主要應(yīng)用在臨時用戶,特別是那些不需要建表的用戶,通常只賦予他們CONNECT role。CONNECT是使用Oracle的簡單權(quán)限,擁有CONNECT角色的用戶,可以與服務(wù)器建立連接會話(session,客戶端對服務(wù)器連接,稱為會話)。
RESOURCE角色,更可靠和正式的數(shù)據(jù)庫用戶可以授予RESOURCE role。RESOURCE提供給用戶另外的權(quán)限以創(chuàng)建他們自己的表、序列、過程(procedure)、觸發(fā)器(trigger)、索引(index)等。
DBA角色,DBA role擁有所有的系統(tǒng)權(quán)限----包括無限制的空間限額和給其他用戶授予各種權(quán)限的能力。用戶SYSTEM擁有DBA角色。
一般情況下,一個普通的用戶(如SCOTT),擁有CONNECT和RESOURCE兩個角色即可進行常規(guī)的數(shù)據(jù)庫開發(fā)工作。
可以把某個權(quán)限授予某個角色,可以把權(quán)限、角色授予某個用戶。系統(tǒng)權(quán)限只能由DBA用戶授權(quán),對象權(quán)限由擁有該對象的用戶授權(quán),授權(quán)語法是:
語法結(jié)構(gòu):授權(quán)
GRANT角色|權(quán)限 TO 用戶(角色)
代碼演示:授權(quán)
SQL> GRANT CONNECT TO jerry;
授權(quán)成功。
SQL> GRANT RESOURCE TO jerry;
授權(quán)成功。
SQL>
語法結(jié)構(gòu):其他操作
//回收權(quán)限
REVOKE 角色|權(quán)限 FROM 用戶(角色)
//修改用戶的密碼
ALTER USER 用戶名 IDENTIFIED BY 新密碼
//修改用戶處于鎖定(非鎖定)狀態(tài)
ALTER USER 用戶名 ACCOUNT LOCK|UNLOCK