news 2026/6/19 6:36:06

【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/6/18 17:10:33

【计算机毕业设计案例】基于springboot的个人健康管理系统基于springboot个人健康档案管理系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/18 14:16:58

【Docker】解决Docker容器时间与宿主机时间不一致的几种方法

一、介绍 由于Docker容器内的时间默认是 UTC 世界标准时间&#xff0c;而宿主机时间为 CST 中国标准时间&#xff08;东八区&#xff0c;Asia/Shanghai&#xff09;&#xff0c;时间相差8小时&#xff0c;根本原因是时区问题。因此&#xff0c;需要为Docker容器配置正确的时区&…

作者头像 李华
网站建设 2026/6/18 11:19:26

直播美颜SDK怎么选?从人脸美型效果、性能与成本全面分析

在直播行业卷到“美颜都快成标配”的今天&#xff0c;不管你是做直播平台、社交产品&#xff0c;还是短视频、电商直播&#xff0c;选对一款直播美颜SDK&#xff0c;往往直接影响用户留存率和产品口碑。 问题是&#xff1a; 市面上的直播美颜SDK这么多&#xff0c;看起来功能都…

作者头像 李华
网站建设 2026/6/12 14:33:47

嵌入式系统设计师软考个人笔记<3>

1.1 嵌入式系统电源管理1.1.1 电源系统基础定义&#xff1a;为嵌入式设备提供稳定、合规直流电能的子系统&#xff0c;通常将交流市电或电池电源转换为系统所需的直流电压等级。供电类型&#xff1a;市电供电&#xff1a;通过AC-DC转换模块&#xff08;如开关电源&#xff09;提…

作者头像 李华
网站建设 2026/6/10 10:24:39

解码内部集成电路(IIC)与OLED屏

内部集成电路&#xff08;IIC/I2C&#xff09; 基本概念 英文全称Inter Integrated Circuit&#xff0c;简称IIC或I2C&#xff0c;是半双工同步串行通信接口协议1982年由飞利浦公司&#xff08;现恩智浦半导体&#xff09;设计推出设计初衷&#xff1a;为微控制器&#xff08;…

作者头像 李华
网站建设 2026/6/15 17:52:52

稳定细胞系构建 | 稳定株开发服务 | 高表达克隆筛选

稳定细胞系构建是细胞生物学、分子生物学和蛋白质工程等众多科研领域中广泛采用的一项基础技术。所谓稳定细胞系&#xff0c;是指通过遗传整合外源基因的方式&#xff0c;使细胞在长期传代过程中持续稳定表达目标蛋白&#xff08;或其它功能元件&#xff09;的细胞系。这类细胞…

作者头像 李华