news 2026/4/15 15:29:34

【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/4/11 0:17:12

大功率防雷器件,低容集成阵列TVS

LC03-6.TBT,LC03-6R2G大功率集成阵列TVS Array 产品概述 TVS二极管是敏感半导体元件板级保护的理想选择。LCO3-6将TVS二极管与整流桥相结合&#xff0c;以单个器件在共模和差分模式下提供瞬态保护。器件的电容最小化(<25pF)&#xff0c;以确保高速线路上正确的信号传输。…

作者头像 李华
网站建设 2026/4/10 21:20:48

​​​​​​​刷爆朋友圈的“香蕉模型”,到底是什么来头?

关注我们 最近AI圈子又变天了 大家都在讨论一个新词 叫做香蕉模型 你可能第一次听说 但在极客圈它已经杀疯了 为什么叫它香蕉 因为它主打的就是 剥皮即食 简单好用且能量巨大 相比于那些庞大的巨无霸模型 香蕉模型更轻量 反应速度更快 而且成本低到令人发指 很多做…

作者头像 李华
网站建设 2026/4/13 12:57:49

[Web自动化] 爬虫之网络请求

9.4 爬虫之网络请求 9.4.1 使用requests库发送HTTP请求 requests库提供了丰富的功能来发送HTTP请求&#xff0c;并处理响应。以下是一些额外的示例和说明。 发送带参数的GET请求&#xff1a; 如果你需要向服务器发送查询参数&#xff0c;可以将它们作为字典传递给params参数。 …

作者头像 李华
网站建设 2026/4/15 12:35:24

08.05.01.tiptop webserver接口篇(制作接口:自定义查询)

本页目录&#xff1a; 1、写代码2、配置3、测试 写代码 修改注册服务接口代码&#xff1a;/u1/topprod/tiptop/aws/4gl/aws_ttsrv2_service.4gl 添加發佈 Service Function 段落 ----------------------- begin waichi001 --------------WHEN "aws_customizeQueryData&…

作者头像 李华
网站建设 2026/4/4 2:13:45

05. 如何实现原理图比较?| OrCAD X Capture CIS 设计小诀窍第二季

OrCAD X Capture CIS设计小诀窍系列--如何实现原理图比较背景介绍&#xff1a;我们在进行原理图设计时&#xff0c;经常需要对原理图进行版本更新。而如果设计师对最新版本的原理图不满意&#xff0c;想要回溯原理图修改了哪些内容&#xff0c;则需要进行原理图比较。而通过Cap…

作者头像 李华
网站建设 2026/4/12 10:47:52

Spring Boot的多环境配置

在开发Spring Boot项目中&#xff0c;如果我们想把自己的项目开源到Github仓库&#xff0c;application.yml中的某些配置比如MySQL、Redis的账户密码&#xff0c;还有的就是现在引入AI之后的一些密钥&#xff0c;可能都不太愿意推送到仓库去。 这个时候&#xff0c;可以通过配…

作者头像 李华