我们已经学习了如何将访问权限从授予权限授予用户帐户。现在,我们将学习如何撤销用户帐户的权限。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。
如果我们要撤销分配给用户的所有权限,请执行以下语句:
mysql> REVOKE ALL, GRANT OPTION FROM john@localhost;
我们将得到下面的输出,我们可以看到用户可以在没有任何权限的情况下登录到数据库。
从用户帐户撤消选定的权限
假设我们使用以下语句向用户提供了 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授予EXECUTE权限,请运行以下查询:
mysql> GRANT EXECUTE ON FUNCTION calculatesalary TO john@localhost;
如果需要撤销用户的 EXECUTE 权限,我们必须运行以下命令:
mysql> REVOKE EXECUTE ON FUNCTION calculatesalary TO john@localhost;
我们可以从以下可以应用权限的列表中撤销权限。
- CREATE:它使用户帐户能够创建数据库和表。
- DROP:它允许用户帐户删除数据库和表。
- DELETE:它使用户帐户能够从特定表中删除行。
- INSERT:它允许用户帐户将行插入到特定表中。
- SELECT:它使用户帐户能够读取数据库。
- UPDATE:它使用户帐户能够更新表行。