当前位置: 首页 > news >正文

MySQL 实战笔记 第01期:MySQL 角色管理

作者简介

无为,多年 MySQL DBA 工作经验,现就职于某知名互联网公司,对 MySQL、 Redis、PostgrepSQL 等主流数据库有一定了解,拥有丰富的一线运维经验。

角色 ( Role ) 可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。那 MySQL 数据库是否也有这样的功能呢 ?

答案是肯定的。MySQL 5.7.X 可以通过 mysql.proxies_priv 来模拟角色 (Role) 的功能。下面让我们来实验一下(测试的版本 MySQL 5.7.28):

1 配置 proxy

mysql> show variables like "%proxy%"; #查看当前proxy是否开启,OFF 表示没有开启
+-----------------------------------+-------+
| Variable_name                     | Value |
+-----------------------------------+-------+
| check_proxy_users                 | OFF   |
| mysql_native_password_proxy_users | OFF   |
| proxy_user                        |       |
| sha256_password_proxy_users       | OFF   |
+-----------------------------------+-------+
4 rows in set (0.02 sec)


mysql> set global check_proxy_users =on;
Query OK, 0 rows affected (0.00 sec)


mysql> set global mysql_native_password_proxy_users = on;
Query OK, 0 rows affected (0.01 sec)


mysql> exit

以上设置参数,对当前会话无效,需要退出后重新登录,或直接设置到 my.cnf 中去;

2 创建角色和用户

mysql>  create user role_dba;
Query OK, 0 rows affected (1.03 sec)


mysql> create user 'jack';
Query OK, 0 rows affected (0.01 sec)


mysql> create user 'mary';
Query OK, 0 rows affected (0.01 sec)

用户为设置密码,如需密码可以使用 identified by '####' 设置;


3 权限映射

将 role_dba 的权限映射( map )到 jack 、mary

mysql> grant proxy on role_dba to jack;
Query OK, 0 rows affected (0.02 sec)


mysql> grant proxy on role_dba to mary;
Query OK, 0 rows affected (0.01 sec)


4 给用户赋权

给 role_dba 赋权(模拟 role 赋权)

mysql> grant select on *.* to role_dba;
Query OK, 0 rows affected (0.01 sec)


mysql> show grants for role_dba;
+---------------------------------------+
| Grants for role_dba@%                 |
+---------------------------------------+
| GRANT SELECT ON *.* TO 'role_dba'@'%' |
+---------------------------------------+
1 row in set (0.00 sec)


mysql> show grants for jack;
+---------------------------------------------+
| Grants for jack@%                           |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'jack'@'%'            |
| GRANT PROXY ON 'role_dba'@'%' TO 'jack'@'%' |
+---------------------------------------------+
2 rows in set (0.00 sec)


mysql> show grants for mary;
+---------------------------------------------+
| Grants for mary@%                           |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'mary'@'%'            |
| GRANT PROXY ON 'role_dba'@'%' TO 'mary'@'%' |
+---------------------------------------------+
2 rows in set (0.00 sec)


5 查看 mysql.proxies_priv

mysql> select * from mysql.proxies_priv;
+-----------+------+--------------+--------------+------------+----------------------+---------------------+
| Host      | User | Proxied_host | Proxied_user | With_grant | Grantor              | Timestamp           |
+-----------+------+--------------+--------------+------------+----------------------+---------------------+
| localhost | root |              |              |          1 | boot@connecting host | 0000-00-00 00:00:00 |
| %         | will | %            | will_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 |
| %         | tom  | %            | will_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 |
| %         | jack | %            | role_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 |
| %         | mary | %            | role_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 |
+-----------+------+--------------+--------------+------------+----------------------+---------------------+
5 rows in set (0.01 sec)


6 验证

$ mysql -h 127.0.0.1 -u jack 


Welcome to the MySQL monitor. Commands end with ; or \g.


Your MySQL connection id is 249


Server version: 5.7.28-log MySQL Community Server (GPL)


Copyright (c) 2000, 2019, 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> select * from test.ssd limit 1;


+---+------+------+


| a | b  | c  |


+---+------+------+


| 1 | NULL | NULL |


+---+------+------+


1 row in set (0.01 sec)

mysql.proxies_priv 仅仅是对 Role 的模拟,和 Oracle 的角色还是有所不同的;官方称呼为 Role like。

MySQL 8.0 正式增加了 role 功能,有兴趣的同学可以自行了解。

MySQL 5.6.X 模拟 Role 功能需要安装插件,具体方法可参考:

https://dev.mysql.com/doc/refman/5.6/en/proxy-users.html

https://dev.mysql.com/doc/refman/5.6/en/pluggable-authentication.html

另外,悦专栏欢迎各位大牛投稿,内容可以是数据库、开发、算法、大数据、运维、产品、运营等。只要在公众号回复“投稿”即可。

LIKECOLUMN

悦专栏

在这里,学好编程

做更优秀的 IT人!

各大平台都可以找到我

  • 微信公众号:杨建荣的学习笔记

  • Github:@jeanron100

  • CSDN:@jeanron100

  • 知乎:@jeanron100

  • 头条号:@杨建荣的学习笔记

  • 网易号:@杨建荣的数据库笔记

  • 大鱼号:@杨建荣的数据库笔记

  • 百家号:@杨建荣的数据库笔记

  • 腾讯云+社区:@杨建荣的学习笔记

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

相关文章:

  • MySQL 实战笔记 第02期:MySQL 元数据锁
  • 经常用Redis,这些坑你知道吗?
  • Redis为什么这么快?
  • 迁移至MySQL的数据流转流程优化
  • 长文:读《经济学32定律》
  • 使用Rancher搭建K8S测试环境
  • 深度学习在视觉搜索和匹配中的应用
  • MySQL 5.7和MySQL 8.0的4个细节差异
  • 开启读书模式-2021
  • 我收集了如下的一些语录
  • 《大江大河2》最触动我的一段经典对话
  • 从生命周期的角度来规划数据库运维体系
  • 图片之外的细节和故事
  • 揭开服务降级的面纱!!!
  • 规避单点故障,MySQL 8.0 MGR软负载怎么选?
  • Google 是如何开发 Web 框架的
  • JAVA 学习IO流
  • JS题目及答案整理
  • Objective-C 中关联引用的概念
  • quasar-framework cnodejs社区
  • 闭包--闭包作用之保存(一)
  • 从重复到重用
  • 对超线程几个不同角度的解释
  • 前端面试之闭包
  • 前端相关框架总和
  • 通过npm或yarn自动生成vue组件
  • 我看到的前端
  • 无服务器化是企业 IT 架构的未来吗?
  • 项目实战-Api的解决方案
  • 一天一个设计模式之JS实现——适配器模式
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​你们这样子,耽误我的工作进度怎么办?
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1) caustics\
  • (libusb) usb口自动刷新
  • (第一天)包装对象、作用域、创建对象
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)setTimeout 和 setInterval 的区别
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET 8.0 中有哪些新的变化?
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net core 6.0 升8.0
  • .net core Swagger 过滤部分Api
  • .Net IE10 _doPostBack 未定义
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)