news 2026/5/11 12:17:07

【MyCat】第7章---- Mycat 安全设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MyCat】第7章---- Mycat 安全设置

文章目录

  • 7.1 权限配置
    • 1、 user 标签权限控制
  • 7.2 SQL 拦截
    • 1、 白名单
    • 2、 黑名单

7.1 权限配置

1、 user 标签权限控制

目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。

#server.xml配置文件user部分<user name="mycat"><property name="password">123456</property><property name="schemas">TESTDB</property></user><user name="user"><property name="password">user</property><property name="schemas">TESTDB</property><property name="readOnly">true</property></user>

配置说明

测试案例
#测试案例一
#使用user用户,权限为只读(readOnly:true)
#验证是否可以查询出数据,验证是否可以写入数据
#1、用user用户登录,运行命令如下:
mysql -uuser -puser -h 192.168.140.128 -P8066
#2、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
#3、可以查询到数据,如下图

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
#5、可看到运行结果,插入失败,只有只读权限,如下图:

#测试案例二 # 使用mycat用户,权限为可读写(readOnly:false) # 验证是否可以查询出数据,验证是否可以写入数据 #1、用mycat用户登录,运行命令如下: mysql-umycat-p123456-h192.168.140.128-P8066 #2、切换到TESTDB数据库,查询orders表数据,如下: use TESTDB select*from orders;#3、可以查询到数据,如下图

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
#5、可看到运行结果,插入成功,如下图:

2、 privileges 标签权限控制
在 user 标签下的 privileges 标签可以对逻辑库(schema)、表(table)进行精细化的 DML 权限控
制。
privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默认为 false。
由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema) ,所以 privileges 的下级
节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。

#server.xml配置文件privileges部分 #配置orders表没有增删改查权限<user name="mycat"><property name="password">123456</property><property name="schemas">TESTDB</property><!--表级 DML 权限设置--><privileges check="true"><schema name="TESTDB"dml="1111"><table name="orders"dml="0000"></table><!--<table name="tb02"dml="1111"></table>--></schema></privileges></user>

配置说明

测试案例

#测试案例一 # 使用mycat用户,privileges配置orders表权限为禁止增删改查(dml="0000") # 验证是否可以查询出数据,验证是否可以写入数据 #1、重启mycat,用mycat用户登录,运行命令如下: mysql-umycat-p123456-h192.168.140.128-P8066 #2、切换到TESTDB数据库,查询orders表数据,如下: use TESTDB select*from orders;#3、禁止该用户查询数据,如下图

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
#5、可看到运行结果,禁止该用户插入数据,如下图:

#测试案例二
#使用mycat用户,privileges配置orders表权限为可以增删改查(dml=“1111”)
#验证是否可以查询出数据,验证是否可以写入数据
#1、重启mycat,用mycat用户登录,运行命令如下:

mysql-umycat-p123456-h192.168.140.128-P8066

#2、切换到TESTDB数据库,查询orders表数据,如下:

use TESTDB select*from orders;

#3、可以查询到数据,如下图

#4、执行插入数据sql,如下:

insert intoorders(id,order_type,customer_id,amount)values(8,101,101,10000);

#5、可看到运行结果,插入成功,如下图:

#4、执行插入数据sql,如下:
delete from orders where id in (7,8);
#5、可看到运行结果,插入成功,如下图:

7.2 SQL 拦截

firewall 标签用来定义防火墙;firewall 下 whitehost 标签用来定义 IP 白名单 ,blacklist 用来定义
SQL 黑名单。

1、 白名单

可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问

#设置白名单 #server.xml配置文件firewall标签 #配置只有192.168.140.128主机可以通过mycat用户访问<firewall><whitehost><host host="192.168.140.128"user="mycat"/></whitehost></firewall>
#重启Mycat后,192.168.140.128主机使用mycat用户访问 mysql-umycat-p123456-h192.168.140.128-P8066#可以正常访问,如下图

#在此主机换user用户访问,禁止访问

#在192.168.140.127主机用mycat用户访问,禁止访问

2、 黑名单

可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查等操作的拦截。

#设置黑名单 #server.xml配置文件firewall标签 #配置禁止mycat用户进行删除操作<firewall><whitehost><host host="192.168.140.128"user="mycat"/></whitehost><blacklist check="true"><property name="deleteAllow">false</property></blacklist></firewall>#如下图

#重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
#可以正常访问,如下图

#切换TESTDB数据库后,执行删除数据语句
delete from orders where id=7;
#运行后发现已禁止删除数据,如下图

可以设置的黑名单 SQL 拦截功能列表

如果文章对你有一点点帮助,欢迎【点赞、留言、+ 关注】
您的关注是我创作的动力!若有疑问/交流/需求,欢迎留言/私聊!
多一个朋友多一条路!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 2:28:53

国产CAD仿真分析,把破坏性试验留在屏幕里

搞研发的都知道&#xff0c;样机试制是个烧钱的无底洞。以前做一个新产品&#xff0c;设计好了直接加工出来&#xff0c;然后上试验台去测。有时候测到一半&#xff0c;结构崩了&#xff0c;几万块钱的样机瞬间变成废铁。心疼不说&#xff0c;还得分析是哪里出了问题&#xff0…

作者头像 李华
网站建设 2026/5/5 9:19:39

深度解析:2026年专业级AI公文写作软件如何选?附权威榜单

面对种类繁多的公文文种、严格的格式规范与严谨的内容要求,广大党政机关、事业单位及央国企的办公人员常常需要投入大量时间与精力。2026年,AI技术已深度融入办公场景,智能公文写作软件凭借其高效、准确、规范的核心优势,成为提升组织运转效能的重要工具。面对市场上众多选择,如…

作者头像 李华
网站建设 2026/5/9 23:19:39

one_channel_hub 移植到CH584M MCU平台(移除WiFi/网络相关代码)

one_channel_hub 移植到CH584M MCU平台&#xff08;移除WiFi/网络相关代码&#xff09; 一、移植前准备 1. 核心背景 CH584M特性&#xff1a;沁恒微的低功耗MCU&#xff0c;基于RISC-V架构&#xff0c;内置BLE 5.0&#xff0c;无WiFi外设&#xff0c;需适配其裸机/轻量级RTOS开…

作者头像 李华
网站建设 2026/5/10 7:07:24

JDK版本的区别

在IDEA中新建Spring Boot项目时&#xff0c;需要选择JDK版本&#xff0c;这里小记一下&#xff1a; Oracle OpenJDK Oracle 官方维护的开源免费JDK&#xff0c;Java标准实现。 Amazon Corretto 亚马逊基于 OpenJDK 定制的免费、长期支持JDK。 JetBrains Runtime JetBrains&…

作者头像 李华
网站建设 2026/5/9 13:04:22

2024年AI原生应用开源数据集推荐:高质量训练数据获取+处理全攻略

2024 年 AI 原生应用开源数据集推荐&#xff1a;高质量训练数据获取 处理全攻略 摘要/引言 在当今 AI 蓬勃发展的时代&#xff0c;高质量的数据集对于训练出强大且精准的 AI 原生应用至关重要。然而&#xff0c;如何获取合适的开源数据集&#xff0c;并对其进行有效的处理&a…

作者头像 李华