MySQL 权限分配

2023-09-14 08:43:13

有时候,您需要查看某个用户被授予的权限以便复核。

MySQL 允许您使用 SHOW GRANTS 语句来显示分配给用户帐户或角色权限

MySQL SHOW GRANTS 语句介绍

以下是 SHOW GRANTS 语句的基本语法:

SHOW GRANTS
[FOR {user | role}
[USING role [, role] ...]]

在这个语法中:

  • 首先,在 FOR 关键字后指定要显示先前授予用户帐户或角色的权限的用户帐户或角色的名称。如果跳过 FOR 子句,则 SHOW GRANTS 返回当前用户的权限。
  • 其次,使用 USING 子句检查与用户角色相关的权限。您在 USING 子句中指定的角色必须事先授予用户。

除了可以显示当前用户的权限和角色,要执行 SHOW GRANTS 的语句,你需要有 mysql 系统数据库的 SELECT 权限。

MySQL SHOW GRANTS 实例

让我们举一些使用 MySQL SHOW GRANTS 语句的例子。

显示授予当前用户的权限

以下语句使用 SHOW GRANTS 语句显示授予当前用户的权限:

SHOW GRANTS;

它等效于以下语句:

SHOW GRANTS FOR CURRENT_USER;

SHOW GRANTS FOR CURRENT_USER();

CURRENT_USER 和 CURRENT_USER() 都返回当前用户

显示授予用户的权限

这个实例演示了创建用户、授予权限、查看权限的完整步骤。

  1. 创建一个名为 sqlizdb 的新数据库

    CREATE DATABASE sqlizdb;
    
  2. 选择数据库 sqlizdb :

    USE sqlizdb;
    
  3. 在数据库 sqlizdb 中新建一个表 test_table

    CREATE TABLE test_table(
        id int AUTO_INCREMENT PRIMARY KEY,
        txt varchar(100) NOT NULL
    );
    
  4. 创建一个新用户,名为 sqliz@'%' :

    CREATE user sqliz@'%' IDENTIFIED by 'SqLiZ9879123!';
    
  5. 显示授予用户 sqliz@'%' 的默认权限:

    SHOW GRANTS FOR sqliz@'%';
    
    +-----------------------------------+
    | Grants for sqliz@%                |
    +-----------------------------------+
    | GRANT USAGE ON *.* TO `sqliz`@`%` |
    +-----------------------------------+

    GRANT USAGE 是没有权限的代名词。默认情况下,当新用户创建时,它没有权限。

  6. 将 sqlizdb 数据库的所有权限授予用户 sqliz@'%' :

    GRANT ALL PRIVILEGES ON sqlizdb.* TO sqliz@'%';
    
  7. 最后,显示授予用户的权限 sqliz@'%' :

    SHOW GRANTS FOR sqliz@'%';
    
    +----------------------------------------------------+
    | Grants for sqliz@%                                 |
    +----------------------------------------------------+
    | GRANT USAGE ON *.* TO `sqliz`@`%`                  |
    | GRANT ALL PRIVILEGES ON `sqlizdb`.* TO `sqliz`@`%` |
    +----------------------------------------------------+

显示授予角色的权限

本实例演示了创建角色、授予角色权限、查看角色权限的完整步骤。

  1. 创建一个新角色,名为 write_role@'%' :

    CREATE ROLE write_role@'%';
    
  2. 显示授予角色的权限 write_role@'%' :

    SHOW GRANTS FOR write_role@'%';
    
    +----------------------------------------+
    | Grants for write_role@%                |
    +----------------------------------------+
    | GRANT USAGE ON *.* TO `write_role`@`%` |
    +----------------------------------------+
  3. 授予 write_role@'%' 在 sqlizdb 数据库上的 SELECT, INSERT, UPDATE,和 DELETE 权限:

    GRANT SELECT, INSERT, UPDATE, DELETE ON sqlizdb.* TO write_role@'%';
    
  4. 显示授予角色的权限 write_role@'%' :

    SHOW GRANTS FOR write_role@'%';
    
    +-------------------------------------------------------------------------+
    | Grants for write_role@%                                                 |
    +-------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO `write_role`@`%`                                  |
    | GRANT SELECT, INSERT, UPDATE, DELETE ON `sqlizdb`.* TO `write_role`@`%` |
    +-------------------------------------------------------------------------+

D) 显示用户与角色关联的权限

本实例演示了创建用户、分配角色、显示权限的详细步骤。

  1. 创建一个名为 sqliz2@'%'的新用户帐户:

    CREATE user sqliz2@'%' IDENTIFIED by 'SqLiZ9879123!';
    
  2. 授予 EXECUTE 权限给用户 sqliz2@'%'

    GRANT EXECUTE ON sqlizdb.* TO sqliz2@'%';
    
  3. 将角色 write_role@'%' 授予用户 sqliz2@'%'

    GRANT write_role@'%' TO sqliz2@'%';
    
  4. 显示授予用户的权限 sqliz2@'%' :

    SHOW GRANTS FOR sqliz2@'%';
    
    +----------------------------------------------+
    | Grants for sqliz2@%                          |
    +----------------------------------------------+
    | GRANT USAGE ON *.* TO `sqliz2`@`%`           |
    | GRANT EXECUTE ON `sqlizdb`.* TO `sqliz2`@`%` |
    | GRANT `write_role`@`%` TO `sqliz2`@`%`       |
    +----------------------------------------------+
  5. 最后,使用 SHOW GRANTS 语句中的 USING 子句来显示与 write_role@'%' 角色关联的权限:

    SHOW GRANTS FOR sqliz2@'%' USING write_role@'%';
    
    +------------------------------------------------------------------------------+
    | Grants for sqliz2@%                                                          |
    +------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO `sqliz2`@`%`                                           |
    | GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `sqlizdb`.* TO `sqliz2`@`%` |
    | GRANT `write_role`@`%` TO `sqliz2`@`%`                                       |
    +------------------------------------------------------------------------------+

