数据控制语言(DCL)

授予,撤消和拒绝数据库权限

计算机监视器上的SQL代码

ermingut / Getty Images

数据控制语言是的子集结构化查询语言.数据库管理员使用DCL配置对关系数据库的安全访问。它补充了这一点数据定义语言,它添加和删除数据库对象,以及数据操纵语言,检索,插入并修改数据库的内容。

DCL是最简单的SQL子集,因为它仅由三个命令组成:授予,撤销和拒绝。组合,这三个命令为管理员提供了灵活的设置和删除粒度时尚的数据库权限。

使用GRANT命令添加权限

grant命令为a增加了新的权限数据库用户.它有一个非常简单的语法,定义如下:

格兰特(特权)
在[对象]
到[用户]
[拨打选项]

下面是你可以用这个命令提供的每个参数的概要:

  • 特权-可以是关键字ALL(授予各种权限)或特定的数据库权限或一组权限。示例包括CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE和CREATE VIEW。
  • 目的- 可以是任何数据库对象。有效权限选项根据您在本子句中包含的数据库对象的类型而异。通常,对象将是数据库,功能,存储过程,表或视图。
  • 用户- 可以是任何数据库用户。如果您希望利用基于角色的数据库安全性,您还可以替换在此子句中的角色。
  • 如果包含可选的赠送选项子句,您不仅可以授予指定用户在SQL语句中定义的权限,还可以授予用户进一步授予这些相同权限的权限其他数据库用户。因此,请小心使用这个从句。

例如,假设您希望授予用户能够从中检索信息员工数据库人力资源.使用以下SQL命令:

格兰特选择
在hr.employees

Joe可以从员工表中检索信息。但是,他将不会授予其他用户权限权限检索该表中的信息,因为DCL脚本未包含“具有”授权“选项子句。

撤销数据库访问

REVOKE命令从先前授予访问权限的用户中删除数据库访问权限。该命令的语法定义如下:

撤销[授予选项] [许可]
在[对象]
来自[用户]
(级联)

下面是关于REVOKE命令参数的概要:

  • 允许- 指定要从识别的用户删除的数据库权限。该命令撤销以前为已识别的许可提供的授予和拒绝断言。
  • 目的- 可以是任何数据库对象。有效权限选项根据您在本子句中包含的数据库对象的类型而异。通常,对象将是数据库,函数,存储过程,表或视图。
  • 用户- 可以是任何数据库用户。如果您希望利用基于角色的数据库安全性,您还可以替换在此子句中的角色。
  • 授予期权子句删除了指定的用户授予其他用户指定权限的能力。如果你包括授予期权子句在撤销声明中,未撤销主要权限。此条款仅撤销授予能力。
  • 级联选项还从指定用户授予的任何用户撤消指定的权限。

下面的命令撤销在前面的例子中授予Joe的权限:

取消选择
在hr.employees
来自乔

明确拒绝数据库访问

DENY命令显式地阻止用户接收特定的权限。当用户是被授予权限的角色或组的成员,并且希望通过创建异常防止该用户继承该权限时,此特性很有用。该命令的语法如下:

否认[许可]
在[对象]
到[用户]

拒绝命令的参数与用于授权命令的参数相同。例如,如果您希望确保Matthew永远不会收到从员工表中删除信息的能力,请发出以下命令:

拒绝删除
在hr.employees
马修
这个页面有用吗?