Mycat之安全设置与监控工具

it2025-07-24  7

Mycat安全设置

权限设置

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>

配置说明

标签属性说明name应用连接中间件逻辑库的用户名password该用户对应的密码TESTDB应用当前连接的逻辑库中所对应的逻辑表。schemas中可以配置一个或多个readOnly应用连接中间件逻辑库所具有的权限。true为只读,false为读写都有,默认为false

测试案例

#测试案例一 # 使用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 -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、可看到运行结果,插入成功,如下图:

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>

配置说明

DML权限增加(insert)更新(update)查询(select)删除(delete)0000禁止禁止禁止禁止0010禁止禁止可以禁止1110可以可以可以禁止1111可以可以可以可以 #测试案例一 #使用mycat用户,privileges配置orders表权限为禁止增删改查(dml="0000") #验证是否可以查询出数据,验证是否可以写入数据 #1、重启mycat,用mycat用户登录,运行命令如下: mysql -umycat -p123456 -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(8,101,101,10000); #5、可看到运行结果,禁止该用户插入数据,如下图:

#测试案例二 #使用mycat用户,privileges配置orders表权限为可以增删改查(dml="1111") #验证是否可以查询出数据,验证是否可以写入数据 #1、重启mycat,用mycat用户登录,运行命令如下: mysql -umycat -p123456 -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(8,101,101,10000); #5、可看到运行结果,插入成功,如下图:

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

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 -h 192.168.140.128 -P 8066 #可以正常访问,如下图

在此主机换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 拦截功能列表

配置项缺省值描述selelctAllowtrue是否允许执行 SELECT 语句deleteAllowtrue是否允许执行 DELETE 语句updateAllowtrue是否允许执行 UPDATE 语句insertAllowtrue是否允许执行 INSERT 语句createTableAllowtrue是否允许创建表setAllowtrue是否允许使用 SET 语法alterTableAllowtrue是否允许执行 Alter Table 语句dropTableAllowtrue是否允许修改表commitAllowtrue是否允许执行 commit 操作rollbackAllowtrue是否允许执行 roll back 操作

七、Mycat监控工具

Mycat-web简介

Mycat-web是Mycat可视化运维的管理和监控平台,弥补了Mycat在监控上的空白。帮Mycat分担统计任务和配置管理任务。Mycat-web引入了 ZooKeeper作为配置中心,可以管理多个节点。Mycat-web主要管理和监控Mycat的流量、连接、活动线程和内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分析慢SQL和高频SQL等。为优化SQL提供依据。

Mycat-web配置使用

1、ZooKeeper安装

ZooKeeper安装配置详见,CentOS下安装ZooKeeper

2、Mycat-web安装

下载安装包http://www.mycat.org.cn/

安装包拷贝到Linux系统/opt目录下,并解压

tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz

拷贝mycat-web文件夹到/usr/local目录下

cp -r mycat-web /

进入mycat-web的目录下运行启动命令

cd /usr/local/mycat-web/ ./start.sh &

Mycat-web服务端口为8082,查看服务已经启动

netstat -ant |grep 8082

通过地址访问服务

3、Mycat-web配置

(1)、先在注册中心配置ZooKeeper地址,配置后刷新页面

(2)、新增Mycat监控实例

Mycat性能监控指标

在 Mycat-web上可以进行Mycat性能监控,例如:内存分享、流量分析、连接分析、活动线程分析等等。

最新回复(0)