结论

在 MySQL 中,您可以使用 SHOW GRANTS 语句显示授予用户或角色的权限。

更多推荐

【从入门到起飞】JavaSE—方法引用

🎊专栏【JavaSE】🍔喜欢的诗句:更喜岷山千里雪三军过后尽开颜。🎆音乐分享【Thetruththatyouleave】🥰欢迎并且感谢大家指出我的问题文章目录🍔概述🍔注意🎈如何确定是否是函数式接口🍔示例🎄方法引用的分类🏳️‍🌈引用静态方法🏳️‍🌈引用成员方法🛸注意🏳️‍🌈引用构造方法🛸

python脚本(渗透测试)

python爬取edusrc通过此脚本,可以爬取edusrc的目标信息,生成目标字典,为下一步开发自动化测试工具做准备importqueueimportthreadingimporttimeimportrequestsfrombs4importBeautifulSoupimportredefget_edu_name()

NLP任务评价指标(BLEU,METOR,ROUGH,CIDEr)

BLEU,METEOR,ROUGE一般在机器翻译里用,CIDEr一般在图像字幕生成里用BLEU所谓BLEU,最开始是用于机器翻译中。他的思想其实很native,对于一个给定的句子,有标准译文S1,还有一个神经网络翻译的句子S2。BLEU的思想就是对于出现机器翻译S2的所有短语,看有多少个短语出现在S1中,然后算一下这个

Flink

flink应用场景maven依赖<properties><flink.version>1.17.0</flink.version></properties><dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-str

react 通过ref 获取对应 dom 的位置信息

需求:在点击某个dom元素的时候滚动条要同步滚动进程:获取ref打印,打印出来是一个dom元素,看不到有什么方法查找dom属性信息找到了两个参数,offsetLeft:返回元素的水平偏移位置。offsetTop:返回元素的垂直偏移位置。这两个参数都是基于父节点的,可以直接使用this.cellMainBox.curre

OceanMind海睿思入选弯弓研究院《2023中国营销技术生态图谱8.0》

近日,由国内MarTech领域知名机构弯弓研究院主办的第五届营销数字化大会暨营销科技MarTech交易展在广州成功召开。本次大会发布了《2023中国营销技术生态图谱8.0版》(以下简称“弯弓图谱8.0”),中新赛克海睿思凭借成熟的技术实力成功入选弯弓图谱8.0的中台板块,成为数据与分析领域本土优秀代表服务商之一。随着企

Linux 共享内存

#include<sys/ipc.h>#include<sys/shm.h>intshmget(key_tkey,size_tsize,intshmflg);功能:创建一个新的内存段或者获得一个既有的共享内存段的标识。新创建的内存段中的数据都会被初始化为0参数:-key:key_t类型是一个整型,通过这个创建或者找到一

Linux查看程序和动态库依赖的动态库

一.前言在一些时候,我们需要知道一个程序或者动态库所依赖的动态库有哪些。比如,当我们运行一个程序的时候,发现可能会报错,提示找不到某个符号,这时我们就需要知道程序依赖了什么库,从而添加对应需要的动态库。等等,接下来介绍两种方法查看程序和动态库所依赖的动态库。二.方法介绍1.使用objdump命令objdump-pFIL

Toaster - Android 吐司框架,专治 Toast 各种疑难杂症

官网https://github.com/getActivity/Toaster这可能是性能优、使用简单,支持自定义,不需要通知栏权限的吐司想了解实现原理的可以点击此链接查看:Toaster源码集成步骤如果你的项目Gradle配置是在7.0以下,需要在build.gradle文件中加入allprojects{repos

(总目录)springboot - 实现zip文件上传并对zip文件解压, 包含上传oss

全文目录,一步到位1.本文概述1.1本文简介2.功能实现2.1统一文件校验2.2普通(多)文件上传[服务器]2.2.1controller层2.2.2service层2.2.3业务impl实现类2.2.4FileIOUtils工具包代码2.3zip文件的解压2.4图片文件的压缩2.5oss文件后端上传2.6oss文件前

九、【漏洞复现】Struts 2 远程代码执行漏洞s2-046(CVE-2017-5638)

九、【漏洞复现】Struts2远程代码执行漏洞s2-046(CVE-2017-5638)9.1、漏洞原理Struts2是一个基于MVC设计模式的Web应用框架,本质上相当于一个Servlet,在MVC设计模式中,Struts2作为控制器来建立模型与视图进行数据交互。攻击者通过发送恶意构造的HTTP数据包利用该漏洞(通过

热文推荐