📜  MySQL |授予/撤销权限

📅  最后修改于: 2021-09-09 10:51:42             🧑  作者: Mango

授予特权

我们已经学习了如何使用 MySQL 在 MySQL 中创建用户 |创建用户语句。但是使用 Create User 语句只会创建一个新用户,但不会向用户帐户授予任何权限。因此,要向用户帐户授予权限,使用 GRANT 语句。

句法:

GRANT privileges_names ON object TO user;

使用的参数

  • privileges_name :这些是授予用户的访问权限或特权。
  • object:它是被授予权限的数据库对象的名称。在授予表权限的情况下,这将是表名。
  • 用户:它是将授予权限的用户的名称。

特权
下面列出了可以授予用户的权限以及说明:

现在让我们了解向用户授予权限的不同方式:

  1. 向表中的用户授予 SELECT 特权:要向名为“users”的表(其中用户名为 Amit)授予选择特权,应执行以下 GRANT 语句。
    GRANT SELECT ON Users TO'Amit'@'localhost;
  2. 向表中的用户授予多个权限:要向表“users”中名为“Amit”的用户授予多个权限,应执行以下 GRANT 语句。
    GRANT SELECT, INSERT, DELETE, UPDATE ON Users TO 'Amit'@'localhost;
  3. 将所有权限授予表中的用户:要将所有权限授予表“users”中名为“Amit”的用户,应执行以下授予语句。
    GRANT ALL ON Users TO 'Amit'@'localhost;
  4. 向表中的所有用户授予权限:要向表“用户”中的所有用户授予特定权限,应执行以下授予语句。
    GRANT SELECT  ON Users TO '*'@'localhost;

    在上面的示例中,“*”符号用于向“users”表的所有用户授予选择权限。

  5. 授予函数/过程权限:在使用函数和过程时,Grant 语句可用于授予用户执行 MySQL 中的函数和过程的能力。

    授予执行权限:执行权限赋予执行函数或过程的能力。

    句法:

    GRANT EXECUTE ON [ PROCEDURE | FUNCTION ] object TO user; 

    授予执行权限的不同方式:

    • 授予对 MySQL 中函数的EXECUTE 权限。 : 如果有一个名为“CalculateSalary”的函数,并且您想授予名为 Amit 的用户 EXECUTE 访问权限,则应执行以下 GRANT 语句。
      GRANT EXECUTE ON FUNCTION Calculatesalary TO 'Amit'@localhost';
    • 向所有用户授予 MySQL 中某个函数的EXECUTE 权限。 : 如果有一个名为“CalculateSalary”的函数,并且你想授予所有用户 EXECUTE 访问权限,那么应该执行下面的 GRANT 语句。
      GRANT EXECUTE ON FUNCTION Calculatesalary TO '*'@localhost'; 
    • 在 MySQL 中的过程中向用户授予 EXECUTE 权限。 : 如果有一个名为“DBMSProcedure”的过程,并且您想授予名为 Amit 的用户 EXECUTE 访问权限,则应执行以下 GRANT 语句。
      GRANT EXECUTE ON PROCEDURE DBMSProcedure TO 'Amit'@localhost'; 
    • 在 MySQL 中的过程中向所有用户授予 EXECUTE 权限。 : 如果有一个名为“DBMSProcedure”的过程,并且您想授予所有用户 EXECUTE 访问权限,则应执行以下 GRANT 语句。
      GRANT EXECUTE ON PROCEDURE DBMSProcedure TO '*'@localhost'; 

检查授予用户的权限:要在表中查看授予用户的权限,请使用 SHOW GRANTS 语句。要检查授予名为“Amit”且主机为“localhost”的用户的权限,将执行以下 SHOW GRANTS 语句:

SHOW GRANTS FOR  'Amit'@localhost'; 

输出 :

GRANTS FOR  Amit@localhost 

GRANT USAGE ON *.* TO `SUPER`@localhost` 

从表中撤销权限

Revoke 语句用于撤销过去授予用户的部分或全部权限。

句法:

REVOKE privileges ON object FROM user;

使用的参数

  • object:它是从中撤销权限的数据库对象的名称。在从表中撤销特权的情况下,这将是表名。
  • 用户:它是被撤销权限的用户的名称。

特权
权限可以是以下值:

撤销用户权限的不同方式:

  1. 撤销表中用户的 SELECT 权限:要撤销用户名为 Amit 的名为“users”的表的选择权限,应执行以下撤销语句。
    REVOKE SELECT ON  users TO 'Amit'@localhost'; 
  2. 撤销对表中用户的多个权限:要撤销对表“users”中名为“Amit”的用户的多个权限,应执行以下撤销语句。
    REVOKE SELECT, INSERT, DELETE, UPDATE ON Users TO 'Amit'@'localhost; 
  3. 撤销表中用户的所有权限:要撤销表“users”中名为“Amit”的用户的所有权限,应执行以下撤销语句。

    REVOKE ALL ON Users TO 'Amit'@'localhost; 
  4. 撤销表中所有用户的特权:要撤销表“用户”中所有用户的特定特权,应执行以下撤销语句。
    REVOKE SELECT  ON Users TO '*'@'localhost; 
  5. 撤销对函数/过程的特权:在使用函数和过程时,可以使用 revoke 语句撤销过去一直是 EXECUTE 特权的用户的特权。

    句法:

    REVOKE EXECUTE ON [ PROCEDURE | FUNCTION ] object FROM user; 
    • 撤销对 MySQL 中函数的EXECUTE 权限。 : 如果有一个叫做“CalculateSalary”的函数,并且你想撤销名为Amit的用户的EXECUTE访问权限,那么应该执行下面的revoke语句。
      REVOKE EXECUTE ON FUNCTION Calculatesalary TO 'Amit'@localhost'; 
    • 撤销对 MySQL 中某个函数的所有用户的 EXECUTE 权限。 : 如果有一个叫做“CalculateSalary”的函数,并且你想撤销所有用户的EXECUTE访问权限,那么应该执行下面的revoke语句。
      REVOKE EXECUTE ON FUNCTION Calculatesalary TO '*'@localhost'; 
    • 撤销对 MySQL 中某个过程的用户的 EXECUTE 特权。 :如果有一个名为“DBMSProcedure”的过程,并且您想撤销对名为Amit 的用户的EXECUTE 访问权限,则应执行以下撤销语句。
      REVOKE EXECUTE ON PROCEDURE DBMSProcedure TO 'Amit'@localhost'; 
    • 撤销对 MySQL 中某个过程的所有用户的 EXECUTE 权限。 :如果有一个名为“DBMSProcedure”的过程,并且你想撤销所有用户的EXECUTE访问权限,那么应该执行下面的撤销语句。
      REVOKE EXECUTE ON PROCEDURE DBMSProcedure TO '*'@localhost';