MySQL8--通过角色管理权限

news2024/9/21 8:03:38

原文网址:MySQL8--通过角色管理权限_IT利刃出鞘的博客-CSDN博客

简介

        本文介绍MySQL8如何通过角色管理权限。

        角色是在MySQL8.0中引入的新功能。在MySQL中,角色是权限的集合,可以为角色添加或移除权限。用户可以被赋予角色,同时也被授予角色包含的权限。

        在实际应用中,为了安全性,需要给用户授予权限。当用户数量较多时,可以先将权限集合放入角色中,再赋予用户相应的角色。

查看角色

语法

跟查看用户的语法是一样的

SELECT host, user, plugin FROM mysql.user;

创建角色

语法

CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]

role_name 代表你要创建的此数据库的新用户账号
host_name 代表允许访问的主机。如果host_name省略,默认为%。如下

  • %代表通配所有host地址权限(可远程访问)
  • localhost为本地权限(不可远程访问)
  • 指定某个ip访问权限,如10.138.106.102

示例

创建名字为crudRole的角色,所有主机可访问。 

CREATE ROLE 'crudRole'@'%';

查看角色

查看角色权限

语法

SHOW GRANTS FOR 'role_name';

默认情况下,系统自动给赋予 ‘USAGE’ 权限,意思是连接登录数据库的权限。

示例

查看crudRole角色的权限

给角色赋予权限

创建角色后,默认这个角色是没有任何权限的,需要给角色授权。

语法

给角色授权的语法是:

GRANT '#auth' ON '#databaseName'.'#tableName' TO '#roleName'@'#host';

#auth 代表权限,例如

  • ALL 全部权限
  • SELECT 查询权限(单个)
  • SELECT,INSERT,UPDATE,DELETE 增删改查权限(多个权限)

#databaseName 代表数据库名

  • *代表全部库

#tableName 代表具体表,如下

  • *代表全部表
  • A,B 代表具体A,B表

#roleName 代表角色名

#host 代表允许访问的主机,如果host_name省略,默认为%。详情如下:

  • %代表通配所有host地址权限(可远程访问)
  • localhost为本地权限(不可远程访问)
  • 指定某个ip访问权限,如10.138.106.102

支持的权限有这些

示例

给crudRole角色赋予增删改查权限。

GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'crudRole'@'%';

执行完后要刷新一下权限。 

FLUSH PRIVILEGES;

查看权限

撤销角色的权限

        角色授权后,可以对角色的权限进行维护,对权限进行添加或撤销。添加权限使用GRANT语句(与角色授权相同)。撤销角色权限使用REVOKE语句。

语法如下:

REVOKE 权限1,权限2,....权限n ON TABLENAME FROM 'rolename';

给用户赋予角色

角色创建并授权后,要赋给用户并处于激活状态才能发挥作用。

语法

GRANT role [,role2,...] TO user [,user2,...];

注意:user必须是存在的用户,如果不存在先创建用户。

示例

创建用户user1

CREATE USER 'user1'@'%' IDENTIFIED BY '111111';

给user1赋予crudRole角色

GRANT crudRole TO user1;

查看user1的角色

SHOW GRANTS FOR 'user1'@'%';

激活角色

        创建了角色之后,默认都是没有被激活。只有授予的角色在会话中处于激活状态时,该用户才拥有此角色的权限。

查看激活状态

先登录user1账户(密码是111111)

查看当前角色:

SELECT CURRENT_ROLE();

可见,是没有角色。

激活角色

激活角色有两种方式:

法1:SET DEFAULT ROLE 命令

SET DEFAULT ROLE role_name TO 'user_name'@'host';

用户需重新登录。

示例

 然后user1重新登录, 然后查看角色:

法2:将ACTIVATE_ALL_ROLES_ON_LOGIN设置为 ON

SET GLOBAL activate_all_roles_on_login=ON;

上边这条语句的意思是对所有角色永久激活,运行这条语句之后用户才真正拥有了赋予角色的所有权限。

查看此变量的命令:

SHOW VARIABLES LIKE 'activate_all_roles_on_login';

撤销用户的角色

REVOKE role_name FROM user_name;

设置强制角色

        强制角色是给每个创建账户的默认角色,不需要手动设置。强制角色无法被REVOKE 或者 DROP 。

方式1:配置文件

[mysqld]
mandatory_roles='role1,role2....'

方式2:运行时设置

SET PERSIST mandatory_roles='role1,role2...';
SET GLOBAL mandatory_roles='role1,role2...';

删除角色

语法

DROP ROLE role [,role2]....

如果删除了角色,那么用户也就失去了通过这个角色所获得的所有权限。

其他网址

认真学习MySQL中的角色权限控制_流烟默的博客-CSDN博客_mysql角色权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洛普兰机械密封盛装亮相2023第11届济南生物发酵展

洛普兰机械密封与您相约2023第11届济南生物发酵展览会,3月30-4月1号山东国际会展中心,诚邀参会! 展位号:3号馆H32 2023生物发酵展将于3月30号山东国际会展中心(济南市槐荫区日照路1号)盛大召开&#xff0…

Spring(四):Bean作用域和生命周期

目录一、Bean作用域作用域1.1 Bean作用域简介1.2 作用域的定义1.3 Bean的6种作用域1.4 设置作用域二、Spring的执行流程和Bean的生命周期2.1 Spring的执行流程2.2 Bean的生命周期一、Bean作用域作用域 1.1 Bean作用域简介 现在有一个公共的Bean,A用户先使用到这个…

