mysql的三大组件(详解MySQL8的新特性ROLE)
mysql的三大组件
详解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 - GPL Copyright (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 - GPL Copyright (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) |
以上就是详解MySQL8的新特性ROLE的详细内容,更多关于MySQL8 新特性ROLE的资料请关注开心学习网其它相关文章!
原文链接:https://www.cnblogs.com/JiangLe/p/9851958.html
- mysql8.0使用(MySQL 8.0新特性 — 检查性约束的使用简介)
- deepin数据库编程(deepin20.1系统安装MySQL8.0.23超详细的MySQL8安装教程)
- linux安装nacos教程(Nacos配置MySQL8的方法)
- mysql8.0.25安装及配置超详细教程(MySQL8.0.21安装步骤及出现问题解决方案)
- mysql8.0.16安装步骤图解(mysql 8.0.22 安装配置图文教程)
- mysql8修改默认端口(MySQL 8.0新特性 — 管理端口的使用简介)
- mysql连接navicat报错1045(Navicat 连接MySQL8.0.11出现2059错误)
- mysql在centos7中如何安装(阿里云centos7安装mysql8.0.22的详细教程)
- mysql8使用技巧(一篇学会MySQL 8.0 ROLE管理)
- mysql最佳配置(详解DBeaver连接MySQL8以上版本以及解决可能遇到的问题)
- mysql8.0详解(MySQL 8.0 的 5 个新特性,太实用了!)
- mysql重启启动失败(MySQL8.0无法启动3534的解决方法)
- mysql8.0.15安装详细教程(Mysql8.0.22解压版安装教程小白专用)
- idea安装mybatis(IDEA使用mybatis-generator及配上mysql8.0.3版本遇到的bug)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- 怎么知道sqlyog连接的哪个mysql(SQLyog连接MySQL8.0报2058错误的完美解决方法)
- 各地出招烘 热 旅游(各地出招烘热旅游)
- 2021款起亚霸锐到店了 更换车标,竞争宝马X5有戏吗(2021款起亚霸锐到店了)
- 新款起亚霸锐实拍,比普拉多气派,配3.0T V6,引入国内或许能大卖(新款起亚霸锐实拍)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
热门推荐
- python绘折线图数据(python2.7使用plotly绘制本地散点图和折线图)
- 云服务硬盘挂载有几种方法(腾讯云 阿里云 挂载硬盘方法数据盘)
- sqlserver基础查询语句(SQL Server子查询的深入理解)
- react高阶组件怎么用(React 高阶组件HOC用法归纳)
- 阿里云ecs服务器升级规则是(如何处理阿里云ECS windows服务器ping外网提示一般故障)
- mysql存储过程limit参数(MySQL存储过程in、out和inout参数示例和总结)
- dedecms有哪些功能(dedecms 二次开发之审核时间同步更新)
- mysql字符集怎么看(mysql字符集相关总结)
- sql注入原理详细(Sql注入原理简介_动力节点Java学院整理)
- python 爬虫招聘(Python3获取拉勾网招聘信息的方法实例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9