Oracle筆記十四:用戶管理

SQL語句分爲三類:DML、DDL、DCL,之前已經講解完了DML和DDL,現在就差DCL操作的,DCL主要表示的是數據庫的控制語句,控制的就是操作權限,而在DCL之中,主要有兩個語法:GRANT、REVOKE;

權限的操作基礎是需要有用戶的,而這個時候就需要通過一個新的用戶進行演示,而要想創建新用戶則首先必須是具備管理員權限的sys、system兩個用戶操作。

範例:創建一個dog用戶,密碼爲wangwang

CONN sys/change_on_install AS SYSDBA;
CREATE USER dog IDENTIFIED BY wangwang;

此時一個新的用戶就創建完成了。

注意:“ORA-00988:口令缺失或無效” 錯誤,這種情況通常發生於創建 Oracle 例程時指定了非正常的全局數據庫名稱或系統用戶密碼。請注意全局數據庫名稱不能以數字開頭,口令密碼也不能由數字開頭。

Oracle對密碼的要求如下:

  • 系統用戶(SYS、SYSTEM)口令長度不能小於7個字符;
  • 密碼由1 到 30 個字符 (characters)組成;
  • 必須以字母開頭,不能是符號或者數字;
  • 只接受字母,數字,以及三個符號 “#”, “_” and “$”;
  • 密碼不能包含像”SELECT”,”DELETE”,”CREATE”這類的 Oracle/SQL 關鍵字;

但是此時這個新創建的用戶並不能登錄,會提示如下的錯誤信息:

ORA-01045: user DOG lacks CREATE SESSION privilege; logon denied

提示用戶現在沒有創建SESSION的權限,在之前曾經解釋過,對於sqlplusw而言,每一個用戶都表示一個SESSION,如果沒有創建SESSION的權限就意味着不能登錄,所以下面要授權。

範例:將CREATE SESSION的權限給dog用戶

GRANT CREATE SESSION TO dog;

現在新用戶登錄成功之後,下面就可以執行表的創建操作。

CREATE SEQUENCE myseq;
CREATE TABLE mytab(
  id NUMBER PRIMARY KEY,
  name VARCHAR2(50)
);

解釋:關於數據表的保存問題

在Oracle之中所有的數據表都是保存在硬盤上的,但不是每一張數據表都保存在硬盤上的,而是表空間保存在硬盤上,而數據表保存在表空間之中。

如果把硬盤表示成整個一個圖書館的話,那麼表空間就表示每一個書櫃,每一張表就表示櫃子上的一本書。

範例:將創建表的權限給dog用戶

GRANT CREATE TABLE TO dog;

此時只是將數據表的創建權限給了dog用戶,但是並沒有把表空間的操作權限給dog用戶,所以用戶仍然無法創建表,因爲表沒有地方可以保存。

爲了解決用戶的授權操作,在Oracle之中爲用戶提供了許多的角色,每一個角色會包含多個權限,而角色主要有兩個:CONNECT、RESOURCE;

範例:將CONNECT和RESOURCE TO dog;

GRANT CONNECT,RESOURCE TO dog;

但是現在一旦存在了用戶的操作,那麼就需要有用戶的管理操作,最簡單的一個功能,用戶有可能丟掉自己的密碼。

範例:修改密碼

ALTER USER dog IDENTIFIED BY miaomiao;

但是當管理員爲一個用戶重置一個密碼之後,往往會希望用戶在第一次登錄的時候可以修改密碼,所以此時可以通過如下的命令讓密碼失效:

ALTER USER dog PASSWORD EXPIRE;

也可以控制一個用戶的鎖定操作:

ALTER USER dog ACCOUNT LOCK;

ALTER USER dog ACCOUNT UNLOCK;

以上是針對於一個基本的用戶操作,但是在之前也學習過,不同的用戶可以訪問其他用戶的數據表,此時只需要加上完整的“用戶名.表名稱”即可。

範例:使用dog用戶查詢scott.emp表

SELECT * FROM scott.emp;

但是現在卻無法查找,此時需要將scott用戶的權限授予dog用戶纔可以讓dog用戶訪問scott用戶的資源,主要的權限有四個:INSERT、DELETE、UPDATE、SELECT。

範例:將scott.emp表的SELECT和INSERT權限給dog用戶

GRANT SELECT,INSERT ON scott.emp TO dog;

既然現在有授權的功能,那麼就可以進行權限的回收,權限的回收使用REVOKE指令。

範例:回收dog用戶的權限

REVOKE SELECT,INSERT ON scott.emp FROM dog;
REVOKE CONNECT,RESOURCE,CREATE TABLE,CREATE SESSION FROM dog;

既然用戶連權限都沒了,那麼按照中國的一句話:“捲鋪蓋走人”。

DROP USER dog CASCADE;

以上的所有操作都是由DBA負責。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章