MySQL Revoke撤销权限

我们已经学习了如何将访问权限从授予权限授予用户帐户。现在,我们将了解如何从用户帐户中撤销权限。MySQL 提供 REVOKE 语句来删除用户帐户的权限。

一、MySQL Revoke撤销权限的语法

Revoke 语句使系统管理员能够撤销 MySQL 用户帐户的权限和角色,以便他们无法使用过去分配的数据库权限。

以下是使用 REVOKE 语句的基本语法:

REVOKE privilege_name(s)   
ON object   
FROM user_account_name; 

参数说明

参数名称 说明
privilege_name 它指定我们要从用户帐户中撤消的访问权限或授予权限。
object    它确定授予访问权限的权限级别。这意味着授予表特权;那么对象应该是表的名称。
user_account_name 它确定我们要撤销访问权限的用户的帐户名。

权限级别

MySQL 支持以下权限级别:

权限级别 语法 说明
Global 撤销所有,从john@localhost授予选项; 它适用于删除用户在 MySQL 服务器上的所有访问权限。
Database REVOKE ALL ON mydb.*
FROM john@localhost ;
它适用于撤销当前数据库中对象的所有权限。
Table 从john@localhsot 撤销对 mydb.employees的
删除;
它适用于撤销指定表中所有列的权限。
Column REVOKE SELECT (col1), INSERT (col1, col2), UPDATE (col2) ON mydb.mytable
FROM john@localhost ;
TO john@localhost ;
它适用于从表的单个列中撤销权限。
Stored Routine REVOKE EXECUTE ON PROCEDURE/FUNCTION mydb.myprocedure
FROM john@localhost ;
它适用于撤销存储例程(过程和函数)的所有特权。
Proxy 从peter@localhost撤销根代理; 它使我们能够撤销代理用户。

二、MySQL Revoke撤销权限的示例

让我们通过示例了解 REVOKE 权限。首先,我们需要使用以下语句创建一个名为“ john@localhost ”的新用户:

mysql> CREATE USER john@localhost IDENTIFIED BY 'jtp12345';    

接下来,使用以下语句将当前服务器中所有数据库的所有权限分配给john@localhost :

mysql> GRANT ALL ON mystudentdb.* TO john@localhost;  

接下来,执行 SHOW GRANT 语句来验证权限。在输出中,我们可以看到所有权限都分配给了当前服务器中的所有数据库到john@localhost。

如果我们想撤销分配给用户的所有权限,请执行以下语句:

mysql> REVOKE ALL, GRANT OPTION FROM john@localhost; 

我们将得到下面的输出,我们可以看到用户可以在没有任何权限的情况下登录数据库。

三、REVOKE 用户帐户中指定的权限

假设我们通过以下语句向用户提供了对 mystudentdb 的 SELECT、INSERT 和 UPDATE 命令的授予权限:

mysql> GRANT SELECT, UPDATE, INSERT ON mystudentdb.* TO john@localhost; 

接下来,使用以下语句显示 GRANT 特权:

mysql> SHOW GRANTS FOR john@localhost;  

最后,使用以下语句执行 REVOKE 语句以删除 UPDATE 和INSERT权限:

mysql> REVOKE UPDATE, INSERT ON mystudentdb.* FROM john@localhost; 

它将给出以下输出,其中只剩下 SELECT 权限。

四、REVOKE 代理用户的示例

首先,我们需要使用以下语句向您想要的用户授予代理权限:

mysql> GRANT PROXY ON 'peter@javatpoint' TO 'john'@'localhost' WITH GRANT OPTION;  

接下来,使用给定的语句显示 GRANT 特权:

mysql> SHOW GRANTS FOR 'john'@'localhost';  

最后,使用以下语句执行 REVOKE 语句以删除用户的代理权限:

mysql> REVOKE PROXY ON 'peter@javatpoint' FROM 'john'@'localhost';  

它将提供以下输出,其中代理权限被成功撤销。

五、从存储例程的示例中撤销特权

在这里,撤销权限应用于过程和函数,我们可以从过去拥有执行权限的用户那里撤销权限。

让我们通过例子来理解它。假设我们有一个函数calculatesalary并希望授予用户 john执行权限,请运行以下查询:

mysql> GRANT EXECUTE ON FUNCTION calculatesalary TO john@localhost;  

如果需要撤销用户的 EXECUTE 权限,我们必须运行以下命令:

mysql> REVOKE EXECUTE ON FUNCTION calculatesalary TO john@localhost;  

我们可以从下面的列表中撤销可以应用哪些权限的权限。

  1. CREATE:它使用户帐户能够创建数据库和表。
  2. DROP:它允许用户帐户删除数据库和表。
  3. DELETE:它使用户帐户能够从特定表中删除行。
  4. INSERT:它允许用户帐户将行插入到特定的表中。
  5. SELECT:它使用户帐户能够读取数据库。
  6. UPDATE:它使用户帐户能够更新表行。

热门文章

优秀文章