iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL GRANT用户授权的实现
  • 577
分享到

MySQL GRANT用户授权的实现

MySQLGRANT用户授权MySQL用户授权 2022-05-28 12:05:19 577人浏览 安东尼
摘要

授权就是为某个用户赋予某些权限。例如,可以为新建的用户赋予查询所有数据库和表的权限。Mysql 提供了 GRANT 语句来为用户设置权限。 在 mysql 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句

授权就是为某个用户赋予某些权限。例如,可以为新建的用户赋予查询所有数据库和表的权限。Mysql 提供了 GRANT 语句来为用户设置权限。

mysql 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句,其语法格式如下:


GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWord] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]

其中:

  • priv_type 参数表示权限类型;
  • columns_list 参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表;
  • database.table 用于指定权限的级别;
  • user 参数表示用户账户,由用户名和主机名构成,格式是“'username'@'hostname'”;
  • IDENTIFIED BY 参数用来为用户设置密码;
  • password 参数是用户的新密码。

WITH 关键字后面带有一个或多个 with_option 参数。这个参数有 5 个选项,详细介绍如下:

  • GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;
  • MAX_QUERIES_PER_HOUR count:设置每个小时可以允许执行 count 次查询;
  • MAX_UPDATES_PER_HOUR count:设置每个小时可以允许执行 count 次更新;
  • MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立 count 个连接;
  • MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的 count 个连接。

Mysql 中可以授予的权限有如下几组:

  • 列权限,和表中的一个具体列相关。例如,可以使用 UPDATE 语句更新表 students 中 name 列的值的权限。
  • 表权限,和一个具体表中的所有数据相关。例如,可以使用 SELECT 语句查询表 students 的所有数据的权限。
  • 数据库权限,和一个具体的数据库中的所有表相关。例如,可以在已有的数据库 mytest 中创建新表的权限。
  • 用户权限,和 MySQL 中所有的数据库相关。例如,可以删除已有的数据库或者创建一个新的数据库的权限。

对应地,在 GRANT 语句中可用于指定权限级别的值有以下几类格式:

  • *:表示当前数据库中的所有表。
  • *.*:表示所有数据库中的所有表。
  • db_name.*:表示某个数据库中的所有表,db_name 指定数据库名。
  • db_name.tbl_name:表示某个数据库中的某个表或视图,db_name 指定数据库名,tbl_name 指定表名或视图名。
  • db_name.routine_name:表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名。
  • TO 子句:如果权限被授予给一个不存在的用户,MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户设置密码。

权限类型说明

下面讲解 GRANT 语句中的权限类型(可参考《MySQL user表详解》一节阅读)。

1)授予数据库权限时,<权限类型>可以指定为以下值:

权限名称 对应user表中的字段 说明
SELECT Select_priv 表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
INSERT Insert_priv 表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
DELETE Delete_priv 表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。
UPDATE Update_priv 表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
REFERENCES References_priv 表示授予用户可以创建指向特定的数据库中的表外键的权限。
CREATE Create_priv 表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
ALTER Alter_priv  表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
SHOW VIEW Show_view_priv 表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
CREATE ROUTINE Create_routine_priv 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
ALTER ROUTINE Alter_routine_priv 表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。
INDEX Index_priv 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
DROP Drop_priv 表示授予用户可以删除特定数据库中所有表和视图的权限。
CREATE TEMPORARY TABLES Create_tmp_table_priv 表示授予用户可以在特定数据库中创建临时表的权限。
CREATE VIEW Create_view_priv 表示授予用户可以在特定数据库中创建新的视图的权限。
EXECUTE ROUTINE Execute_priv 表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
LOCK TABLES Lock_tables_priv 表示授予用户可以定特定数据库的已有数据表的权限。
ALL 或 ALL PRIVILEGES 或 SUPER Super_priv 表示以上所有权限/超级权限

2) 授予表权限时,<权限类型>可以指定为以下值:

