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