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

MySQL用户和授权

开放MySQL白名单

可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务:

test: # iptables-save | grep 3306

-A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT

-A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp --dport 3306 -j ACCEPT

-A mp_srv_whitelist -s 172.16.4.17/32 -p tcp -m tcp --dport 3306 -j ACCEPT

-A mp_srv_whitelist -s 172.16.9.16/32 -p tcp -m tcp --dport 3306 -j ACCEPT

新增用户以及授权

创建只读用户,并授权特定的表:

-- 创建用户以及设置密码,其中%表示任意客户端

CREATE USER 'read_admin'@'%' IDENTIFIED BY 'Admin123!@#';

-- 授予特定表的SELECT权限

GRANT SELECT ON aa.t_terminal TO 'read_admin'@'%';

GRANT SELECT ON aa.t_assert TO 'read_admin'@'%';

GRANT SELECT ON bb.t_user TO 'read_admin'@'%';

GRANT SELECT ON bb.t_user_group TO 'read_admin'@'%';

-- 为了支持联表,建议始终授权临时表的权限

GRANT CREATE TEMPORARY TABLES ON *.* TO 'read_admin'@'%';

-- 刷新权限

FLUSH PRIVILEGES;

在过程中主要遇到两个问题:

1、在服务器上已经增加了用户和授权,但是客户仍被拒绝

        这是因为会话没有更新,最新的授权需要重新登录获取

2、所有表的授权已经增加,但是客户无法联表查询

        这一点之前是没有想到的,后续增加了临时表权限解决。也很好理解,联表查询的实现是MySQL内部生成临时表处理,所以需要授权该权限。

另外,可以通过以下命令查询某个用户的权限,以下是没有授权临时表和授权了临时表的权限查询结果对比:

  • 未授权临时表权限

mysql> SHOW GRANTS FOR 'read_admin'@'%';

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

| Grants for read_admin@%                                        |

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

| GRANT USAGE ON *.* TO 'read_admin'@'%'                         |

| GRANT SELECT ON `nm`.`t_assert` TO 'read_admin'@'%' |

| GRANT SELECT ON `aas`.`t_user_group` TO 'read_admin'@'%'     |

| GRANT SELECT ON `aas`.`t_user` TO 'read_admin'@'%'           |

| GRANT SELECT ON `nm`.`t_terminal` TO 'read_admin'@'%'     |

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

  • 已授权临时表权限

mysql> SHOW GRANTS FOR 'read_admin'@'%';

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

| Grants for read_admin@%                                        |

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

| GRANT CREATE TEMPORARY TABLES ON *.* TO 'read_admin'@'%'       |

| GRANT SELECT ON `nm`.`t_assert` TO 'read_admin'@'%' |

| GRANT SELECT ON `aas`.`t_user_group` TO 'read_admin'@'%'     |

| GRANT SELECT ON `aas`.`t_user` TO 'read_admin'@'%'           |

| GRANT SELECT ON `nm`.`t_terminal` TO 'read_admin'@'%'     |

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

测试联表查询:

SELECT * FROM aa.t_terminal t LEFT JOIN bb.t_user a ON t.account = a.account limit 1;

注意事项总结:

  1. 如果是HA环境,需要主备数据库上都执行,因为这类非业务数据是不会自动同步的!!!
  2. 在创建用户和授权时,需要使用root账户
  3. 客户端和服务端初次连接时,会将该用户的权限信息保存在会话中,如果后续权限发生变化不会更新当前会话中的权限,所以做以上操作后,相关客户端最好是重新登录以获取最新的权限。
  4. 建议始终授权临时表的权限,防止客户需要联表查询时候再次处理

http://www.lqws.cn/news/183583.html

相关文章:

  • Excel 模拟分析之单变量求解简单应用
  • <2>-MySQL库的操作
  • daz3d + PBRSkin (MDL)+ SSS
  • 全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
  • 边缘计算网关提升水产养殖尾水处理的远程运维效率
  • Nestjs框架: nestjs-schedule模块注册流程,源码解析与定时备份数据库
  • 智能终端与边缘计算按章复习
  • 多模态+空间智能:考拉悠然以AI+智慧灯杆,点亮城市治理新方式
  • Git 操作
  • 学习 React【Plan - June - Week 1】
  • 智能化弱电工程项目管理培训
  • 掌握子网划分:优化IP分配与管理
  • 使用React+ant Table 实现 表格无限循环滚动播放
  • 智能对联网页小程序的仓颉之旅
  • JAVA理论-JAVA基础知识
  • 中国制造名牌剃须刀:优质之选,情礼佳物
  • 中小制造企业的数字化转型,如何控制工业软件应用成本?
  • 中国移动6周年!
  • 手写muduo网络库(零):多线程中使用 weakptr 跨线程监听生命状态
  • 智绅科技 —— 智慧养老 + 数字健康,构筑银发时代安全防护网
  • 微算法科技(NASDAQ:MLGO)基于信任的集成共识和灰狼优化(GWO)算法,搭建高信任水平的区块链网络
  • K8S认证|CKS题库+答案| 3. 默认网络策略
  • 郑州工程技术学院赴埃文科技开展访企拓岗促就业活动
  • 第三方测试机构进行科技成果鉴定测试有什么价值
  • JeecgBoot低代码管理平台
  • 沙市区举办资本市场赋能培训会 点赋科技分享智能消费新实践
  • 超大规模芯片验证:基于AMD VP1902的S8-100原型验证系统实测性能翻倍
  • 因泰立科技H1X激光雷达:因泰立科技为智慧工业注入新动力
  • Unreal从入门到精通之 UE4 vs UE5 VR性能优化实战
  • 开源 vGPU 方案:HAMi,实现细粒度 GPU 切分