权限名称 对应user表中的字段 说明
SELECT Select_priv 授予用户可以使用 SELECT 语句进行访问特定表的权限
INSERT Insert_priv 授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限
DELETE Delete_priv 授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限
DROP Drop_priv 授予用户可以删除数据表的权限
UPDATE Update_priv 授予用户可以使用 UPDATE 语句更新特定数据表的权限
ALTER Alter_priv  授予用户可以使用 ALTER TABLE 语句修改数据表的权限
REFERENCES References_priv 授予用户可以创建一个外键来参照特定数据表的权限
CREATE Create_priv 授予用户可以使用特定的名字创建一个数据表的权限
INDEX Index_priv 授予用户可以在表上定义索引的权限
ALL 或 ALL PRIVILEGES 或 SUPER Super_priv 所有的权限名

3) 授予列权限时,<权限类型>的值只能指定为 SELECT、INSERT 和 UPDATE,同时权限的后面需要加上列名列表 column-list。

4) 最有效率的权限是用户权限。
授予用户权限时,<权限类型>除了可以指定为授予数据库权限时的所有值之外,还可以是下面这些值:

  • CREATE USER:表示授予用户可以创建和删除新用户的权限。
  • SHOW DATABASES:表示授予用户可以使用 SHOW DATABASES 语句查看所有已有的数据库的定义的权限。

例 1

使用 GRANT 语句创建一个新的用户 testUser,密码为 testPwd。用户 testUser 对所有的数据有查询、插入权限,并授予 GRANT 权限。SQL 语句和执行过程如下。


mysql> GRANT SELECT,INSERT ON *.*
    -> TO 'testUser'@'localhost'
    -> IDENTIFIED BY 'testPwd'
    -> WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.05 sec)

使用 SHOW GRANTS 语句查询用户 testUser 的权限,如下所示。


mysql> SHOW GRANTS FOR 'testUser'@'localhost';
+-------------------------------------------------------------------------+
| Grants for testUser@localhost                                           |
+-------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testUser'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------------+
1 row in set (0.00 sec)

结果显示,testUser 对所有数据库的所有表有查询、插入权限,并可以将这些权限赋予给别的用户。

拓展

数据库管理员给普通用户授权时一定要特别小心,如果授权不当,可能会给数据库带来致命的破坏。一旦发现给用户的权限太多,应该尽快使用 REVOKE 语句将权限收回。此处特别注意,最好不要授予普通用户 SUPER 权限,GRANT 权限。关于用户权限的删除,可阅读学习《MySQL REVOKE:删除用户权限》一节。

到此这篇关于MySQL GRANT用户授权的实现的文章就介绍到这了,更多相关MySQL GRANT用户授权 内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL GRANT用户授权的实现

