iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 的 GRANT和REVOKE 命令
  • 376
分享到

MySQL 的 GRANT和REVOKE 命令

MySQLGRANT和REVOKE命令 2015-04-03 22:04:24 376人浏览 无得
摘要

Mysql 的 GRANT和REVOKE 命令 GRANT - 授权 将指定 操作对象 的指定 操作权限 授予指定的 用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者; 查询 查看用户自己权

MySQL 的 GRANT和REVOKE 命令

Mysql 的 GRANT和REVOKE 命令



GRANT - 授权

将指定 操作对象 的指定 操作权限 授予指定的 用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者;

  1. 查询

    • 查看用户自己权限

      SHOW GRANTS;

    • 查看其他用户权限

      SHOW GRANTS FOR "user"@"host";

    Tips: host 可以使用通配符 %;如 "user"@"%", "user"@"192.168.0.%";

  2. 授权

    • 语法

      GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTioN];

    • 栗子

      • 授予 super用户所有权限

        GRANT ALL [PRIVILEGES] ON . TO "user"@"%";

      • 授予用户 INSERT 权限

        CREATE INSERT ON db_name.* TO "user"@"%" IDENTIFIED BY "newpasswd";

      • 授予用户 SELECT, UPDATE, DELETE 权限

        GRANT SELECT, UPDATE, DELETE ON db_name.* TO "user"@"localhost"

  3. 刷新

    FLUSH PRIVILEGES;

Tips:

  • WITH GRANT OPTION: 表示是否能传播其权限;(授权命令是由数据库管理员使用的)
    • 指定 WITH GRANT OPTION,则获得该权限的用户可以把这种权限授予其他用户;但不允许循环传授,即被授权者不能把权限在授回给授权者或祖先;
    • 未指定,则获得某种权限的用户只能自己使用该权限,不能传播该权限;
  • GRANT 关键字之后指定一个或多个特权。如果要授予用户多个权限,则每个权限都将以逗号分隔(见下表中的特权列表);
  • 指定确定特权应用级别的privilege_level;
    • mysql支持全局(*.*),数据库(database.*),表(database.table)和列级别;
    • 如果您使用列权限级别,则必须在每个权限之后使用逗号分隔列的列表;
  • 如果授予权限的用户已经存在,则GRANT语句修改其特权; 如不存在,则GRANT语句将创建一个新用户; 可选的条件 IDENTIFIED BY 允许为用户设置新密码;

REVOKE - 回收授权

  • 语法

    REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT];

  • 栗子

    • 回收全部权限

      REVOKE ALL [PRIVILEGES] ON . FROM "user"@"%";

    • 回收 INSERT 权限

      REVOKE INSERT ON db_name.* FROM "user"@"%";

Tips:

  • CASCADE | RESTRICT 当检测到关联的特权时,RESTRICT(默认值) 导致REVOKE失败;CASCADE 可以回收所有这些关联的特权;(如U1授权U2, U2授权U3,此时使用级联(CASCADE)收回了U2和U3的权限,否则系统将拒绝执行该命令)

GRANT允许的特权

  • 下表说明了可用于GRANT和REVOKE语句的所有可用权限:

    权限 含义 全局 数据库 过程 代理
    ALL [PRIVILEGES] 授予除了grant option之外的指定访问级别的所有权限
    ALTER 允许用户使用alter table语句 X X X
    ALTER ROUTINE 允许用户更改或删除存储程序, 可以使用{alter | drop} {procedure | unction} X X X
    CREATE 允许用户创建数据库和表 X X X
    CREATE ROUTINE 可以使用{create | alter | drop} {procedure | function} X
    CREATE TABLESPACE 允许用户创建,更改或删除表空间和日志文件组 X
    CREATE TEMPORARY TABLES 允许用户使用create temporary table创建临时表 X X
    CREATE USER 允许用户使用create user,drop user,rename user和revoke all privileges语句 X
    CREATE VIEW 允许用户创建或修改视图 X X X
    DELETE 允许用户使用delete X X X
    DROP 允许用户删除数据库,表和视图 X X X
    EVENT 能够使用事件计划的事件 X X
    EXECUTE 允许用户执行存储过程/存储函数 X X
    FILE 允许用户读取数据库目录中的任何文件 X
    GRANT OPTION 允许用户有权授予或撤销其他帐户的权限 X X X X X
    INDEX 允许用户创建或删除索引 X X X
    INSERT 允许用户使用insert语句 X X X X
    LOCK TABLES 允许用户在具有select权限的表上使用lock tables X X
    PROCESS 允许用户使用show processlist语句查看所有进程 X
    PROXY 启用用户代理
    REFERENCES 允许用户创建外键 X X X X
    RELOAD 允许用户使用flush操作 X
    REPLICATION CLIENT 允许用户查询主服务器或从服务器的位置 X
    REPLICATION SLAVE 允许用户使用复制从站从主机读取二进制日志事件 X
    SELECT 允许用户使用select语句 X X X X
    SHOW DATABASES 允许用户显示所有数据库 X
    SHOW VIEW 允许用户使用show create view语句 X X X
    SHUTDOWN 允许用户使用mysqladmin shutdown命令 X
    SUPER 允许用户使用其他管理操作,如change master to,kill,purge binary logs,set global和mysqladmin命令 X
    TRIGGER 允许用户使用trigger操作 X X X
    UPDATE 允许用户使用update语句 X X X X
    USAGE 连接(登陆)权限(默认授予且不能被回收)

