MySQL 取消权限

MySQL 取消权限

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

REVOKE 语句

撤销语句使系统管理员能够撤销 MySQL 用户帐户的权限和角色,以便他们不能再使用之前分配的数据库权限。

语法

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

REVOKE privilege_name(s) 
ON object 
FROM user_account_name;

参数解释

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

参数名 描述
privilege_name(s) 它指定我们要从用户账户中撤销的访问权限或授权特权。
object 它确定被授予访问权限的特权级别。如果是对表进行授权,则对象应为表的名称。
user_account_name 它确定我们要撤销访问权限的用户的账户名。

权限级别

MySQL 支持以下权限级别:

特权级别 语法 描述
全局 REVOKE ALL, GRANT OPTION FROM john@localhost; 它用于从MySQL服务器上撤销用户的所有访问权限。
数据库 REVOKE ALL ON mydb.* FROM john@localhost; 它用于从当前数据库的对象中撤销所有权限。
REVOKE DELETE ON mydb.employees FROM john@localhsot; 它用于从指定表中撤销所有列的权限。
REVOKE SELECT (col1), INSERT (col1, col2), UPDATE (col2) ON mydb.mytable FROM john@localhost; 它用于从表的单个列撤销权限。
存储过程 REVOKE EXECUTE ON PROCEDURE/FUNCTION mydb.myprocedure FROM john@localhost; 它用于从存储过程(过程和函数)中撤销所有权限。
代理 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 取消权限

如果我们想撤销授予用户的所有权限,执行以下语句:

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

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

MySQL 取消权限

撤销用户帐户上的选定特权

假设我们已经通过以下语句为用户提供了在mystudentdb上执行SELECT、INSERT和UPDATE命令的授权特权:

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

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

mysql> SHOW GRANTS FOR john@localhost;

最后,通过以下语句执行REVOKE语句来移除更新和插入的特权:

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

它将提供以下输出,只保留SELECT权限。

MySQL 取消权限

撤销代理用户示例

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

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

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

MySQL 取消权限

撤销存储例程示例的权限

在这里,撤销权限适用于 过去拥有执行权限的用户 的存储例程(包括过程和函数)。

通过以下示例来理解它。假设我们有一个函数 calculatesalary ,并希望授予用户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: 它使用户账户能够更新表行。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程