程序员社区

MySQL系列教程 --- 52、MySQL 撤销权限

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

撤销声明

revoke 语句使系统管理员可以撤销\MySQL 用户帐户的权限和角色\,使他们不能使用过去分配的数据库权限。

句法

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

REVOKE privilege_name(s)   
ON object   
FROM user_account_name;  

参数说明

在上面的语法中,我们可以有以下参数:

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

权限级别

MySQL支持以下权限级别:

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

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。

file

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

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

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

file

从用户帐户撤消选定的权限

假设我们使用以下语句向用户提供了 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 权限。

file

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';  

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

file

从存储的例程示例中撤销权限

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

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

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:它使用户帐户能够更新表行。
赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 52、MySQL 撤销权限

一个分享Java & Python知识的社区