MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL Grant授权

MySQL具有一项功能,可为数据库的管理员和用户提供许多控制选项。我们已经学习了如何在MySQL服务器中使用 CREATE USER 语句创建新用户。现在,我们将学习对用户帐户的授予Grant。 MySQL提供GRANT语句来授予对用户帐户的访问权限。

GRANT语句

grant语句使系统管理员可以 分配Grant和角色 添加到 MySQL 用户帐户,以便他们可以随时使用对数据库分配的权限

语法

以下是使用GRANT语句的基本语法:
GRANT privilege_name(s) 
ON object 
TO user_account_name;

参数说明

在以上语法中,我们可以具有以下参数:
参数名称 说明
privilege_name(s) 它指定对用户帐户的访问权限或授予Grant。如果我们要赋予多个Grant,请使用逗号分隔。
object 它确定授予访问权限的Grant级别。这意味着向表授予Grant;那么该对象应该是表的名称。
user_account_name 它确定要授予访问权限的用户的帐户名。

Grant级别

MySQL支持以下Grant级别:
级别 语法 说明
Global GRANT ALL ON *.* TO john@localhost; 它适用于MySQL服务器上的所有数据库。我们需要使用*。*语法来应用全局Grant。在这里,用户可以从当前服务器的所有数据库和表中查询数据。
Database GRANT ALL ON mydb.* TO john@localhost; 它适用于当前数据库中的所有对象。我们需要使用db_name。*语法来应用此Grant。在这里,用户可以从给定数据库中的所有表中查询数据。
Table GRANT DELETE ON mydb.employees TO john@localhsot; 它适用于指定表中的所有列。我们需要使用db_name.table_name语法来分配此Grant。在这里,用户可以从指定数据库的给定表中查询数据。
Column GRANT SELECT (col1), INSERT (col1, col2), UPDATE (col2) ON mydb.mytable TO john@localhost; 它适用于表的单个列。在这里,我们必须为每个Grant指定用括号括起来的列名称。用户可以选择一列,在两列中插入值,并且仅更新给定表中的一列。
Stored Routine GRANT EXECUTE ON PROCEDURE mydb.myprocedure TO john@localhost; 它适用于存储的例程(过程和函数)。它包含CREATE ROUTINE,ALTER ROUTINE,EXECUTE和GRANT OPTION Grant。用户可以在此处执行当前数据库中的存储过程。
Proxy GRANT PROXY ON root TO peter@localhost; 它使一个用户成为其他用户的代理。

GRANT语句示例

让我们通过示例了解GRANT特权。首先,我们需要使用以下语句创建一个名为" john @ localhost "的新用户:
mysql> CREATE USER john@localhost IDENTIFIED BY 'jtp12345';
接下来,执行SHOW GRANT语句,使用以下查询检查分配给john@localhost的特权:
mysql> SHOW GRANTS for john@localhost;
它将给出以下输出。在这里, 使用表示用户可以登录数据库但没有任何Grant。
MySQL Grant Privilege
如果要 将当前服务器中所有数据库的所有Grant分配给john @ localhost,请执行以下语句:
mysql> GRANT ALL ON mystudentdb.* TO john@localhost;
再次,执行SHOW GRANT语句以验证Grant。成功执行后,我们将获得以下输出。这里,所有Grant都分配给当前服务器中所有数据库的john @ localhost。
MySQL Grant Privilege

存储的例程示例

在这里,授予Grant应用于 过程和函数,用户可以在其中执行当前MySQL数据库中的存储过程。 EXECUTEGrant提供执行功能和过程的能力。
让我们通过示例了解它。假设我们有一个函数 calculatesalary ,并想向用户john授予 EXECUTE Grant,请运行以下查询:
mysql> GRANT EXECUTE ON FUNCTION calculatesalary TO john@localhost;
如果需要向所有用户提供EXECUTE Grant,我们必须运行以下命令:
mysql> GRANT EXECUTE ON FUNCTION calculatesalary TO *@localhost;
我们可以从下面的列表中选择可以应用Grant的访问权限。
SELECT: 它使我们能够从指定的表中查看结果集。 INSERT: 它使我们能够在给定表中添加记录。 DELETE: 它使我们能够从表中删除行。 CREATE: 它使我们能够创建表/方案。 ALTER: 它使我们能够修改表/方案。 UPDATE: 它使我们能够修改表。 DROP: 它使我们能够删除表。 INDEX: 它使我们能够在表上创建索引。 ALL: 它使我们能够授予除GRANT 特权以外的所有权限。 GRANT: 它使我们能够更改或添加访问权限。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4