无涯教程-MySQL 授权

110 阅读4分钟

MySQL有一个函数,可以为管理员和数据库中的用户提供许多控制选项。已经学习了如何使用在mysql server中创建用户语句创建新用户。现在,无涯教程将学习授予用户帐户的权限。 MySQL提供授权陈述,以便向用户帐户提供访问权限。

授予声明

授权语句使系统管理员能够 分配权限和角色 到mysql用户帐户使它们可以在需要时在数据库上使用分配的权限。

以下是使用授权语句的基本语法:

GRANT privilege_name(s) 
ON object 
TO user_account_name;

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

参数名称 描述
privilege_name(s) 它指定访问权限或授予用户帐户的权限。如果想给出多种权限,那么使用逗号运算符将它们分开。
object 它确定授予访问权限的权限级别。这意味着向表格授予特权;然后,对象应该是表的名称。
user_account_name 它确定要授予访问权限的用户的帐户名称。

MySQL支持以下特权级别:

Privilege Level 语法 Descriptions
Global GRANT ALL ON *.* TO john@localhost; 它适用于MySQL Server上的所有数据库。需要使用*.*语法以应用全局权限。这里,用户可以查询来自当前服务器的所有数据库和表的数据。
Database GRANT ALL ON mydb.* TO john@localhost; 它适用于当前数据库中的所有对象。需要使用db_name.*语法来应用此权限。这里,用户可以查询来自给定数据库中的所有表的数据。
Table GRANT DELETE ON mydb.employees TO john@localhsot; 它适用于指定表中的所有列。需要使用db_name.table_name语法来分配此权限。这里,用户可以从指定数据库的给定表中查询数据。
Column GRANT SELECT (col1), INSERT (col1, col2), UPDATE (col2) ON mydb.mytable TO john@localhost; 它适用于表的单个列。在这里,必须指定为每个权限的括号括起来的列名称。用户可以选择一个列,在两列中插入值,并在给定表中仅更新一列。
Stored Routine GRANT EXECUTE ON PROCEDURE mydb.myprocedure TO john@localhost; 它适用于存储的例程(存储过程和函数)。它包含创建例程,更改例程,执行和授予选项权限。这里,用户可以在当前数据库中执行存储过程。
Proxy GRANT PROXY ON root TO peter@localhost; 它使一个用户能够为其他用户成为代理。

授予声明示例

让无涯教程通过该示例理解授权权限。首先,需要使用以下语句创建一个名为" johe @ localhost "的新用户:

mysql> CREATE USER john@localhost IDENTIFIED BY jtp12345;

接下来,执行show grant语句,以检查使用以下查询检查分配给John @ localhost的权限:

mysql> SHOW GRANTS FOR john@localhost;

它将提供以下产出。这里,USAGE表示用户可以登录数据库但没有任何权限。

MySQL Grant Privilege

如果想要将所有权限分配给当前服务器中的所有数据库到John @ localhost中的所有数据库,请执行以下语句:

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

再次,执行show grant语句以验证权限。成功执行后,将获得以下输出。这里所有权限都分配给当前服务器中的所有数据库到John@localhost。

MySQL Grant Privilege

存储过程示例

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

让无涯教程了解这个例子。假设有一个函数 calculatesalary 并且想要授予 execute 权限到用户John,运行以下查询:

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

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

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                 -  能够提供除授权权限之外的所有权限。
  10. GRANT          -  能够更改或添加访问权限。

参考链接

www.learnfk.com/mysql/mysql…