数据控制语言(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