MySQL8的新特性ROLE

news/2025/3/14 18:17:29

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://blog.csdn.net/weixin_34220963/article/details/86022316
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-3785910.html

相关文章

Inside ASP.NET 2.0-即时编译系统

Inside ASP.NET 2.0-即时编译系统文/ 黄忠成(原文刊登于Run! PC) 从ASP.NET 1.1 到2.0, 编译系统的进化 在笔者撰写『深入剖析ASP.NET 元件设计』一书时,曾相当深入的探讨ASP.NET 1.1 的即时编译模型, 该章节以图1 为开端, 一步步…

阿里巴巴在创新榜上把硅谷巨头按在地上“摩擦”,他到底强在哪?

无创意,不创新,毋宁死。已经成为企业生存的不二法门。 创新对于企业而言,是关乎企业生死存亡的生命线。不创新,不紧握时代脉搏,再高大的巨人,也会迅速倒下。也真是因此,全球四大四大会计师事务所…

像Component的Control

像Component的Control當我第一次接觸到ToolStrip控件時,我很好奇,為何此控件的行為就像是Component一樣,意思是當你將其拖到Form上後,除了在Form上看到她外,你還可以在Component Tray上找到她,如下圖&#…

共同肩负脱贫致富的重担, 袁隆平与阿里巴巴究竟能碰撞出怎样的火花呢?

“世界杂交水稻之父”袁隆平虽已88岁高龄,但他和他的团队从未停歇过,前脚宣布在沙漠成功种植水稻,最高亩产超过500公斤,后脚就领衔青岛“海水稻”研发团队加入农村淘宝发起的亩产一千美金计划,双方将在电商脱贫领域展开…

修復VS.NET 2005

最近常聽到VS.NET 2005的奇怪問題,例如DataSource Wizard在選取Database做為來源時就當住,或是無來由的,Properties窗再也打不開等等,即使重新安裝Visual Studio 2005也無法解決.在多方嘗試後,我發現這些問題的來源是因為Visual Studio 2005會儲存用戶的個人設定,而有時這些設定…

spring data jpa 分页查询

https://www.cnblogs.com/hdwang/p/7843405.html spring data jpa 分页查询 法一&#xff08;本地sql查询,注意表名啥的都用数据库中的名称&#xff0c;适用于特定数据库的查询&#xff09; public interface UserRepository extends JpaRepository<User, Long> {Query(v…

上海一个宣布,外国商家直呼:亚马逊在中国新零售面前啥也不是!

刚刚&#xff0c;上海市商务委宣布正式启动打造全球新品首发地。 在上海市领导的见证下&#xff0c;天猫与登上上海2018全球新品首发地人气榜单的Kerr&Kroes等品牌签署了战略合作协议。 这些品牌中还包括星巴克甄选咖啡烘培工坊、静安大悦城、维多利亚的秘密大秀、上海时装…

LINQ

PDC 05 上揭露了C# 3.0 及Linq Project,什麼是Linq 呢? 簡單的說,Linq 是一個語言層級的查詢語法Library,她可以讓我們以類SQL 語法的方式來查詢語言中的變數,例如陣列,Collections. 以實例來說:static void ObjectQuery(){ var people new List(){ new Person { Age12, Name…

阿里马来西亚办公室开业,马财政部长加持:“阿里巴巴家喻户晓”

6月18日端午节&#xff0c;阿里巴巴马来西亚办公室正式开业&#xff0c;马云现身吉隆坡&#xff0c;一起剪彩的人中&#xff0c;出现了马来西亚财政部长林冠英的身影。图说&#xff1a;阿里巴巴集团马来西亚办公室开业现场 林冠英是个华裔财政部长&#xff0c;既受华裔欢迎&…

HTTP——https、http缓存、get与post、web安全、跨域

HTTP诞生 1989年为知识共享而诞生的Web&#xff0c;提出了3项WWW构建技术&#xff1a; 标准通用标记语言设为HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;文档传输协议HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输…