1.权限配置

[1].user标签

目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。

#server.xml配置文件user部分

[root@host79 ~]# vim /usr/local/mycat/conf/server.xml

<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>

(1).配置说明

标签属性

说明

name

应用连接中间件逻辑库的用户名

password

该用户对应的密码

TESTDB

应用当前连接的逻辑库中所对应的逻辑表。schemas 中可以配置一个或多个

readOnly

应用连接中间件逻辑库所具有的权限。true 为只读,false 为读写都有,默认为 false

(2).测试案例

#测试案例一

# 使用user用户,权限为只读(readOnly:true)

# 验证是否可以查询出数据,验证是否可以写入数据

#1、用user用户登录,运行命令如下:

mysql -uuser -puser -h 192.168.188.188 -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.188.188 -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 标签

持保留,因为privileges 打开后启动出现

错误.mycat的版本信息Mycat-server-1.6-RELEASE-20161028204710-linux.tar

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 -h 192.168.140.128 -P 8066

#可以正常访问,如下图

##在192.168.188.189主机用mycat用户访问,禁止访问

#在此主机换user用户访问,禁止访问

[2].黑名单

可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查等操作的拦截.

#设置白名单

#server.xml配置文件firewall标签

#配置禁止mycat用户进行删除操作

<blacklist check="true">

<property name="deleteAllow">false</property>

</blacklist>

#重启Mycat后,192.168.140.128主机使用mycat用户访问

mysql -umycat -p123456 -h 192.168.188.188 -P 8066

#可以正常访问,如下图

#切换TESTDB数据库后,执行删除数据语句

delete from orders where id=400200;

#运行后发现已禁止删除数据,如下图

可以设置的黑名单 SQL 拦截功能列表

5、Mycat安全的更多相关文章

  1. MyCat源码分析系列之——结果合并

    更多MyCat源码分析,请戳MyCat源码分析系列 结果合并 在SQL下发流程和前后端验证流程中介绍过,通过用户验证的后端连接绑定的NIOHandler是MySQLConnectionHandler实 ...

  2. MyCat源码分析系列之——SQL下发

    更多MyCat源码分析,请戳MyCat源码分析系列 SQL下发 SQL下发指的是MyCat将解析并改造完成的SQL语句依次发送至相应的MySQL节点(datanode)的过程,该执行过程由NonBlo ...

  3. MyCat源码分析系列之——BufferPool与缓存机制

    更多MyCat源码分析,请戳MyCat源码分析系列 BufferPool MyCat的缓冲区采用的是java.nio.ByteBuffer,由BufferPool类统一管理,相关的设置在SystemC ...

  4. MyCat源码分析系列之——前后端验证

    更多MyCat源码分析,请戳MyCat源码分析系列 MyCat前端验证 MyCat的前端验证指的是应用连接MyCat时进行的用户验证过程,如使用MySQL客户端时,$ mysql -uroot -pr ...

  5. MyCat源码分析系列之——配置信息和启动流程

    更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)se ...

  6. 开源分布式数据库中间件MyCat源码分析系列

    MyCat是当下很火的开源分布式数据库中间件,特意花费了一些精力研究其实现方式与内部机制,在此针对某些较为重要的源码进行粗浅的分析,希望与感兴趣的朋友交流探讨. 本源码分析系列主要针对代码实现,配置. ...

  7. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  8. 【无私分享:ASP.NET CORE 项目实战(第十三章)】Asp.net Core 使用MyCat分布式数据库,实现读写分离

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题,大家可以加一下MyCat的官方QQ群:106088787.我 ...

  9. mycat入门教程

    github https://github.com/MyCATApache/Mycat-Server myCat介绍 myCat的诞生,要从其前身Amoeba和Cobar说起. Amoeba(变形虫) ...

  10. Mycat 全局系列号

    标签:utf8 概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server. ...

随机推荐

  1. yii2.0 关于 ActiveForm 中 checkboxList 的使用

    在视图中创建复选框,列出复选框内的内容其中$id 为 列出在复选框中的数组 //$ids:所有要显示的checkbox(Array)<?=$form->field($model, 'id' ...

  2. activiti数据表介绍

    activiti6.0数据库介绍 Acitiviti6.0数据库中一共有28张表,表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识. 用于自我学习记录,后期不定期更新~~~ 数据库描述 ...

  3. Linux服务器学习----tomcat 服务配置实验报告(一)

    一.实验目的 1. 掌握 tomcat 服务的搭建 二.实验内容 1. 搭建一台缓存 tomcat 服务器 三.实验环境1. tomcat 服务器 centos7 对应主机 ip 为 10.10.64 ...

  4. 红黑树、TreeMap、TreeSet

    事先声明以下代码基于JDK1.8版本 参考资料 大部分图片引自https://www.jianshu.com/p/e136ec79235c侵删 https://www.cnblogs.com/skyw ...

  5. windows服务器下tomcat 8.0 配置远程调试

    在tomcat的bin目录下, 添加debug.txt文件, 然后输入: set JPDA_ADDRESS=9901set JPDA_TRANSPORT=dt_socketset CATALINA_O ...

  6. 洛谷 P3410 拍照(最大流 + 建图)

    这道题问的是一群人要和另一群人合影,每个客人都有必须在场的人全部在场才能在场,每个客人给的有收入,但是邀请也需要支出,问最大收入? 我觉得可以总结为一类问题,就是有先决条件的网络流问题.看到费用和支出 ...

  7. java并发编程实战《七》安全性、活跃性以及性能问题

    安全性.活跃性以及性能问题 安全性问题 那什么是线程安全呢?其实本质上就是正确性,而正确性的含义就是程序按照我们期望的执行,不要让我们感到意外. 存在共享数据并且该数据会发生变化,通俗地讲就是有多个线 ...

  8. deepFM(原理和pytorch理解)

    参考(推荐):https://blog.csdn.net/w55100/article/details/90295932 要点: 其中的计算优化值得注意 K代表隐向量维数 n可以代表离散值one-ho ...

  9. [Java复习]架构部署 超时重试 幂等防重

    画一下你们系统的整体架构图,说说各个服务在生产环境怎么部署的? 核心:服务框架.注册中心.网关 即使你没有用很多微服务架构里的东西,只要有上述三个东西,配合上写一些文档,接口文档,分布式系统架构,其实 ...

  10. 最简单的Go Dockerfile编写姿势,没有之一!

    1. Dockerfile一些额外注意点 选择最简单的镜像 比如alpine,整个镜像5M左右 设置镜像时区 RUN apk add --no-cache tzdata ENV TZ Asia/Sha ...