Oracle 許可權(grant、revoke)

来源:http://www.cnblogs.com/chenmh/archive/2016/10/26/6001977.html
-Advertisement-
Play Games

資料庫版本:11GR2 一、介紹 在oracle中沒有其他資料庫系統中的資料庫的概念,對象都是創建在用戶下。當前用戶具有當前用戶下所有對象的所有許可權無論該對象是否是當前用戶所創建。舉個簡單例子創建一個用戶授予該用戶連接許可權,然後用管理員用戶在該用戶下創建一張表,該用戶可以刪除管理員在該用戶下創建的表 ...


資料庫版本:11GR2

一、介紹 

  在oracle中沒有其他資料庫系統中的資料庫的概念,對象都是創建在用戶下。當前用戶具有當前用戶下所有對象的所有許可權無論該對象是否是當前用戶所創建。舉個簡單例子創建一個用戶授予該用戶連接許可權,然後用管理員用戶在該用戶下創建一張表,該用戶可以刪除管理員在該用戶下創建的表。

 

二、許可權

許可權主要可以分成三類:系統許可權、角色、對象許可權。角色是一類許可權的分組。

1.系統許可權

系統許可權其實就是用戶在當前用戶架構下所具有的許可權。在11g中系統許可權有200個,比如create table,UNLIMITED TABLESPACE等。

查詢當前用戶擁有的系統許可權:

SELECT * FROM user_sys_privs;

2.角色

角色其實就是一類許可權的分組,所以給用戶分配角色其實也是在給用戶分配許可權。在oracle中有三個比較常用的角色。對於一般不是很嚴格的系統可以授予開發用戶CONNECT、RESOURCE角色許可權即可。

DBA:該角色具有資料庫所有的許可權。

CONNECT:該角色具有連接資料庫的許可權,和create session的許可權一樣。

RESOURCE:該角色是應用程式開發角色,具有如下許可權

 查詢當前用戶擁有的角色:

SELECT * FROM USER_ROLE_PRIVS;

3.對象許可權

對象許可權指的是其它擁有用戶的對象的許可權。其它用戶對象的許可權包括:SELECT,DELETE,UPDATE,ALTER,INSERT,INDEX,REFERENCES,FLASHBACK,DEBUG,QUERY REWRITE,ON COMMIT REFRESH;註意其它用戶對象的許可權沒有drop的許可權。 

查詢當前用戶擁有的對象許可權:

SELECT * FROM USER_TAB_PRIVS;

 當前用戶chenmh擁有用戶zhang下student表的所有許可權。

三、grant授權 

1.授予用戶connect、resource角色許可權。一般創建應用程式開發用戶可以授予這兩個角色的許可權。

GRANT CONNECT,RESOURCE TO zhang;

2.授予用戶chenmh用戶zhang下person表的SELECT,DELETE,UPDATE,INSERT許可權,授予具體的對象許可權是對於許可權嚴格控制的一種方案。

GRANT SELECT,DELETE,UPDATE,INSERT ON zhang.person TO CHENMH ;

 3.授予用戶chenmh用戶zhang下person表的所有許可權

GRANT ALL PRIVILEGES ON zhang.person to chenmh;

grant許可權圖表:

四、REVOKE回收許可權

1.回收角色許可權

REVOKE CONNECT,RESOURCE FROM chenmh;

2.回收系統許可權

REVOKE CREATE FROM chenmh;

3.回收用戶對象許可權,回收zhang用戶下person表的所有許可權,如果是單個授予的許可權需要單個的收回

REVOKE ALL PRIVILEGES ON zhang.person FROM chenmh;

revoke圖表:

五、批量操作

1.批量授予許可權,授予用戶chenmh擁有zhang下所有表的增刪改查許可權。生產批量執行sql

SELECT 'GRANT SELECT,DELETE,UPDATE,INSERT ON '||OWNER||'.'||TABLE_NAME||' TO CHENMH;' FROM dba_tables WHERE OWNER='ZHANG';

如果要查詢其它對象可以查詢dba_objects表。

2.批量收回系統許可權,收回用戶chenmh的所有系統許可權

SELECT 'REVOKE '||PRIVILEGE||' FROM CHENMH;'  FROM DBA_SYS_PRIVS WHERE GRANTEE='CHENMH';

將拼接的sql複製出來執行查詢。

3.批量收回角色許可權

SELECT 'REVOKE '||GRANTED_ROLE||' FROM CHENMH;' FROM DBA_ROLE_PRIVS WHERE GRANTEE='CHENMH';

4.批量收回用戶對象許可權,收回用戶chenmh在架構zhang下的所有許可權

SELECT 'REVOKE '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' FROM CHENMH;' FROM DBA_Tab_Privs WHERE GRANTEE='CHENMH' AND OWNER='ZHANG'
ORDER BY TABLE_NAME,PRIVILEGE;

 

 

 

 

 

 

 

備註:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。

《歡迎交流討論》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 五分鐘認識docker 什麼是docker? 把他想象成一個用了一種新穎方式實現的超輕量虛擬機,在大概效果上也是正確的。當然在實現的原理和應用上還是和VM有巨大差別的,並且專業的叫法是應用容器(Application Container)。 為啥要用docker? 那麼應用容器長什麼樣子呢,一個做好 ...
  • 1. linux 基礎命令 who, which, basename, dirname, echo, type, hash, whatis, makewhatis, man, info, help, ls, cd,pwd, mkdir, rmdir, touch, rm, date, hwcolck ...
  • Navicat for MySQL 10.1.7註冊碼 用戶名、組織、註冊碼均為:NAVN-LNXG-XHHX-5NOO。 ...
  • 一、前言 生命不息,折騰不止。近期公司有數據遷移的計劃,從Sqlserver遷移到mysql,雖說網上有很多數據遷移方案,但閑著也是閑著,就自己整一個,權當做是練練手了 二、解決思路 整個遷移過程類似於ETL,將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目 ...
  • 1、查詢當前用戶的所有表(自己的表) 2、查詢Oracle中所有的系統許可權,一般是DBA 3、查詢Oracle所有的角色,一般是DBA; 4、查詢Oracle中所有對象許可權 5、查詢資料庫的表空間 6、查詢當前用戶具有什麼樣的系統許可權 7、查詢當前用戶在其他用戶的表上具有什麼樣的對象許可權 8、查看某 ...
  • 好久不用mysql,今天突然想用的時候, mysql -uroot -p 直接報了下麵的錯誤 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) mac可以在設置裡面 ...
  • TensorBoard簡介 Tensorflow發佈包中提供了TensorBoard,用於展示Tensorflow任務在計算過程中的Graph、定量指標圖以及附加數據。大致的效果如下所示, TensorBoard工作機制 TensorBoard 通過讀取 TensorFlow 的事件文件來運行。Te ...
  • 廣義完整性:語義完整性,併發控制,安全控制,故障恢復 狹義完整性:專指語義完整性 完整性涉及實體完整性,參照完整性,用戶自定義完整性 DBMS保證完整性 由資料庫管理員來定義完整性規則,當用戶進行資料庫操作時。先由完整性控製程序根據完整性規則來檢查請求是否合法,如果合法則交給DBMS執行更新操作。 ... ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...