數據庫權限和系統表的梳理

權限梳理

Oracle數據庫和mysql數據庫都有自己的權限管理。Mysql數據庫的權限管理相對oracle數據庫的權限管理會更簡潔。

Mysql的權限認證是通過查詢權限表直接驗證的,不過mysql 的權限表是有等級的。在驗證的過程中,先驗證等級較高的權限表,如果通過驗證則放行,不通過會繼續驗證等級次高的權限表,如果最低的權限表都沒有通過,那麼系統會判定該用戶沒有執行這條命令的權限。

Oracle數據庫有一套基於權限-角色-用戶的權限系統。即:權限可以賦予角色,角色可以賦予用戶,用戶就可以得到該角色的的全部權限。當然也可以單獨爲用戶添加某個權限。

Mysql和oracle數據庫的用戶和表的關係也是不一樣的。Mysql一個用戶,多個數據庫,每個數據庫擁有各自的表,而Oracle一個數據庫,多個用戶,每個用戶擁有各自的表(數據庫對象)

Mysql數據庫的權限表都放在mysql庫中,其中

  1. mysql.user表存儲全局權限,適用於一個給定服務器中的所有數據庫
  2. mysql.dbmysql.host表存儲數據庫權限,適用於一個給定數據庫中的所有目標。
  3. mysql.tables_priv表存儲表權限,適用於一個給定表中的所有列
  4. mysql.columns_priv表存儲列權限,適用於一個給定表中的單一列。這些權限存儲在中。

ORACLE系統提供三種權限:Object 對象級、System 系統級、Role 角色級。

  1. Oracle 的角色存放在表 dba_roles
  2. 某角色包含的系統權限存放在  表dba_sys_privs
  3. 包含的對象權限存放在 表dba_tab_privs

具體的權限這裏就不列舉了

oracle可以參考官網給出的列表:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3  表18-1和表18-2

mydql可以參考官網給出的列表:https://dev.mysql.com/doc/refman/5.7/en/grant-tables.html#grant-tables-user-db

系統表梳理

系統表的梳理主要關注的是有關於元數據的系統表,至於其他的系統表這裏暫不做梳理。

Mysql數據庫的information_schema是一個元數據庫。它就像物業公司的信息庫,對管理的每棟大廈有多少電梯、電梯型號、每個房間的長寬高等等瞭如指掌。

常見的元信息表有:

  1. SCHEMATA提供數據庫信息,有哪些數據庫,字符集是GBK還是UTF-8等等。
  2. TABLES  提供表的信息,數據庫有哪些表,是什麼存儲引擎等等。
  3. COLUMNS   提供字段的信息,有哪些字段字段類型是什麼等等。
  4. STATISTICS  提供索引信息 表中有那些索引,索引的字段、類型等。
  5. TABLE_CONSTRAINTS   提供表的約束情況
  6. KEY_COLUMN_USAGE  提供主鍵、外鍵、唯一約束等信息
  7. ROUTINES 提供函數和存儲過程的信息
  8. VIEWS 提供數據庫下所有視圖信息
  9. TRIGGERS  提供所有的觸發器情況

Oracle數據庫將元數據放到靜態數據字典視圖。Oracle元數據獲取可以通過靜態數據字典視圖來獲取。

Oracle數據庫的元數據表同種類型的一般有三張表,前綴分別是:DBA 表示數據庫中所有的 ALL 表示當前用戶可訪問的所有 USER表示當前用戶擁有的

【參考:https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2094.htm

  1. XX_TAB_COMMENTS  顯示錶和視圖的元數據
  2. XX_TAB_COLUMNS 顯示錶、視圖和集羣的列
  3. XX_CONS_COLUMNS 顯示約束的元數據

突發奇想

當面對一個數據表很大的時候,我們的業務需求需要查詢一些數據,但是這些數據並不是數據表裏的數據,或許是一些統計數據,例如想拿到一張表的數據行數、數據表中的字節數等數據。我們去查詢數據表效果是不理想的,因爲查詢的數據表如果數據量很大,那麼我們會在這個查詢中消耗較長的時間。

建議如下:如果我們想拿到的數據並不是數據庫表中的數據,那麼我們可以查找數據庫的元數據來拿到我們想要的數據,比如想拿到數據庫中的行數,我們可以查詢數據庫中table表的元數據,裏面會有行數據的統計。相對於使用count來查詢表,效率和時間都會有很大的提升。

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