SQL語句分為三類:DML、DDL,、DCL,,之前已經(jīng)講解完了DML和DDL,現(xiàn)在就差DCL操作的,,DCL主要表示的是數(shù)據(jù)庫的控制語句,,控制的就是操作權(quán)限,而在DCL之中,,主要有兩個(gè)語法:GRANT,、REVOKE; 權(quán)限的操作基礎(chǔ)是需要有用戶的,,而這個(gè)時(shí)候就需要通過一個(gè)新的用戶進(jìn)行演示,,而要想創(chuàng)建新用戶則首先必須是具備管理員權(quán)限的sys、system兩個(gè)用戶操作,。 范例:創(chuàng)建一個(gè)dog用戶,,密碼為wangwang CONN sys/change_on_install AS SYSDBA; CREATE USER dog IDENTIFIED BY wangwang; 此時(shí)一個(gè)新的用戶就創(chuàng)建完成了。 注意:“ORA-00988:口令缺失或無效” 錯(cuò)誤,,這種情況通常發(fā)生于創(chuàng)建 Oracle 例程時(shí)指定了非正常的全局?jǐn)?shù)據(jù)庫名稱或系統(tǒng)用戶密碼,。請注意全局?jǐn)?shù)據(jù)庫名稱不能以數(shù)字開頭,口令密碼也不能由數(shù)字開頭,。 Oracle對密碼的要求如下:
但是此時(shí)這個(gè)新創(chuàng)建的用戶并不能登錄,會(huì)提示如下的錯(cuò)誤信息: ORA-01045: user DOG lacks CREATE SESSION privilege; logon denied
提示用戶現(xiàn)在沒有創(chuàng)建SESSION的權(quán)限,,在之前曾經(jīng)解釋過,,對于sqlplusw而言,每一個(gè)用戶都表示一個(gè)SESSION,,如果沒有創(chuàng)建SESSION的權(quán)限就意味著不能登錄,,所以下面要授權(quán)。 范例:將CREATE SESSION的權(quán)限給dog用戶 GRANT CREATE SESSION TO dog; 現(xiàn)在新用戶登錄成功之后,,下面就可以執(zhí)行表的創(chuàng)建操作,。 CREATE SEQUENCE myseq; CREATE TABLE mytab( id NUMBER PRIMARY KEY, name VARCHAR2(50) ); 解釋:關(guān)于數(shù)據(jù)表的保存問題 在Oracle之中所有的數(shù)據(jù)表都是保存在硬盤上的,但不是每一張數(shù)據(jù)表都保存在硬盤上的,,而是表空間保存在硬盤上,,而數(shù)據(jù)表保存在表空間之中。 如果把硬盤表示成整個(gè)一個(gè)圖書館的話,,那么表空間就表示每一個(gè)書柜,,每一張表就表示柜子上的一本書。 范例:將創(chuàng)建表的權(quán)限給dog用戶 GRANT CREATE TABLE TO dog; 此時(shí)只是將數(shù)據(jù)表的創(chuàng)建權(quán)限給了dog用戶,,但是并沒有把表空間的操作權(quán)限給dog用戶,,所以用戶仍然無法創(chuàng)建表,因?yàn)楸頉]有地方可以保存,。 為了解決用戶的授權(quán)操作,,在Oracle之中為用戶提供了許多的角色,每一個(gè)角色會(huì)包含多個(gè)權(quán)限,,而角色主要有兩個(gè):CONNECT,、RESOURCE; 范例:將CONNECT和RESOURCE TO dog; GRANT CONNECT,RESOURCE TO dog; 但是現(xiàn)在一旦存在了用戶的操作,,那么就需要有用戶的管理操作,,最簡單的一個(gè)功能,用戶有可能丟掉自己的密碼,。 范例:修改密碼 ALTER USER dog IDENTIFIED BY miaomiao; 但是當(dāng)管理員為一個(gè)用戶重置一個(gè)密碼之后,,往往會(huì)希望用戶在第一次登錄的時(shí)候可以修改密碼,所以此時(shí)可以通過如下的命令讓密碼失效: ALTER USER dog PASSWORD EXPIRE; 也可以控制一個(gè)用戶的鎖定操作: ALTER USER dog ACCOUNT LOCK; ALTER USER dog ACCOUNT UNLOCK; 以上是針對于一個(gè)基本的用戶操作,,但是在之前也學(xué)習(xí)過,,不同的用戶可以訪問其他用戶的數(shù)據(jù)表,,此時(shí)只需要加上完整的“用戶名.表名稱”即可,。 范例:使用dog用戶查詢scott.emp表 SELECT * FROM scott.emp; 但是現(xiàn)在卻無法查找,,此時(shí)需要將scott用戶的權(quán)限授予dog用戶才可以讓dog用戶訪問scott用戶的資源,主要的權(quán)限有四個(gè):INSERT,、DELETE,、UPDATE、SELECT,。 范例:將scott.emp表的SELECT和INSERT權(quán)限給dog用戶 GRANT SELECT,INSERT ON scott.emp TO dog; 既然現(xiàn)在有授權(quán)的功能,,那么就可以進(jìn)行權(quán)限的回收,權(quán)限的回收使用REVOKE指令,。 范例:回收dog用戶的權(quán)限 REVOKE SELECT,INSERT ON scott.emp FROM dog; REVOKE CONNECT,RESOURCE,CREATE TABLE,CREATE SESSION FROM dog; 既然用戶連權(quán)限都沒了,,那么按照中國的一句話:“卷鋪蓋走人”。 DROP USER dog CASCADE; 以上的所有操作都是由DBA負(fù)責(zé),。 |
|