当前位置: 首页 > 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.xdnf.cn/news/906985.html

相关文章:

  • C++.OpenGL (7/64)摄像机(Camera)
  • SpringBoot项目启动 错误: 找不到或无法加载主类 com.abc.demo.DemoApplication
  • 使用pwm控制一个舵机摆动的速度
  • 汉诺塔问题深度解析
  • PlayDiffusion上线:AI语音编辑进入“无痕时代”
  • const和constexpr详解
  • modelscope安装并下载模型文件
  • Google机器学习实践指南(机器学习模型泛化能力)
  • Docker + Nginx + Logrotate 日志管理与轮换实践
  • Spring Boot消息系统开发指南
  • 湖北理元理律师事务所:构建科学债务优化体系的四重维度
  • 6.6本日总结
  • 【办公类-104-01】20250606通义万相50分一天用完,通义万相2.1专业版测试
  • 二分算法
  • 基于ReAction范式的问答系统实现demo
  • 多模态大语言模型arxiv论文略读(111)
  • vue生成二维码图片+文字说明
  • 猜字符位置游戏-position gasses
  • 数列运算中的常见错因分析
  • 使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
  • Python训练营-Day23-Pipeline
  • Tika Server:企业级文档内容解析的轻量级服务化方案
  • js树形菜单功能总结
  • AT2659_GNSS低噪声放大器芯片
  • 字节推出统一多模态模型 BAGEL,GPT-4o 级的图像生成能力直接开源了!
  • MySQL的优化部分介绍
  • 语音合成之十九 为什么对数行列式的值可以作为Flow-based模型loss?
  • 【信息系统项目管理师-案例真题】2025上半年(第二批)案例分析答案和详解(回忆版)
  • 蓝牙攻防实战指南:发现隐藏设备
  • 【更新至2024年】2000-2024年上市公司财务困境MertonDD模型数据(含原始数据+结果)