MySQL8的新特性ROLE
【MySQL的ROLE解决了什么问题】
假设你是一个职业素养良好的DBA比较同时又比较注重权限管理的话;可能遇到过这样的问题,数据库中有多个开发人员的账号;有一天要建
一个新的schema,如果你希望之前所有的账号都能操作这个schema下的表的话,在mysql-8.0之前你要对第一个账号都单独的赋一次权。
mysql-8.0.x所权限抽象了出来用ROLE来表示,当你为ROLE增加新的权限的时候,与这个ROLE关联的所有用户的权限也就一并变化了;针对
上面提到的场景在mysql-8.0.x下只要一条SQL就解决了。
【机智的MySQL开发】
MySQL引进ROLE用了一个非常机智的做法,既然ROLE是一堆权限的象征,这东西在MySQL里面本来就有呀!它就是USER呀。
1): 创建角色
create role devgroup;
查看mysql.user表真会被MySQL的机智给吓到
select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | devgroup | % | | backup | 127.0.0.1 | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
说好的role事实上只是一个user呀!
2): 给角色赋权
grant all on tempdb.* to devgroup; Query OK, 0 rows affected (0.07 sec)
和操作用户比起来是一样一样的!
3):创建用户并把角色的权限赋给它
create user tom@'127.0.0.1' identified by '123456'; Query OK, 0 rows affected (0.09 sec)grant devgroup to tom@'127.0.0.1'; Query OK, 0 rows affected (0.09 sec)
4):测试刚创建的用户是否可以登录
mysql -h127.0.0.1 -P3306 -utom -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 16 Server version: 8.0.13 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show grants; +-------------------------------------------+ | Grants for tom@127.0.0.1 | +-------------------------------------------+ | GRANT USAGE ON *.* TO `tom`@`127.0.0.1` | | GRANT `devgroup`@`%` TO `tom`@`127.0.0.1` | +-------------------------------------------+ 2 rows in set (0.00 sec)
【角色和用户只是一个硬币的两面】
如果你还是觉得“角色”和“用户”是两个不一样的东西、那我只能是出大招了
1): root@127.0.0.1 用户当成角色赋给刚才的tom用户
grant root@'127.0.0.1' to tom@'127.0.0.1'; Query OK, 0 rows affected (0.04 sec)
2):用户tom用户检察一下自己的权限
show grants; +--------------------------------------------------------------+ | Grants for tom@127.0.0.1 | +--------------------------------------------------------------+ | GRANT USAGE ON *.* TO `tom`@`127.0.0.1` | | GRANT `devgroup`@`%`,`root`@`127.0.0.1` TO `tom`@`127.0.0.1` | +--------------------------------------------------------------+ 2 rows in set (0.00 sec)
可以看到root@127.0.0.1的权限已经被套上去了、既然都是root用户的权限了我们来删除一个tempdb库看一下吧!
3): 删库
drop database tempdb; ERROR 1044 (42000): Access denied for user 'tom'@'127.0.0.1' to database 'tempdb'
看起来没有权限删除这个库呀!事实上是MySQL-8默认并不会激活role,关于是否激活role是由activate_all_roles_on_login这个参数控制的
4): 开启activate_all_roles_on_login
set @@global.activate_all_roles_on_login=1; Query OK, 0 rows affected (0.00 sec)
5): 重新登录一次tom再试着删除一下tempdb库
mysql -h127.0.0.1 -P3306 -utom -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 18 Server version: 8.0.13 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use tempdb; Database changed mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | tempdb | +--------------------+ 5 rows in set (0.01 sec)mysql> drop database tempdb; Query OK, 0 rows affected (0.09 sec)
----
转载于:https://www.cnblogs.com/JiangLe/p/9851958.html
MySQL8的新特性ROLE相关推荐
- Mysql基础篇(10)—— MySQL8.0新特性概览
新增的新特性 更简便的NoSQL支持. 更好的索引,新增了隐藏索引和降序索引.隐藏索引可以用来去掉索引对查询性能的影响.在查询中混合存在多列索引时,使用降序索引可以提高查询的性能. 更完善的JSON支 ...
- MySQL基础篇13【MySQL8.0新特性】
目录 1. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1.2 MySQL8.0移除的旧特性 新特性1:窗口函数 2.1 使用窗口函数前后对比 2.2 窗口函数分类 2.3 语法结构 ...
- MySQL深入学习(十八):MySQL8其它新特性
本文参考:康师傅-MySQL数据库教程天花板,mysql安装到mysql高级,强!硬! 文章目录 一. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1.2 MySQL8.0移除的旧特性 ...
- MySQL8.0 - 新特性 - 安全及权限相关改进
MySQL8.0里引入了不少关于权限的改动,从这些改动可以看出来,权限管理更加的规范和遍历了,这和我们之前为rds mysql增加了大量权限管理很类似,想来Oracle也是通过这些改动为其云业务服务的 ...
- Mysql8.0新特性之详细版本
1. 账户与安全 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc #EDC'; ...
- mysql8.0 新特性
1. 账户与安全# 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc#EDC' ...
- MySQL8.0 - 新特性 - 临时表改进
temptable engine 我们知道UNION, DERIVED TABLE, CTE, 子查询或者distinct order by之类的查询都可能用到临时表来存储中间结果,官方文档中列举了几 ...
- MySQL8.0 - 新特性 - Instant Add Column
MySQL8.0开始对一些DDL操作做了大量的优化,例如原子DDL, 快速DDL(只修改元数据),前者解决了长期以来mysql的一大诟病,后者则提升了dba同学的生活品质 官方文档列出了一些可以快速d ...
- 深入解读MySQL8.0 新特性 :Crash Safe DDL
前言 在MySQL8.0之前的版本中,由于架构的原因,mysql在server层使用统一的frm文件来存储表元数据信息,这个信息能够被不同的存储引擎识别.而实际上innodb本身也存储有元数据信息.这 ...
- 深入解读MySQL8.0 新特性 :Crash Safe DDL 1
前言 在MySQL8.0之前的版本中,由于架构的原因,mysql在server层使用统一的frm文件来存储表元数据信息,这个信息能够被不同的存储引擎识别.而实际上innodb本身也存储有元数据信息.这 ...
最新文章
- 根据表达式的值,选择field中的值
- Arithmetic Sequence 三分,货仓选址,nth_element,__int128(济南)
- qhfl-5 redis 简单操作
- python多行注释符号_涨知识Python 为什么用 # 号作注释符?
- EntityFramework包含作用
- 青龙面板实现 G D O S 每日自动签到
- PHP Sessions
- centos usb转网口_Linux环境下使用 USB转串口驱动(一)
- python预测控制_【模型工具】耦合python和 SWMM的城市排水系统模型预测算法
- 启动jar包报错: 找不到或无法加载主类
- 再多的非标电气设计也不怕了
- 开课吧python基础语法-零基础玩转Python
- 升级Android Q之路遇到的坑-abc_screen_simple
- 【CCF 201903-2】 二十四点(符号栈)
- 【JavaWeb】之MVC三层架构
- 2018年推荐书单(140本)
- 使用Canal同步数据到ES
- 微信发送过来的位置怎样用高德地图收藏这个点加入收藏夹
- 中国电信4g最快服务器IP,中国电信DNS IP地址大全(32个省)
- postgresql 随笔
热门文章
- 一步步学习SPD2010--第十二章节--理解可用性和可接入性(5)--测试可用性
- Hibernate配置JNDI数据源
- 关于c#中的string
- JQuery获得绝对,相对位置的坐标方法
- R^2 score is not well-defined with less than two samples
- nginx配置php虚拟主机
- 使用XUtils进行文件的断点下载
- java 容器类 面试_校招面试之Java容器
- Mac配置adb笔记,彻底解决zsh: command not found: adb问题
- Gson源码解析之InstanceCreator简单说明