如何管理Oracle數據庫,創建用戶,分配用戶權限

一般使用oracle數據庫時,用HR和SCOTT用戶登錄居多。在數據庫中同樣可以自己創建用戶,然後分配相應的權限

例如我們要創建一個用戶名爲kobe的用戶,密碼爲kobe123,則可以使用如下SQL語句:

SQL> create USER kobe identified by kobe123;
在這裏插入圖片描述
這是由於當前登錄的用戶是SCOTT用戶,創建用戶時應該以sys管理員身份登錄
在這裏插入圖片描述
這樣,用戶kobe就創建完成了。要是想修改新創建用戶的密碼,使用如下命令即可:

ALTER USER kobe

IDENTIFIED BY 新密碼;

接下來要給用戶授權,具體語法:

GRANT 權限1[,權限2…]

TO 用戶名;

權限有系統權限,角色權限和對象權限

系統權限:
允許用戶登錄: create session
允許創建表:create table
允許創建視圖:create view
允許創建序列:create sequence
允許創建過程:create procedur
例如,將前兩個權限授予kobe用戶,使用語句

GRANT create session,create table TO kobe;

角色權限:
數據庫中系統權限,用戶權限很多,如果針對每個用戶逐個分配每個權限,費時又費力。因此,可以將相關的一系列權限組成一個命名的組,這個權限組就是角色。角色擁有的權限就是角色權限,將角色權限授予用戶,則這個角色權限擁有的權限就全部授予了這個用戶。一個用戶可以被指定爲多個角色,則同時擁有這多個角色所擁有的全部權限。例如:

create role dev; //創建dev角色

grant create table ,create view,create sequence to dev; //給dev角色授權

grant dev to kobe; //把dev中的權限授予kobe用戶

對象權限:
對象權限是在指定的表,視圖,序列和過程等對象上執行特定操作的權限,包括insert,delete,update,select以及index,alter,references(引用權限)和execute(執行權限)。但並不是每個對象都可以被授予這些權限

例如,給kobe用戶授予針對僱員表emp的插入和查詢權限該如何做?

僱員表emp的所有者是SCOTT用戶,因此用SCOTT用戶訪問oracle數據庫,完成對kobe用戶的授權工作

SQL語句如下:

grant select, insert
on emp
to kobe

此時授權完成。執行下面的SQL語句:

select * from emp;

提示“表或視圖不存在”。這是因爲在數據庫中,方案(schema)是管理數據庫對象的邏輯結構,一個數據庫對象的全稱應該是:“方案名.對象名”(默認情況下方案名等於用戶的名字),之前不使用方案名的原因是用戶操作的數據庫對象是本用戶的對象,方案名可以省略。而現在是用kobe用戶訪問數據庫,需要操作SCOTT用戶的emp對象,所以必須要寫全名。正確的SQL語句如下:

select * from Scott.emp;

每次訪問數據庫對象時都得帶着方案名,若是覺得不舒服,可創建同義詞(SYNONYM,需要有創建同義詞的權限),通過同義詞進行訪問,SQL語句如下:
`create SYNONYM emp for Scott.emp;
select * from emp;`
撤銷權限:
使用revoke語句撤銷已經授予用戶的權限

例如要撤銷給kobe用戶針對僱員表emp的插入權限(scott用戶身份下操作),SQL語句如下:

revoke insert
on emp
from Kobe

撤銷kobe用戶創建序列的系統權限的功能,SQL語句如下(用系統管理員賬戶):
revoke create sequence
from Kobe
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章