在數據庫中,表是我們接觸得最多的數據庫對象,接下來對與表有關的系統權限與對象權限做一個小結。
(1)與表有關的系統權限
| CREATE TABLE | 在當前Schema中創建、刪除、修改表。 |
| SELECT ANY TABLE | 查詢數據庫中的任何表 |
| ALTER ANY TABLE | 更改數據庫中的任何表 |
| DROP ANY TABLE | 刪除數據庫中的任何表 |
| … | … |
還有許多關於表的系統權限,這里不在一一列出,值得注意的是CREATE TABLE權限,它允許在當前Schema中創建table,同時,也賦予它了一些隱形的權限信息,例如:DROP TABLE、ALTER TABLE等,其實,用戶對自己Schema下的對象擁有任何權限。
(2)與表有關的對象權限
首先我們要明確什么是對象權限?對象權限是指對某個特定Schema對象的操作權限。數據庫Schema對象所有者擁有該對象的所有對象權限,所以對象權限的管理實際上是對象所有者對其它用戶操作該對象的權限管理。
[個人犯錯]:由於對對象權限的概念不夠清晰,今天在處理用於數據庫接口的Schema中的對象權限時,直接在當前Schema中賦予對象權限,結果去查詢對象權限時,發現並沒有對於的權限被賦予,通過查看資料,才知道用戶對自己Schema中的對象具有任何權限,所以,不能直接將該用戶移交給其它系統的開發者,正確的做法是再創建一個新的用戶,用來查看接口Schema中的數據信息。
| ALTER | 修改表的定義 |
| DELETE | 刪除表中數據 |
| DEBUG | 調試定義在該表上的觸發器,調用引用該表的SQL語句 |
| INDEX | 在表上創建索引 |
| INSERT | 在表中插入數據 |
| REFERENCES | 引用該表中的列以在其它表中創建外鍵約束 |
| SELECT | 查詢表 |
| UPDATE | 更新表中數據 |
對象權限的授予語法:
GRANT object_privilege_list | ALL [PRIVILEGE] [(column,...)] --以往都是直接賦予表權限,通過這里也可以看出,可以單獨為列賦予對象權限 ON [Schema.]object TO user_list|role_list|PUBLIC [WITH GRANT OPTION];
