Oracle 用戶管理與權限控制

Oracle 用戶管理與權限控制

oracle數據庫的權限系統分爲系統權限與對象權限。系統權限( database system privilege )可讓用戶執行特定的命令集。例如,create table權限容許用戶建立表,grant any privilege 權限容許用戶授予任何系統權限。對象權限( database object privilege )可讓用戶可以對各個對象進行某些操做。例如delete權限容許用戶刪除表或視圖的行,select權限容許用戶經過select從表、視圖、序列(sequences)或快照(snapshots)中查詢信息。 
  每一個oracle用戶都有一個名字和口令,並擁有一些由其建立的表、視圖和其餘資源。oracle角色(role)就是一組權限(privilege)(或者是每一個用戶根據其狀態和條件所需的訪問類型)。用戶能夠給角色授予或賦予指定的權限,而後將角色賦給相應的用戶。一個用戶也能夠直接給其餘用戶受權。 數據庫

ORACLE中數據字典視圖分爲3大類,用前綴區別,分別爲:USER,ALL 和 DBA,
許多數據字典視圖包含類似的信息。

USER_*:有關用戶所擁有的對象信息,即用戶本身建立的對象信息。
ALL_*:有關用戶能夠訪問的對象的信息,即用戶本身建立的對象的信息加上其餘用戶建立的對象但該用戶有權訪問的信息。
DBA_*:有關整個數據庫中對象的信息。 服務器

1、用戶管理

一、查詢用戶

select username from dba_users;

查詢全部用戶session

select * from all_users

查詢當前用戶信息:oracle

select * from user_users

結果:ide

系統用戶:測試

sys;//系統管理員,擁有最高權限spa

system;//本地管理員,次高權限3d

scott;//普通用戶,密碼默認爲tiger,默認未解鎖code

 

二、建立用戶

create user username identified by password;

username: 用戶名,自定義對象

password: 密碼,自定義

 

三、刪除用戶

drop user username;

若是用戶已經擁有本身的對象,則須要使用:cascade(級聯)。能夠強制刪除用戶的全部對象,而後刪除用戶。

drop user username cascade;

2、權限管理

一、受權

將權限受權給某個用戶。

基本用法:

grant  權限   to  用戶

受權dba

grant dba to username

示例:

受權鏈接和資源

grant connect,resource to demo;   //受權鏈接、資源

受權可建立session,能夠在服務器上進行鏈接

grant create session to demo;

應用測試:

 

受權建立、查詢、更新、刪除表的權限:

grant create any table to demo; //建立表

grant drop any table to demo; //刪除表

grant alter any table to demo; //修改表

受權執行存儲過程:

grant execute any procedure to demo

 

受權數據權限:

grant insert any table to demo; //增長數據

grant delete any table to demo; //刪除數據

grant update any table to demo; //更新數據

grant select any table to demo; //查詢數據

受權具體的表權限:

grant select on demo.students on demo; //將查詢students的權限受權給demo
grant update on demo.students to demo;

 

二、撤銷權限

revoke

基本用法:

revoke  權限  from  用戶

撤銷dba權限

revoke dba from demo;

撤銷鏈接取取權限

revoke connect from demo

撤銷建立表權限

revoke create any table from demo;

撤銷某表的權限

revoke all on demo.students from demo;

 三、查詢各類權限

查詢系統全部權限

select * from system_privilege_map

查詢全部對象權限

select * from table_privilege_map

查詢角色擁有的權限

select * from role_sys_privs;

 

select * from role_tab_privs 

 

查詢用戶系統權限

select * from dba_sys_privs;
select * from all_sys_privs; select * from user_sys_privs;

查詢用戶對象權限

select * from dba_tab_privs;

select * from all_tab_privs; select * from user_tab_privs;

 

3、角色

  Oracle爲了兼容之前的版本,提供了三種標準的角色(role):connect、resource和dba。
  1. connect role(鏈接角色)
  臨時用戶,特別是那些不須要建表的用戶,一般只賦予他們connectrole。connect是使用oracle的簡單權限,這種權限只有在對其餘用戶的表有訪問權時,包括select、insert、update和delete等,纔會變得有意義。擁有connect role的用戶還可以建立表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym )、會話(session)和與其餘數據庫的鏈(link)。
  2. resource role(資源角色)
  更可靠和正式的數據庫用戶能夠授予resource role。resource提供給用戶另外的權限以建立他們本身的表、序列、過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster)。
  3. dba role(數據庫管理員角色)
  dba role擁有全部的系統權限,包括無限制的空間限額和給其餘用戶授予各類權限的能力。system由dba用戶擁有。

一、建立角色

create role backer

二、受權

grant select any table to backer

三、撤銷

revoke update any table from backer

四、分配角色,將角色權限授予給用戶

grant backer to demo

五、將角色權限授予其餘角色

grant backer to backer2

六、刪除角色

drop role backer2

示例:

查詢全部角色

select * from dba_roles

查詢結果

查看當前用戶角色

select * from role_sys_privs

查看當前用戶管理的角色

select * from user_role_privs

 

select * from dba_role_privs
相關文章
相關標籤/搜索