Oracle用戶、角色、權限管理

create or replace type address as object(province varchar

(20),city varchar(20));

alter TRIGGER SYS.JIS$ROLE_TRIGGER$ compile;

create table test(id number primary key,name char(50));
表空間授權
alter  user  用戶  quota  unlimited  on   表空間;
alter  user  test  quota  unlimited  on   test;

創建用戶
create user 用戶名 identified by 口令;
create user icwallet identified by icwallet;

刪除用戶
drop user cascade

修改密碼
alter user 用戶名 identified by 口令;
alter user icwallet identified by icwallet;

鎖定:
alter user 用戶名 account lock;

授權
revoke
grant create session to the_username;
grant system_privilege to username [with admin option];

創建數據庫角色
create role role_name;
create role role_name identified by role_password

 

 

 

第一:用戶管理*******************************************
用戶至少需要會話的權利,否則連接也不成功;
用戶在會話的權利上,應該有其他操作的權利;

Oracle的用戶和口令不區分大小寫,真是讓人大跌眼鏡;

Oralce中,所有用戶必須明確被授權,纔可以操作;
SQL Server中,創建的用戶自動就擁有了一些權限;

Oracle不依賴操作系統;SQL Server依賴Windows;

MicroSoft假定大多數用戶都是合法用戶,採取樂觀態度;
Oracle首先假定用戶都是不安全的,採取悲觀態度;

Oracle中的用戶是互相隔離的,稱爲用戶模式;

內置用戶:
sys,網絡管理員,最高權限;
    當你試圖輸入了用戶名:sys
         密碼:通用
    之後,你發現連接不上;
    而輸入 用戶名:system
        密碼:通用
    或者   用戶名:scott
         密碼:tiger
    的時候都可以連接,所以你認爲
    sys的權限沒有system高;
    其實正是因爲sys的權限高,所以你必須以
    dba的身份來登陸:sys/通用 as sysdba
//可以使用數據字典user_users來查看當前用戶管理的用戶:
select * from user_users;
而dba_users可以查看dba管理的用戶;

system,只管理本機上的數據庫;
而all_users查看所有用戶,只能由dba來查看;

******創建用戶:
create user 用戶名 identified by 口令 [externally]
[default tablesapce 表空間名]
[temporary tablespace 臨時表空間名]
[quota 整數 K|M|unlimited on 表空間名]
//注意:創建用戶必須有dba的權限;
******查詢用戶:
其實就是對錶user_users/dba_users/all_users進行查詢,
只不過這裏不把他們叫表,叫數據字典;而且數據字典是系統
維護的;
*******修改用戶:
alter user.....//後面和創建一樣;

Oracle中一個實例就是一個數據庫,這個數據庫相當與SQL Server的全

部數據庫;
Oracle的一個數據庫被分爲很多個表空間,每個表空間相當於SQL

Server中的一個數據庫;
   
實例演示:

create user student_user
identified by student
default tablespace users
temporary tablespace temp
quota 5m on users
quota 3m on temp

/其中,users,temp都是內置的表空間,student_user在users裏有5m空

間,在temp裏有3m;
新創建的用戶是沒有權利的:
SQL> conn student_user/student;
ERROR:
ORA-01045: user STUDENT_USER lacks CREATE SESSION privilege;

logon denied

警告: 您不再連接到 ORACLE。


*****限制用戶
鎖定:alter user 用戶名 account lock;
效果:
SQL> alter user student_user account lock;
用戶已更改。
SQL> conn student_user/student;
ERROR:
ORA-28000: the account is locked
警告: 您不再連接到 ORACLE。
解鎖:alter user 用戶名 account unlock;
口令無效:alter 用戶名 password expire; 當用戶創建了很多表,
如果直接刪除用戶,它下面的表都將被刪除,所以我們可以
只使得它的口令無效;
//可見,表是用戶的手下,用戶沒了,用戶創立的表,佔用的空間都就

沒了;
//所以,一般情況下,我們不要刪除用戶;

****刪除用戶:
drop user 用戶名[cascade]
//cascade是強制刪除,即使有別人正在用這個用戶的表;
//數據庫管理語句是自動結束事務的,沒有rollback的機會;


第二:權限管理***********************************************

授權:grant [系統特權名] [角色] [on 被授權操作表名] to [用戶名

列表]
[public][with admin option]
如果是dcl語句,就不用on 被授權操作表名

grant all on student to public:把對student的所有權限授予所有

用戶;

數據字典:user_sys_privs
select * from user_sys_privs
權限收回:
revoke 權限列表 on 表 from 用戶;
SQL> revoke create table from iam;
撤銷成功。
撤消只是撤消本次授權的權限,所以如果某個用戶原來就有某個權利,
而你又給它授了同樣的一個權利,然後你收回這個權限的時候,它原來
就具有的這個權利還是有的;

第三:角色管理*****************************************
因爲一個用戶可能需要某些權限的集合,當我們得到一新的用戶的時候

,我們需要給一個
用戶依次授權每個它需要的權限;角色正是一個權限的集合,用戶可以

直接被授予這個
角色,用戶自然就擁有了它的角色所擁有的權利;
創建角色:
create role 角色名 [no identified|identified by 口令

|externally]
not identified:指出授予該角色的用戶在使用時不需要檢驗;
identified by:指出授予該角色的用戶在使用set role命令時需要檢

驗;

收回權限:revoke 權限 from 角色名;

//角色就是權限的集合;

實例:
create role student_role
/
grant create table,create session,create view to student_role

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