授予特权
我们已经学习了如何使用 MySQL 在 MySQL 中创建用户 |创建用户语句。但是使用 Create User 语句只会创建一个新用户,但不会向用户帐户授予任何权限。因此,要向用户帐户授予权限,使用 GRANT 语句。
句法:
GRANT privileges_names ON object TO user;
使用的参数:
- privileges_name :这些是授予用户的访问权限或特权。
- object:它是被授予权限的数据库对象的名称。在授予表权限的情况下,这将是表名。
- 用户:它是将授予权限的用户的名称。
特权:
下面列出了可以授予用户的权限以及说明:
现在让我们了解向用户授予权限的不同方式:
- 向表中的用户授予 SELECT 特权:要向名为“users”的表(其中用户名为 Amit)授予选择特权,应执行以下 GRANT 语句。
GRANT SELECT ON Users TO'Amit'@'localhost;
- 向表中的用户授予多个权限:要向表“users”中名为“Amit”的用户授予多个权限,应执行以下 GRANT 语句。
GRANT SELECT, INSERT, DELETE, UPDATE ON Users TO 'Amit'@'localhost;
- 将所有权限授予表中的用户:要将所有权限授予表“users”中名为“Amit”的用户,应执行以下授予语句。
GRANT ALL ON Users TO 'Amit'@'localhost;
- 向表中的所有用户授予权限:要向表“用户”中的所有用户授予特定权限,应执行以下授予语句。
GRANT SELECT ON Users TO '*'@'localhost;
在上面的示例中,“*”符号用于向“users”表的所有用户授予选择权限。
- 授予函数/过程权限:在使用函数和过程时,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';
- 授予对 MySQL 中函数的EXECUTE 权限。 : 如果有一个名为“CalculateSalary”的函数,并且您想授予名为 Amit 的用户 EXECUTE 访问权限,则应执行以下 GRANT 语句。
检查授予用户的权限:要在表中查看授予用户的权限,请使用 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:它是从中撤销权限的数据库对象的名称。在从表中撤销特权的情况下,这将是表名。
- 用户:它是被撤销权限的用户的名称。
特权
权限可以是以下值:
撤销用户权限的不同方式:
- 撤销表中用户的 SELECT 权限:要撤销用户名为 Amit 的名为“users”的表的选择权限,应执行以下撤销语句。
REVOKE SELECT ON users TO 'Amit'@localhost';
- 撤销对表中用户的多个权限:要撤销对表“users”中名为“Amit”的用户的多个权限,应执行以下撤销语句。
REVOKE SELECT, INSERT, DELETE, UPDATE ON Users TO 'Amit'@'localhost;
-
撤销表中用户的所有权限:要撤销表“users”中名为“Amit”的用户的所有权限,应执行以下撤销语句。
REVOKE ALL ON Users TO 'Amit'@'localhost;
- 撤销表中所有用户的特权:要撤销表“用户”中所有用户的特定特权,应执行以下撤销语句。
REVOKE SELECT ON Users TO '*'@'localhost;
- 撤销对函数/过程的特权:在使用函数和过程时,可以使用 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';
- 撤销对 MySQL 中函数的EXECUTE 权限。 : 如果有一个叫做“CalculateSalary”的函数,并且你想撤销名为Amit的用户的EXECUTE访问权限,那么应该执行下面的revoke语句。