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之安全设置与监控工具相关推荐

  1. 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能

    https://aws.amazon.com/cn/blogs/china/mycat-rds-mysql/ 随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大 ...

  2. Mysql分库分表(Mycat)

    目录 ​一.分库分表概述及Mycat的概述 1.数据切分方式 2.MyCAT概述 二.部署MyCAT服务 1.环境准备 2.配置MyCat服务器 3.分片规则 1)枚举法 2)求模法 3)全局表 ​一 ...

  3. Mycat:压测Mycat及结果分析

    前言 Mycat是业内知名mysql数据库中间件,其功能在各种mysql中间件中是比较丰富的.而mycat相关组件由java语言编写,部署方便.他的功能有:不透明代理,读写分离,负载均衡,数据分片等. ...

  4. mycat读写分离部署步骤

    1.下载mycat: https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-ser ...

  5. 通过Mycat分库分表

    前言 实验环境: 系统:centos7 Mysql版本: 5.7 Mycat版本: 1.6 Mycat主机ip地址: 10.8.161.75 主机1地址: 10.8.161.185 主机2地址: 10 ...

  6. 瞧一瞧~看一看~MyCat架构剖析免费不要钱!(下)

    一.MyCat线程架构与实现 1.MyCat线程池实现 在MyCat中大量用到了线程池, 通过线程池来避免频繁的创建和销毁线程而造成的系统性能的浪费.在MyCat中使用的线程池是JDK中提供的线程池 ...

  7. MyCat的使用及其项目实战

    文章目录 MyCat实现高可用读写分离分库分表 1.MyCat的配置文件及其使用 1.1 schema.xml配置参数 1.2 server.xml配置参数 1.3 rule.xml配置参数 1.4 ...

  8. 多租户实现之基于Mybatis、Mycat的共享数据库,共享数据架构

    阅读文本大概需要3分钟. 前言 SaaS模式是什么? 传统的软件模式是在开发出软件产品后,需要去客户现场进行实施,通常部署在局域网,这样开发.部署及维护的成本都是比较高的. 现在随着云服务技术的蓬勃发 ...

  9. MySQL数据库mycat读写分离

    mycat读写分离 Mycat的读写分离是建立在Mysq的主从复制的基础上的 修改配置文件 schema.xml <?xml version="1.0"?> <! ...

最新文章

  1. OpenCV | 分水岭算法进行图像分割
  2. mysql 慢查询 定位过程,和order by有关
  3. 分支定界算法 matlab,分支定界法----整数规划matlab
  4. python dict保存到文件_将dict写入txt文件并将其读回?
  5. JavaScript-浅谈DOM事件流
  6. python要学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
  7. 空心等腰三角形java_java打印输出任意大小的等腰三角形,实心菱形,空心菱形,平行四边形...
  8. iOS中实现plist中读取数据实现Cell的显示(字典转模型,实现按序分组)修改图片的尺寸...
  9. 【C/C++】文件操作实例——学生信息管理
  10. 新技术表明通过观察灯泡振动可进行窃听,以后聊天得拉窗帘
  11. App运营:怎么提升App下载安装量?
  12. ffmpeg 转换flv压缩大小_ffmpeg 转换 mp4 成 flv
  13. Spring框架——基于xml文件的相关配置
  14. Prometheus+Alertmanager详细配置邮箱告警
  15. 2022.03.21飞扬的小鸟
  16. SATA硬盘与IDE硬盘的优劣势对比
  17. 关于管道沉积Matlab算法框架分析
  18. IDEA无法启动Tomcat显示[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirector
  19. 在设计电机电路项目中总结的一些电机参数知识和设计要点 - 直流电机、空心杯电机、步进电机、伺服电机等
  20. axios中的params和data的区别

热门文章

  1. list group by java_Java List集合实现MySQL Group By功能
  2. pcf8574c语言测试程序,PCF8563驱动程序(C语言版)
  3. android 关闭jack_Android7.0 配置JACK支持多用户同时编译
  4. bootstrap table传回的数据后端怎么获取_Flasksqlalchemy让你的数据库和网页执手偕老吧...
  5. springBoot @Scheduled多任务同时开始执行
  6. 图论 ---- F. Useful Edges(不等式移项优化预处理 + 路径和简单路径的区别 + 最短路)
  7. python 发布包_如何将自己的Python包发布到PyPI
  8. python转csv_python脚本如何将Excel文件转为csv文件(代码)
  9. BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
  10. CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)