统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests

统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对…

Java与Python常见语法对比及区别

这里写目录标题一、前记1.1为什么写这篇文章?1.2 本文的结构二、整体区别2.1 差异总结十句话2.2整体对比三、细节区别3.1数据类型3.2其他数据结构3.3 String的处理方法3.4数组3.5条件语句3.6循环语句3.7类和接口定义与调用四 其他技巧知识字节的换算Tips&#xff1a…

flutter项目编译问题汇总

1、kotlin compiler embeddable下载慢的解决办法 备注:可以使用https://developer.aliyun.com/mvn/search这个链接搜索并下载 2、运行Flutter项目一直卡在--Running Gradle task assembleDebug 解决方法: 第一步:修改flutter安装目录/pac…

校招前端一面经典react面试题(附答案)

React.forwardRef是什么?它有什么作用? React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用: 转发 refs 到 DOM …

多层次目录结构的CMake工程管理

多层次目录结构的CMake工程管理一、多层次目录结构的文件结构二、如何利用CMake组织多层次目录结构三、构建工程一、多层次目录结构的文件结构 我们编写程序,不可能把所有源文件都一股脑地放在顶层目录下,必然会有一个目录结构,每个目录中只…

【django】项目开发准备之数据库配置

文章目录一、docker中启动mariadb服务二、django配置文件中进行配置1.安装mysqlclient2.找到settings.py文件3.启动django程序一、docker中启动mariadb服务 --restartalways:自动启动容器 --name mydb:容器名称 -d:后台运行容器 -v /home/ubuntu/ck14/ma…

php宝塔搭建部署实战服务类家政钟点工保姆网站源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的服务类家政钟点工保姆网站源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

单机模拟搭建 Zookeeper 集群

1. 准备 官网下载:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz 注意: zookeeper 从 3.5 版本以后,命名就发生了改变apache-zookeeper-X.X.X.tar.gz 这样命名的,都是未…

并发编程之JMMvolatile详解

目录 什么是JMM模型 定义 JMM不同于JVM内存区域模型 主内存 工作内存 Java内存模型与硬件内存架构的关系 JMM存在的必要性 数据同步八大原子操作 同步规则分析 并发编程的可见性,原子性与有序性问题 原子性 可见性 有序性 JMM如何解决原子性&…

【单片机】AT24C02存储器(I²C总线)/DS18B20温度传感器(单总线)

目录 一、AT24C02存储器 1、AT24C02存储器介绍 2、存储器简化模型 3、AT24C02存储器原理图 二、IC总线 1、IC总线的介绍 2、IC电路 3、IC时序图 3.1IC开始和结束时序图 3.2IC主机发送和接收时序图 3.3IC主机发送应答/接收应答 4、IC数据帧发送/接收方式 4.1主机向…

数据可视化系列-02各类图表的综合使用介绍及实践-上篇

文章目录3.各类图表的综合使用介绍及实践3.1了解数据功能图1、可视化中的数据2、基于数据的研究3、数据的可视化组件4、可视化图表的作用、制作流程和类型3.2北极星指标展示1、指标类知识回顾:指标类简介、指标类主要场景2、指标类图表:指标看板、指标趋…

C++关联容器(复习题篇)

本篇博客将介绍标准库关联容器,包括: 关联容器的概念和简单的使用关联容器涉及的类型和操作,特别是与顺序容器的差异无序关联容器,特别是与有序关联容器的差异 练习1.1 描述map和vector的不同 vector是顺序容器其中的元素是“顺序…

分布式事务的介绍

本地事务 单服务进程,单数据库资源,同一个连接conn多个事务操作 在JDBC编程中,我们通过java.sql.Connection对象来开启、关闭或者提交事务。代码如下所示: Connection conn ... //获取数据库连接 conn.setAutoCommit(false); //开启事务 t…

educoder数据结构与算法 栈 第2关:实现一个链接存储的栈

本文已收录于专栏 🌲《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》🌲 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务是实现 step2/LnkStack.cpp 中的LS_IsEmpty、LS_Length、LS_Push、LS_Pop和LS_Top五个操作函数…

π122E30兼容Si8622BC-B-IS 双通道数字隔离器

π122E30兼容Si8622BC-B-IS 双通道数字隔离器 ,具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立,可实现多种传输方向的配置,可实现 3.0kVrms 隔离耐压等级和 DC 到 200Mbp…

Day 17-Vue3 技术_其它

1.全局API的转移 Vue 2.x 有许多全局 API 和配置。例如&#xff1a;注册全局组件、注册全局指令等。 //注册全局组件 Vue.component(MyButton, {data: () > ({count: 0}),template: <button click"count">Clicked {{ count }} times.</button> })//注…

acwing-1015 摘花生

项目场景&#xff1a; 线性dp 题源 数字三角形 问题描述 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图)&#xff0c;从西北角进去&#xff0c;东南角出来。 地里每个道路的交叉点上都有种着一株花生苗&#xff0c;上面有若干颗花…

用Typora,PicGo和OSS实现自动上传图片

前言&#xff1a; 以前写博客要发布到好些个平台&#xff0c;我是将图片一张张上传到每个平台&#xff0c;后来发现是真的麻烦&#xff0c;上传图片花的时间太多&#xff0c;极大的降低了我写文章的积极性。 后来改进为使用oss&#xff0c;把博客的图片都上传到oss上面。然后…