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. H5系列之video自己编写控制栏

    首先来了解一下 video, video呢,是H5 的标签,别人说的 H5播放器,没错 就是他了,利用video标签,可以实现视频播放. 但是啊,你会发现,在不同的浏览器上,播放器的 控制栏,都是不一 ...

  2. 对于AQS的理解

    1.JUC包中的 CountDownLatch.CyclicBarrier.ReentrantLock和Semaphore都是基于AQS(AbstractQuenedSynchronizer)实现的 ...

  3. 基于gin的golang web开发:docker

    Golang天生适合运行在docker容器中,这得益于:Golang的静态编译,当在编译的时候关闭cgo的时候,可以完全不依赖系统环境. 一些基础 测试容器时我们经常需要进入容器查看运行情况,以下命令 ...

  4. 有了Git这个操作,我再也不怕代码混乱了!

    大家好,今天的文章我们来介绍git当中一个非常常用的功能--储藏. 大家在协同开发的时候应该都有这样的经历,有的时候我们的功能开发了一半,因为某些原因我们想要checkout到其他的分支上查看代码或者 ...

  5. CentOS下Python尝试

    打印一个爱心 #猴赛雷 print'\n'.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2 ...

  6. CentOS7配置时间和CentOS6搭建局域网NTP

    NTP 2015年8月20日 星期四 17:34 CentOS 7配置本地时区和TIME ZONE #用tzselect配置时区和time zone [root@localhost Asia]# /u ...

  7. bypass disable_function

    windows 1.com组件绕过 <?php$command=$_POST['a'];$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.A ...

  8. spring-boot-starter

    Spring Boot Starter 是在 SpringBoot 组件中被提出来的一种概念,stackoverflow 上面已经有人概括了这个 starter 是什么东西,想看完整的回答戳 这里. ...

  9. 【2020.11.28提高组模拟】T2 序列(array)

    序列(array) 题目描述 ​给定一个长为 \(m\) 的序列 \(a\). 有一个长为 \(m\) 的序列 \(b\),需满足 \(0\leq b_i \leq n\),\(\sum_{i=1}^ ...

  10. 20191226_rpm命令

    安装rpm包: [root@localhost ~]# rpm -ivh test.rpm rpm查询命令: [root@localhost ~]# rpm -qa | grep mysql mysq ...