实例

用户操作

  1. 创建用户

    CREATE USER "user"@"%" IDENTIFIED BY "newpasswd";

  2. 重命名用户

    CREATE USER "old_user"@"%" TO "new_user"@"%";

  3. 删除用户

    1. 查询用户

      SELECT user,host FROM mysql.user;

    2. 删除用户

      DROP USER "user"@"host";

查看和刷新权限

  • 查看权限

    SHOW GRANTS [FOR "user"@"host"];

  • 刷新权限

    FLUSH PRIVILEGES;

授权与取消授权

  1. 用法

    GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];   -- 授权
    REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT];   -- 取消授权
    

    Tips: REVOKE 跟 GRANT 的语法差不多,只需要把关键字 TO 换成 FROM 即可

  2. 栗子

    • 添加权限(和已有权限合并,不会覆盖已有权限)

      -- 添加普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
      grant select, insert, update, delete on testdb.* to common_user@"%"
      
      -- 添加数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
      grant create, alter, drop on testdb.* to developer@"192.168.0.%";
      
      -- 添加操作 MySQL 外键权限
      grant references on testdb.* to developer@"192.168.0.%";
      
      -- 添加操作 MySQL 临时表权限
      grant create temporary tables on testdb.* to developer@"192.168.0.%";
      
      -- 添加操作 MySQL 索引权限
      grant index on testdb.* to developer@"192.168.0.%";
      
      -- 添加操作 MySQL 视图、查看视图源代码 权限
      grant create, show view on testdb.* to developer@"192.168.0.%";
      
    • 删除授权

      -- 删除普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
      revoke select, insert, update, delete on testdb.* from common_user@"%"
      
      -- 删除数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
      revoke create, alter, drop on testdb.* from developer@"192.168.0.%";
      
      -- 删除操作 MySQL 外键权限
      revoke references on testdb.* from developer@"192.168.0.%";
      
      -- 删除操作 MySQL 临时表权限
      revoke create temporary tables on testdb.* from developer@"192.168.0.%";
      
      -- 删除操作 MySQL 索引权限
      revoke index on testdb.* from developer@"192.168.0.%";
      
      -- 删除操作 MySQL 视图、查看视图源代码 权限
      revoke create, show view on testdb.* from developer@"192.168.0.%";
      
    • DBA 权限管理

      -- 普通 DBA 管理某个 MySQL 数据库的权限
      grant all [privileges] on testdb to dba@"localhost"
      
      -- 高级 DBA 管理 MySQL 中所有数据库的权限。
      grant all on *.* to dba@"localhost"
      
    • 细密度授权

      -- 作用在整个 MySQL 服务器上
      grant select on *.* to dba@localhost;   -- dba 可以查询 MySQL 中所有数据库中的表
      grant all    on *.* to dba@localhost;   -- dba 可以管理 MySQL 中的所有数据库
      
      -- 作用在单个数据库上
      grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。
      
      -- 作用在单个数据表上
      grant select, insert, update, delete on testdb.t_orders to dba@localhost;
      
      -- 作用在表中的列上
      grant select(id, username, sex) on testdb.t_user to dba@localhost;
      
    • 权限传播与收回

      -- 授权 dba 查询权限,并且可以将这些权限 grant 给其他用户
      grant select on testdb.* to dba@localhost with grant option;
      
      -- 收回 dba 和其传播用户的权限
      revoke select on testdb.* from dba@localhost cascade;
      

    Tips: 权限发生改变后, 需要重新加载一下权限,将权限信息从内存中写入数据库;



Reference

