news 2026/5/1 9:12:19

【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/1 6:52:24

2026 年 AI 如何将 3D 渲染时间缩短 70%?原理解析 + 云渲染实战方案

在 3D 可视化与影视特效行业&#xff0c;一直以来渲染速度缓慢都是制约创意开展与效率提升的核心痛点&#xff1a;从高质量影像输出到复杂场景预览&#xff0c;往往需要耗费数小时甚至数天的时间&#xff0c;这不仅延长制作周期&#xff0c;还直接影响成本与客户满意度。随着 2…

作者头像 李华
网站建设 2026/5/1 5:47:05

如何在应用程序中安装插件并使用

应用程序与插件的关系、安装使用及核心机制 一、应用程序与插件的关系 1.1 基本关系 应用程序是独立运行的软件&#xff0c;而插件&#xff08;也称为扩展、附加组件&#xff09;是扩展应用程序功能的独立模块。它们的关系类似于&#xff1a; 主机与客体的关系&#xff1a;…

作者头像 李华
网站建设 2026/5/1 6:48:11

08.06.01.tiptop webserver接口篇(收集接口:查询接口)

1、EF OA的接口 测试区&#xff1a;http://erp2.waichi.com/web/ws/r/aws_efsrv_toptest?wsdl正式区&#xff1a;http://erp2.waichi.com/web/ws/r/aws_efsrv?wsdl 2、ERP日常接口 测试区&#xff1a;http://erp2.waichi.com/web/ws/r/aws_ttsrv2_toptest?wsdl正式区&#x…

作者头像 李华
网站建设 2026/4/25 1:11:47

08. 如何实现元器件按页分配位号?| OrCAD X Capture CIS 设计小诀窍第二季

OrCAD X Capture CIS设计小诀窍系列 --如何实现元器件按页分配位号 背景介绍&#xff1a;我们在进行原理图设计时&#xff0c;经常需要确定对应位号的器件位于哪页原理图&#xff0c;以便设计人员进行修改。如果使用通常的方式分配位号&#xff0c;需要人工进行查找和确认&am…

作者头像 李华