數據控制語言(DCL)

GRANT,REVOKE和DENY數據庫權限

數據控制語言(DCL)是結構化查詢語言 (SQL)的一個子集,允許數據庫管理員配置對關係數據庫的安全訪問。 它補充了用於添加和刪除數據庫對象的數據定義語言(DDL)以及用於檢索,插入和修改數據庫內容的數據操作語言(DML)。

DCL是最簡單的SQL子集 ,因為它只包含三個命令:GRANT,REVOKE和DENY。 綜合起來,這三個命令為管理員提供了以非常細緻的方式設置和刪除數據庫權限的靈活性。

使用GRANT命令添加權限

GRANT命令由管理員用來向數據庫用戶添加新的權限。 它有一個非常簡單的語法,定義如下:

授予[特權]開[對象] TO [用戶] [授權選項]

以下是您可以使用此命令提供的每個參數的簡要說明:

例如,假設您希望授予用戶Joe從名為HR的數據庫中的employees表中檢索信息的能力。 您可以使用以下SQL命令:

將HR.employees選擇給喬

Joe現在可以從僱員表中檢索信息。 但是,他不會授予其他用戶從該表中檢索信息的權限,因為您沒有在GRANT語句中包含WITH GRANT OPTION子句。

撤銷數據庫訪問

REVOKE命令用於刪除先前授予此類訪問權的用戶的數據庫訪問權限。 該命令的語法定義如下:

REVOKE [允許選項] [允許] ON [對象] FROM [用戶] [級聯]

以下是關於REVOKE命令參數的簡要介紹:

例如,以下命令將撤消在前面示例中授予Joe的權限:

REVOKE選擇人力資源僱員從喬

明確拒絕數據庫訪問

DENY命令用於明確阻止用戶接收特定權限。 當用戶是被授予權限的角色或組的成員時,這非常有用,並且您希望通過創建異常來防止該用戶繼承權限。 該命令的語法如下所示:

DENY [許可] ON [對象] TO [用戶]

DENY命令的參數與GRANT命令使用的參數相同。

例如,如果您希望確保Matthew永遠不會從Employees表中刪除信息,請發出以下命令:

拒絕刪除HR.employees至Matthew