activexobject对象不能创建_Oracle数据库用户管理之系统权限和对象权限
【關鍵術語】
Privileges 權限
System privileges 系統權限
Object privileges 對象權限
Grant 授予
Revoke 撤消
2.1 Oracle 權限概述
2.1.1 權限的作用
權限(privilege)是指執行特定類型 SQL 命令或訪問其他模式對象的權利。Oracle 使用 權限來控制用戶對數據的訪問以及用戶所能執行的操作。通過對用戶授予適當的權限,用戶 能夠在自己的模式或其它用戶的模式中創建、刪除或修改數據庫對象,或者在數據庫中執行 某些特定的操作。簡言之,用戶所具有的權限決定了他能夠訪問的數據和執行的操作。
權限可以通過以下兩種方式授予用戶:
- ? 直接將權限授予用戶
- ? 首先將權限授予角色,然后再將角色授予用戶
2.1.2 權限的分類
在 Oracle 中,權限一共可以分為兩類:
? 系統權限
系統權限是在數據庫級別執行某種操作,它用于控制用戶可以執行的一個或一類數據庫操作。
例如,創建表空間的權限就是一個系統權限。系統權限可由管理員授予,或者由可以顯式授予管理權限的用戶授予。共有一百多種不同的系統權限。很多系統權限都包含 ANY 子句。
? 對象權限
對象權限是針對某個特定的模式對象(如表、視圖、序列、過程、函數或程序包)執行各種操作的權力。用戶只能訪問他們自己擁有的對象。對象權限可以由對象的所有者或管理員授予,也可以由顯式授予了對象授予。
2.2 系統權限管理
2.2.1 系統權限分類
在 Oracle 中總共包含超過 100 種不同的系統權限,每種系統權限都為用戶提供了執行 某一種或某一類型特定的數據庫操作的能力。
系統權限可以分為三類:
- ? 針對系統級別或者數據庫級別的操作,如 CREATE SESSION 系統權限允許用戶連接到數據庫,CREATE TABLESPACE 系統權限允許用戶創建表空間。
- ? 允許用戶在自己模式內的對象管理,如 CREATE TABLE 系統權限,允許用戶在自己模式內創建表。
- ? 允許用戶在任何模式內的對象管理,如 CREATE ANY TABLE 系統權限,允許用戶在任何模式內創建表。
2.2.2 常用系統權限
表 1-1 列出了最常用的一些系統權限。
注意:
● 在系統權限中沒有 CREATE INDEX 權限,因為 CREATE TABLE 權限中已經包含了CREATE INDEX 權限;
● 在 CREATE TABLE, CREATE PROCEDURE 和 CREATE CLUSTER 權限中已經包含了刪除這些對象的權限;
● UNLIMITED TABLESPACE 系統權限不能授予角色;
● 要使用 truncate 命令刪減其他模式的表,用戶必須具有 DROP ANY TABLE 系統權限;
2.2.3 系統權限的授予和回收
1.系統權限授予
系統權限可以被授予用戶、角色或 PUBLIC 公共用戶組。PUBLIC 是一個在創建數據庫時自動建立的用戶組,如果將權限授予 PUBLIC 用戶組,數據庫的任何用戶都將具有該權限。
使用 GRANT 語句可以授予系統權限,GRANT 命令由 DBA 來完成的。如果要以其他用戶身份授予系統權限,那么要求用戶必須具有 GRANT ANY PRIVILEGE 系統權限或用戶在得到該權限時具有轉授系統權限的選項 WITH ADMIN OPTION。
GRANT 語句的語法如下: GRANT {system_privilege } [, {system_privilege } ]... TO {user | role | PUBLIC} [, {user | role | PUBLIC} ]... [WITH ADMIN OPTION]其中參數 WITH ADMIN OPTION 表示被授權的用戶可以把該系統權限再授給其他用 戶。
【實例 1-1】授予用戶 aaron 具有創建表和視圖的權限。
1)以管理員身份登錄 SOL>CONNECT / AS SYSDBA 已連接。 2)授予權限 SOL>GRANT CREATE TABLE,CREATE VIEW to aaron; 授權成功。 3)使用權限創建表 SOL>connect aaron/soccer 已連接。 SOL>create table t1(cola int, colb char(3)); 表已創建。 SOL>INSERT INTO t1 VALUES(1,’A’); 已創建 1 行。 SOL>COMMIT; 提交完成。在將系統權限 CREATE TABLE 授予用戶 aaron 之后,該用戶就可以執行建表操作了。
【實例1-2】授予 aaron 用戶創建存儲過程的權限
1)以管理員身份登錄 SOL>CONNECT / AS SYSDBA 已連接。 2)授予權限 SOL>GRANT CREATE PROCEDURE to aaron; 授權成功。Oracle 中有兩個特殊權限:SYSDBA 和 SYSOPER,具有該權限的用戶能執行數據庫維 護操作,例如啟動和關閉 Oracle Server、建立數據庫、備份和恢復等任務。
當將初始化參數 REMOTE_LOGIN_PASSWORDFILE 設置為 EXCLUSIVE 時,你還可 以將 SYSDBA 和 SYSOPER 特權授予其它用戶,這樣該用戶就會在口令文件中出現,并能 進行啟動和關閉實例等數據庫維護操作。例如:
C:>sqlplus /nolog SOL>CONN / AS SYSDBA 已連接。SOL>GRANT SYSDBA to aaron; 授權成功。 SOL>CONN aaron/soccer AS SYSDBA; 已連接。 SOL>SHUTDOWN需要注意,有特殊權限 SYSDBA 或 SYSOPER 的用戶在登錄時必須帶有 AS SYSDBA或 AS SYSOPER 子句。用戶使用 SYSOPER 可執行基本操作任務,但不能查看用戶數據。
權限 SYSDBA 自動包含了 SYSOPER 的所有權限,另外還具有建立數據庫以及執行不 完全恢復的權限,而 SYSOPER 則不能執行這兩項操作。
表 1-2 給出了 SYSDBA 和 SYSOPER 的區別。
CREATE ANY DIRECTORY:使用 Oracle 數據庫可以讓開發人員在 PL/SQL 內調用
外部代碼(例如 C 庫)。作為一種安全措施,代碼所在的操作系統目錄必須鏈接到
一個虛擬 Oracle 目錄對象。使用 CREATE ANY DIRECTORY 權限時,有可能會調用
不安全的代碼對象。
用戶使用 CREATE ANY DIRECTORY 權限可以在 Oracle 軟件所有者能夠訪問的任何
目錄中創建目錄對象(具有讀寫訪問權限)。這意味著用戶可以訪問那些目錄中的外部過程。用戶可以嘗試直接讀寫任何數據庫文件,如數據文件、重做日志和審計
日志。一定要確保在組織中采用了安全策略,以防止誤用類似這種作用很強的權限。
2.系統權限回收
回收系統權限是使用 REVOKE 命令來完成的。在收回了用戶所具有的系統權限之后,用戶將不能執行該系統權限所對應的SQL命令。收回系統權限一般是由DBA用戶來完成的,但如果要以其他用戶身份收回系統權限,那么要求用戶必須具有 GRANT ANY PRIVILEGE系統權限或轉授系統權限的選項 WITH ADMIN OPTION。
撤銷系統權限時不會產生級聯影響,無論是否指定了 ADMIN OPTION。
【實例 1-3】回收用戶 aaron 的創建表的權限。
1)以管理員身份登錄 SOL>CONNECT / AS SYSDBA 已連接。 2)回收權限 SOL>REVOKE CREATE TABLE FROM aaron; 撤銷成功。當回收用戶 aaron 的 CREATE TABLE 系統權限之后,該用戶將不能創建表了。
2.2.4 系統權限的傳遞
在使用 GRANT 授權時可以帶有 WITH ADMIN OPTION 參數,表明得到權限的用戶可以把該權限再授給其它用戶。
【實例 1-4】授予用戶 aaron 有創建存儲過程的權限,要求帶 WITH ADMIN OPTION參數。
1)以管理員身份登錄 SOL>CONNECT / AS SYSDBA 已連接。 1)管理員授予系統權限,并允許傳遞 SOL>GRANT CREATE PROCEDURE to aaron WITH ADMIN OPTION; 授權成功。 2)以 aaron 用戶登錄,授予用戶 devp 創建存儲過程的權限 SOL>CONNECT aaron/soccer 已連接。 SOL>GRANT CREATE PROCEDURE to devp; 授權成功。 3)創建存儲過程 SOL>connect devp /development 已連接。 SOL> CREATE OR REPLACE PROCEDURE pp 2 AS 3 BEGIN 4 DBMS_OUTPUT.PUT_LINE(‘成功了!’); 5 END; 6 / 過程已創建因為 aaron 在得到創建存儲過程的權限時帶有了 WITH ADMIN OPTION 參數,所以它也可以把該權限授予其它用戶。
這樣用戶 devp 也具有了創建存儲過程的權限。例如:
大家需要注意,系統權限在回收時不會被級聯回收。在前面的例子中,DBA 授予用戶aaron 具有 CREATE PROCEDURE 系統權限,用戶 aaron 又把 CREATE PROCEDURE 系統 權限授予了 devp 用戶,圖 P1-1 示意性地給出了授權過程。
P1-1
當 DBA 收回 aaron 的 CREATE PROCEDURE 系統權限時,不會收回 devp 的系統權限,
因為系統權限不會被級聯收回。如圖 P1-2 所示。
【實例 1-5】回收用戶 aaron 的創建存儲過程的權限。
1)以管理員身份登錄 SOL>CONNECT / AS SYSDBA 已連接。 2)回收權限 SOL>REVOKE CREATE PROCEDURE FROM aaron; 撤銷成功。 3)創建存儲過程 SOL>connect devp/development 已連接。 SOL> CREATE OR REPLACE PROCEDURE pp AS BEGIN DBMS_OUTPUT.PUT_LINE(‘成功了!’);END; / 過程已創建當 DBA 收回了 aaron 的 CREATE PROCEDURE 系統權限后,用戶 devp 仍然具有CREATE PROCEDURE 系統權限。
2.2.5 利用控制臺管理系統權限
寫在最后的話
感謝各位的支持與閱讀,后續會繼續推送相關知識和交流,歡迎交流、轉發和關注,感謝!
總結
以上是生活随笔為你收集整理的activexobject对象不能创建_Oracle数据库用户管理之系统权限和对象权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国债5年和3年哪个划算?国债买几年合适?
- 下一篇: 请简述计算机硬件系统的运行过程,操作系统