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. leetcode 33和 leetcode81

    //感想: 1.对于这两题,我真的是做到吐,这篇博客本来是昨晚准备写的,但是对于这个第二题,我真的做到头痛,实在是太尼玛的吐血了,主要是我也是头铁,非要找到那个分界点. 2.其实之前在牛客网上做过非常 ...

  2. Shamir秘密共享方案 (Python)

    Shamir's Secret Sharing scheme is an important cryptographic algorithm that allows private informati ...

  3. 第四代Express框架koa简介

    目录 简介 koa和express koa使用介绍 中间件的级联关系 koa的构造函数 启动http server 自定义中间件 异常处理 简介 熟悉Spring MVC的朋友应该都清楚Spring ...

  4. How tomcat works(深入剖析tomcat)(7) Logger

    How tomcat works (7)日志记录器 总体概述 顾名思义,这一章将的是tomcat的日志记录器组件,比较简单,tomcat提供了几种类型不同的日志记录器,但是所有的日志记录器都需要实现L ...

  5. 第三十六章、PyQt输入部件:QAbstractSpinBox派生类QSpinBox、 QDoubleSpinBox、QDateTimeEdit、QDateEdit和QTimeEdit

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Spin B ...

  6. PHP 的$server变量

    PHP中$_SERVER["QUERY_STRING"]函数   详解PHP中$_SERVER函数的QUERY_STRING和 $_SERVER存储当前服务器信息,其中有几个值 如 ...

  7. Django框架简单认识(一)

    1.Django是什么 Django是一个由python写成的开放源代码的Web应用框架. 2.Django安装 2.1 Django与python版本的安装版本匹配 Django 版本 Python ...

  8. 中间件面试专题:kafka高频面试问题

  9. CF1457D XOR-gun

    这道题真的把我秀到了,我首先猜了一波结论,打了一个可持久化 \(\text{Trie}\) 加二分的两只 \(\log_2\) 的做法,发现不能 \(PP\) ,然后就一直改到比赛结束还没改过. 然后 ...

  10. eureka配置说明

    以下配置来源于jar中的源码,采用标准两个空格作为缩进 eureka.yml spring: application: name: APPLICATION_NAME # 应用名,在eureka上注册为 ...