Mycat之安全设置与监控工具
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 拦截功能列表
配置项 | 缺省值 | 描述 |
---|---|---|
selelctAllow | true | 是否允许执行 SELECT 语句 |
deleteAllow | true | 是否允许执行 DELETE 语句 |
updateAllow | true | 是否允许执行 UPDATE 语句 |
insertAllow | true | 是否允许执行 INSERT 语句 |
createTableAllow | true | 是否允许创建表 |
setAllow | true | 是否允许使用 SET 语法 |
alterTableAllow | true | 是否允许执行 Alter Table 语句 |
dropTableAllow | true | 是否允许修改表 |
commitAllow | true | 是否允许执行 commit 操作 |
rollbackAllow | true | 是否允许执行 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性能监控,例如:内存分享、流量分析、连接分析、活动线程分析等等。
Mycat之安全设置与监控工具相关推荐
- 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能
https://aws.amazon.com/cn/blogs/china/mycat-rds-mysql/ 随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大 ...
- Mysql分库分表(Mycat)
目录 一.分库分表概述及Mycat的概述 1.数据切分方式 2.MyCAT概述 二.部署MyCAT服务 1.环境准备 2.配置MyCat服务器 3.分片规则 1)枚举法 2)求模法 3)全局表 一 ...
- Mycat:压测Mycat及结果分析
前言 Mycat是业内知名mysql数据库中间件,其功能在各种mysql中间件中是比较丰富的.而mycat相关组件由java语言编写,部署方便.他的功能有:不透明代理,读写分离,负载均衡,数据分片等. ...
- mycat读写分离部署步骤
1.下载mycat: https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-ser ...
- 通过Mycat分库分表
前言 实验环境: 系统:centos7 Mysql版本: 5.7 Mycat版本: 1.6 Mycat主机ip地址: 10.8.161.75 主机1地址: 10.8.161.185 主机2地址: 10 ...
- 瞧一瞧~看一看~MyCat架构剖析免费不要钱!(下)
一.MyCat线程架构与实现 1.MyCat线程池实现 在MyCat中大量用到了线程池, 通过线程池来避免频繁的创建和销毁线程而造成的系统性能的浪费.在MyCat中使用的线程池是JDK中提供的线程池 ...
- MyCat的使用及其项目实战
文章目录 MyCat实现高可用读写分离分库分表 1.MyCat的配置文件及其使用 1.1 schema.xml配置参数 1.2 server.xml配置参数 1.3 rule.xml配置参数 1.4 ...
- 多租户实现之基于Mybatis、Mycat的共享数据库,共享数据架构
阅读文本大概需要3分钟. 前言 SaaS模式是什么? 传统的软件模式是在开发出软件产品后,需要去客户现场进行实施,通常部署在局域网,这样开发.部署及维护的成本都是比较高的. 现在随着云服务技术的蓬勃发 ...
- MySQL数据库mycat读写分离
mycat读写分离 Mycat的读写分离是建立在Mysq的主从复制的基础上的 修改配置文件 schema.xml <?xml version="1.0"?> <! ...
最新文章
- OpenCV | 分水岭算法进行图像分割
- mysql 慢查询 定位过程,和order by有关
- 分支定界算法 matlab,分支定界法----整数规划matlab
- python dict保存到文件_将dict写入txt文件并将其读回?
- JavaScript-浅谈DOM事件流
- python要学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
- 空心等腰三角形java_java打印输出任意大小的等腰三角形,实心菱形,空心菱形,平行四边形...
- iOS中实现plist中读取数据实现Cell的显示(字典转模型,实现按序分组)修改图片的尺寸...
- 【C/C++】文件操作实例——学生信息管理
- 新技术表明通过观察灯泡振动可进行窃听,以后聊天得拉窗帘
- App运营:怎么提升App下载安装量?
- ffmpeg 转换flv压缩大小_ffmpeg 转换 mp4 成 flv
- Spring框架——基于xml文件的相关配置
- Prometheus+Alertmanager详细配置邮箱告警
- 2022.03.21飞扬的小鸟
- SATA硬盘与IDE硬盘的优劣势对比
- 关于管道沉积Matlab算法框架分析
- IDEA无法启动Tomcat显示[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirector
- 在设计电机电路项目中总结的一些电机参数知识和设计要点 - 直流电机、空心杯电机、步进电机、伺服电机等
- axios中的params和data的区别
热门文章
- list group by java_Java List集合实现MySQL Group By功能
- pcf8574c语言测试程序,PCF8563驱动程序(C语言版)
- android 关闭jack_Android7.0 配置JACK支持多用户同时编译
- bootstrap table传回的数据后端怎么获取_Flasksqlalchemy让你的数据库和网页执手偕老吧...
- springBoot @Scheduled多任务同时开始执行
- 图论 ---- F. Useful Edges(不等式移项优化预处理 + 路径和简单路径的区别 + 最短路)
- python 发布包_如何将自己的Python包发布到PyPI
- python转csv_python脚本如何将Excel文件转为csv文件(代码)
- BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
- CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)