本文链接: https://www.lsjlt.com/news/10413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库——MySQL GRANT:用户授权
    授权就是为某个用户赋予某些权限。例如,可以为新建的用户赋予查询所有数据库和表的权限。MySQL 提供了 GRANT 语句来为用户设置权限。 在 MySQL 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句,其语法格式如下: GR...
    99+
    2023-08-31
    数据库 mysql sql
  • oracle grant用户授权的方法是什么
    在Oracle数据库中,Grant命令用于向用户或角色授予权限。要向用户授予权限,可以使用如下语法: GRANT privilege...
    99+
    2024-04-09
    oracle
  • MySQL授权命令grant怎么使用
    这篇文章主要介绍“MySQL授权命令grant怎么使用”,在日常操作中,相信很多人在MySQL授权命令grant怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL授权命令grant怎么使用”的疑...
    99+
    2023-06-25
  • mysql中怎么实现用户授权
    mysql中怎么实现用户授权,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 mysql 用户授权   默认情况...
    99+
    2024-04-02
  • MySQL授权命令grant的使用方法小结
    MySQL授权命令grant的使用方法: 本文实例,运行于 MySQL 5.0 及以上版本。 MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 ...
    99+
    2024-04-02
  • MySQL中怎么实现用户与授权
    MySQL中怎么实现用户与授权,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、用户管理1、用户账号用户的账号由用户名和HOST俩部分组成('USERNAME'...
    99+
    2023-06-20
  • MySQL如何使用GRANT授权某用户浏览和修改表权限操作
    小编给大家分享一下MySQL如何使用GRANT授权某用户浏览和修改表权限操作,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 下面的例子是授权logger用户查...
    99+
    2024-04-02
  • 如何实现MySQL中授权用户的语句?
    如何实现MySQL中授权用户的语句?MySQL是一种广泛使用的关系型数据库管理系统,通过使用授权语句,可以控制用户对数据库的访问权限。在本文中,将介绍如何通过具体的代码示例来实现MySQL中授权用户的语句。在MySQL中,可以使用GRANT...
    99+
    2023-11-08
    MySQL授权 用户语句
  • MySQL授予用户权限
    使用该命令可以展示出mysql中存在的权限。 show privileges; 给用户授权的方式有 2 种,分别是通过把角色赋予用户给用户授权(mysql8.0的特性) 和 直接给用户授权。用户是数据库的使用者,我们可以通过给用户授予访问数...
    99+
    2023-08-16
    mysql 数据库 java
  • 如何实现MySQL中授权用户角色的语句?
    在MySQL数据库中,用户需要授予特定的权限来访问和操作数据库中的对象,例如表、视图、存储过程等等。对于大型数据库系统,管理和维护访问和权限变得非常困难,因此引入了用户角色概念。在本文中,我们将介绍如何在MySQL数据库中实现授权用户角色的...
    99+
    2023-11-09
    MySQL 授权 用户角色
  • mysql-创建用户和授权
    mysql权限管理我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作.如何创建用户和密码给当前的用户授权移除当前用户的权限如果你想创建一...
    99+
    2023-01-30
    用户 mysql
  • mysql用户创建与授权的简单实例
    目录前言一、用户创建用户案例编辑用户删除用户二、权限授权撤销权限三、其他命令总结前言 mysql默认安装的时候是有一个root用户,这个用户有最高权限,如果要开放数据库里面的数据给别...
    99+
    2024-04-02
  • mysql用户授权的方法是什么
    在MySQL中,可以使用以下语法为用户授权: 授予用户所有权限: GRANT ALL PRIVILEGES ON databas...
    99+
    2024-04-09
    mysql
  • mysql用户创建与授权的方法
    本篇内容主要讲解“mysql用户创建与授权的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql用户创建与授权的方法”吧!前言mysql默认安装的时候是有一个root用户,这个用户有最高...
    99+
    2023-06-29
  • Sqlserver创建用户并授权的实现步骤
    前提,存在一个数据库:JIAOGUAN(教务管理系统),其中有一个表:Student 接下来,我们所有的操作都是针对这个表进行试验 第一步,使用sa账户登录SqlServer,并创...
    99+
    2024-04-02
  • MySQL如何设置用户权限和授权
    在MySQL中,可以使用GRANT语句来设置用户权限和授权。以下是一些常见的示例: 授权用户访问数据库: GRANT ALL P...
    99+
    2024-04-09
    MySQL
  • MySQl如何创建用户和授权
    小编给大家分享一下MySQl如何创建用户和授权,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!权限的管理:如何创建用户和密码给当前...
    99+
    2024-04-02
  • mysql怎么添加用户并授权
    本篇内容介绍了“mysql怎么添加用户并授权”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!添加用户并授权简...
    99+
    2024-04-02
  • MySQL中怎么设置用户授权
    MySQL中怎么设置用户授权,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用SHOW GRANTS语句显示用户的授权你可以直接查看授权表...
    99+
    2024-04-02
  • mysql用户授权失败怎么办
    mysql用户授权失败的解决方法报错如下:ERROR 1133 (42000): Can't find any matching row in the user table原因:在用户表中找不到任何匹配的行,导致授权失败解决方法:首...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作