MySQL授予权限

MySQL授予权限

MySQL提供了许多控制选项,以便管理员和用户对数据库进行管理。我们已经学习了如何使用MySQL服务器中的CREATE USER语句创建新用户。现在,我们将学习为用户账户授予权限。MySQL提供了GRANT语句来赋予用户账户访问权限。

GRANT语句

GRANT语句使系统管理员能够将特权和角色分配给MySQL用户账户,以便他们在需要时可以使用分配的权限访问数据库。

语法

使用GRANT语句的基本语法如下:

GRANT privilege_name(s) 
ON object 
TO user_account_name;

参数解释

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

参数名称 描述
privilege_name(s) 它指定了对用户账户的访问权限或授权权限。如果我们想要给予多个权限,则使用逗号运算符来分隔它们。
object 它确定被授予访问权限的权限级别。这意味着给予表的权限,那么object应该是表的名称。
user_account_name 它确定被授予访问权限的用户账户名称。

特权级别

MySQL支持以下特权级别:

特权级别 语法 描述
全局 GRANT ALL ON . TO john@localhost; 它适用于MySQL服务器上的所有数据库。我们需要使用.的语法来应用全局特权。在这里,用户可以查询当前服务器上所有数据库和表的数据。
数据库 GRANT ALL ON mydb.* TO john@localhost; 它适用于当前数据库中的所有对象。我们需要使用db_name.*的语法来应用此特权。在这里,用户可以查询给定数据库中所有表的数据。
GRANT DELETE ON mydb.employees TO john@localhsot; 它适用于指定表中的所有列。我们需要使用db_name.table_name的语法为此特权分配权限。在这里,用户可以查询给定数据库中指定表的数据。
GRANT SELECT (col1), INSERT (col1, col2), UPDATE (col2) ON mydb.mytable TO john@localhost; 它适用于表中的单个列。在这里,我们必须为每个特权指定用括号括起来的列名。用户可以在给定表中选择一列,插入两列的值,并仅更新一列。
存储过程 GRANT EXECUTE ON PROCEDURE mydb.myprocedure TO john@localhost; 它适用于存储过程和函数。它包含CREATE ROUTINE、ALTER ROUTINE、EXECUTE和GRANT OPTION权限。在这里,用户可以在当前数据库中执行存储过程。
代理 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;

它将给出以下输出。在这里, 使用 意味着用户可以登录到数据库,但没有任何特权。

MySQL授予权限

如果我们想要给当前服务器上的所有数据库分配给john@localhost的所有权限,请执行以下语句: assign all privileges

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

再次执行SHOW GRANT语句来验证权限。成功执行后,我们将得到以下输出。这里将所有权限分配给当前服务器中的所有数据库的john@localhost。

MySQL授予权限

存储过程示例

在这里,授予权限适用于可以在当前MySQL数据库中执行存储过程的 过程和函数 。 EXECUTE权限提供执行函数和过程的能力。

让我们通过以下示例来理解。假设我们有一个名为 calculatesalary 的函数,并且想要授予用户john EXECUTE 权限,运行以下查询:

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

如果需要为所有用户提供”EXECUTE”权限,我们必须运行以下命令:

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

我们可以从下面的列表中选择访问权限,以便应用特定的权限。

  1. SELECT: 它使我们能够查看指定表的结果集。
  2. INSERT: 它使我们能够向给定的表中添加记录。
  3. DELETE: 它使我们能够从表中删除行。
  4. CREATE: 它使我们能够创建表/模式。
  5. ALTER: 它使我们能够修改表/模式。
  6. UPDATE: 它使我们能够修改表。
  7. DROP: 它使我们能够删除表。
  8. INDEX: 它使我们能够在表上创建索引。
  9. ALL: 它使我们能够授予除了GRANT权限之外的所有权限。
  10. GRANT: 它使我们能够更改或添加访问权限。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程