原文地址:Https://www.cnblogs.com/librarookie/archive/2022/04/18/16160252.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 的 GRANT和REVOKE 命令

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL中grant和revoke怎么用
    这篇文章主要为大家展示了“MySQL中grant和revoke怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中grant和revoke怎么用”这...
    99+
    2024-04-02
  • MySQL数据库GRANT和REVOKE语句有哪些影响
    MySQL数据库GRANT和REVOKE语句有哪些影响,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  MySQL管理员应该知道怎样通过指定哪...
    99+
    2024-04-02
  • mysql中grant命令的作用是什么
    今天就跟大家聊聊有关mysql中grant命令的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。grant 权限 on 对象 to 用户一、...
    99+
    2024-04-02
  • MySQL授权命令grant怎么使用
    这篇文章主要介绍“MySQL授权命令grant怎么使用”,在日常操作中,相信很多人在MySQL授权命令grant怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL授权命令grant怎么使用”的疑...
    99+
    2023-06-25
  • MySQL授权命令grant的使用方法小结
    MySQL授权命令grant的使用方法: 本文实例,运行于 MySQL 5.0 及以上版本。 MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 ...
    99+
    2024-04-02
  • 数据库grant的授权命令有哪些
    本篇文章给大家分享的是有关数据库grant的授权命令有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。命令以及权限:usage  ...
    99+
    2024-04-02
  • 进入mysql命令行和退出mysql命令行详解
    目录进入mysql命令退出mysql命令mysql命令行常用语句进入mysql之前基础命令行语句关于mysql用户访问与权限进入mysql命令 mysql -u 用户名 -p回车 然后输密码 或 mysql -u用户名 ...
    99+
    2022-11-22
    进入mysql命令行 退出mysql命令行 mysql命令行
  • mysql备份和恢复的命令
    这篇文章主要讲解了“mysql备份和恢复的命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql备份和恢复的命令”吧! 在windows服务...
    99+
    2024-04-02
  • MYSQL基本命令和操作
    🖊作者 : D. Star. 📘专栏 : JAVA 😆今日提问 : 你好,我的朋友,在你的人生途中,会面临很多选择,不管选什么样的结果,我们都多少会有些后悔。如果是你,你会选择爱你的,还是...
    99+
    2023-08-24
    mysql 数据库
  • MySQL的基本概念和常用命令
    这篇文章主要讲解了“MySQL的基本概念和常用命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL的基本概念和常用命令”吧! 1 MySQL简介 ...
    99+
    2024-04-02
  • MySQL中的show命令
    mysql> help showName: 'SHOW'Description:SHOW has many forms that provide information about databases, t...
    99+
    2024-04-02
  • MySQL - 常用的命令
    当涉及到具体的数据库操作时,我会给出实际的示例,以更清楚地说明每个命令的用法。 创建数据库: CREATE DATABASE students; 列出数据库: SHOW DATABASES; 使用数据库: USE students; 创建表...
    99+
    2023-08-16
    mysql 数据库
  • MySQL ALTER命令
    当我们需要修改数据表名或者修改数据表字段时,就需要使用到 MySQL ALTER 命令。让我们先创建一张表,表名为: testalter_tbl 。 root@host#&nbs...
    99+
    2024-04-02
  • MySQL SHOW命令
    文章目录 SHOW命令介绍- SHOW命令用法 常用SHOW命令汇总常用命令汇总表- 服务器运行状态信息- 支持的字符集信息- 支持的校对规则信息- 上一个执行语句的告警信息- 上一个执行...
    99+
    2023-09-17
    mysql
  • mysql命令行中常用的命令有哪些
    这篇文章主要介绍mysql命令行中常用的命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql命令行常用命令第一招、mysql服务的启动和停止net stop mysql...
    99+
    2024-04-02
  • MySQL, mysql命令注释
    MySQL, mysql命令注释 /opt/mysql/bin/mysql -B, --batch Don't use history file. Disable interact...
    99+
    2024-04-02
  • Day896.MySql的kill命令 -MySQL实战
    MySql的kill命令 Hi,我是阿昌,今天学习记录的是关于MySql的kill命令的内容。 在 MySQL 中有两个 kill 命令: 一个是 kill query + 线程 id,表示终止这个线...
    99+
    2023-09-06
    mysql linux 数据库
  • linux命令和dos命令指的是什么
    这篇“linux命令和dos命令指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“l...
    99+
    2023-02-15
    linux dos
  • Linux中的内置命令和外部命令
    本篇内容主要讲解“Linux中的内置命令和外部命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的内置命令和外部命令”吧!Linux的命令分为内部命令和外部命令:内部命令在系统启动时...
    99+
    2023-06-13
  • Linux命令和命令行的示例分析
    这篇文章将为大家详细讲解有关Linux命令和命令行的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是命令我们通常所说的Linux命令行是运行在终端(terminal)的shell (阅读Lin...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作