无涯教程-MySQL 撤权

126 阅读4分钟

无涯教程已经学习了如何向用户帐户提供授权权限的访问权限。现在,将从用户帐户中了解撤销权限。 MySQL提供撤消语句以从用户帐户中删除权限。

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

语法

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

REVOKE privilege_name(s) 
ON object 
FROM user_account_name;

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

参数名称 描述
privilege_name(s) 它指定从用户帐户撤消的访问权限或授权权限。
object 它确定授予访问权限的权限级别。这意味着向表格授予特权;然后,对象应该是表的名称。
user_account_name 它确定希望撤销访问权限的用户的帐户名称。

mysql支持以下权限级别:

Privilege Level 语法 Descriptions
Global REVOKE ALL, GRANT OPTION FROM john@localhost; 它适用于删除MySQL Server上用户的所有访问权限。
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; 它使能够撤销代理用户。

撤消语句示例

让无涯教程通过该示例理解撤消权限。首先,需要使用以下语句创建一个名为" johe@localhost "的新用户:

mysql> CREATE USER john@localhost IDENTIFIED BY jtp12345;  

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

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

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

MySQL Revoke Privilege

如果无涯教程想撤消分配给用户的所有权限,请执行以下语句:

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

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

MySQL Revoke Privilege

撤消用户帐户的选定权限

假设在MyStudentDB上为用户提供了授予的特权,并使用以下语句:

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

接下来,使用以下语句显示授权权限:

mysql> SHOW GRANTS FOR john@localhost;

最后,执行revoke语句以删除更新和包含以下语句的权限:

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

它将提供以下输出,只留下选择权限。

MySQL Revoke Privilege

撤消代理用户示例

首先,无涯教程需要将代理权限授予使用以下语句的用户:

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

接下来,使用给定的语句显示授权权限:

mysql> SHOW GRANTS FOR john@localhost;

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

mysql> REVOKE PROXY ON peter@learnfk FROM john@localhost;

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

MySQL Revoke Privilege

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

这里,撤消权限应用于过程和函数,在那里可以在其中撤消与过去具有执行权限的用户的权限。

让无涯教程了解这个例子。假设有一个函数 calculatesalary 并且想要授予 execute 权限到用户John,运行以下查询:

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

如果需要撤消向用户执行权限,必须运行以下命令:

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

可以从以下列表中撤消权限,可以应用权限。

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

参考链接

www.learnfk.com/mysql/mysql…