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;
我们可以从下面的列表中撤销可以应用哪些权限的权限。
- CREATE:它使用户帐户能够创建数据库和表。
- DROP:它允许用户帐户删除数据库和表。
- DELETE:它使用户帐户能够从特定表中删除行。
- INSERT:它允许用户帐户将行插入到特定的表中。
- SELECT:它使用户帐户能够读取数据库。
- UPDATE:它使用户帐户能够更新表行。
热门文章
优秀文章