oracle的用戶安全管理主要有權限和角色
當剛剛建立用戶時,用戶沒有任何權限,也不能執行任何操作。如果要執行某種特定的數據庫操作,則必須為其授予系統的權限。
如果用戶要訪問其他方案的對象,則必須為其授予對象的權限,為了簡化權限的管理,可以使用角色
權限:
這裡是執行特定的命令和訪問對象的權利.包括系統和對象權限
是執行特定類型的sql命令.主要是對用戶來說的.分類
DBA 全部權限.可以創建數據庫結構Resource:只可以創建實體,不可以創建數據庫結構Connect:只能登陸,不可創建實體和數據庫結構對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限
[系統權限只能由DBA用戶授出:sys, system(最開始只能是這兩個用戶)]
授權命令:SQL> grant connect, resource, dba to 用戶名1 [,用戶名2]...;
[普通用戶通過授權可以具有與system相同的用戶權限,但永遠不能達到與sys用戶相同的權限,system用戶的權限也可以被回收]
例:
SQL> connect system/manager SQL> Create user user50 identified by user50; SQL> grant connect,resource to user50;
查詢用戶擁有哪裡權限:
SQL> select * from dba_role_privs; SQL> select * from dba_sys_privs; SQL> select * from role_sys_privs;
刪除用戶:SQL> drop user 用戶名 cascade; //加上cascade則將用戶連同其創建的東西全部刪除
注意:在授予系統權限時,可以帶有with admin option選項,這樣,被授予權限的用戶或是角色還可以將該系統權限授予其他的用戶
或是角色。
例如
//創建用戶
sql>create user kenidentified by m123; sql>create user tomidentified by m123
給用戶ken授權
sql>grant create session,create table to ken with admin option; sql>grant create view to ken;
給用戶tom授權
我們可以通過ken給tom授權,因為with admin option是加上的。當然也可以通過DBA給tom授權,這裡我們就用ken給tom授權。
sql>grant createsession,create table to tom with admin option; sql>grantcreate view to tom;——這個是不可以的,因為Ken沒有該權限的下放權限。
一般情況下,回收系統權限是dba來完成的,如果其他的用戶來回收系統權限,要求該用戶必須具有相應系統權限及轉授系統權限
的選項(with admin option)。回收系統權限使用revoke來完成。
當回收了系統權限後,用戶就不能執行相應的操作了,但是請注意,系統權限不是級聯回收的。
執行以下語句:
sql>revoke create session from ken;
說明:DBA執行了該語句後回收了Ken的登錄權限後,Ken自然就不能再登錄了,有Ken下放的該權限所有者tom還是可以正常
登錄的。
某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。
用戶可以直接訪問自己方案的對象。但是如果要訪問別的方案的對象,則必須具有對象的權限。比如Smith用戶要訪問scott.emp
表(scott:方案,emp:表),則必須在scott.emp表上具有對象的權限。
常用的有
增刪改查,改(數據的修改和表結構的修改),索引,執行(execute),all等
grant create session to zhangsan;//授予zhangsan用戶創建session的權限,即登陸權限 grant unlimited session to zhangsan;//授予zhangsan用戶使用表空間的權限 grant create table to zhangsan;//授予創建表的權限 grante drop table to zhangsan;//授予刪除表的權限 grant insert table to zhangsan;//插入表的權限 grant update table to zhangsan;//修改表的權限 grant all to public;//這條比較重要,授予所有權限(all)給所有用戶(public)
當然了也包括with授權,權限回收操作。
剛開始的時候也沒看oracle的任何語言就去操作了,感覺無從下手,很難學麼。但是當查看了oracle的基本操作後,與sql
的命令大相徑庭。只是多了一些命令授權,也是很有意思的。只是在sql中我們沒有這樣寫。因為sql中帶有客戶端替我們做了這些
工作。所以一些常用的命令我們還是親自多多寫寫吧。剛開始熟悉環境還是很有用處的。