5、Mycat安全
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安全的更多相关文章
- MyCat源码分析系列之——结果合并
更多MyCat源码分析,请戳MyCat源码分析系列 结果合并 在SQL下发流程和前后端验证流程中介绍过,通过用户验证的后端连接绑定的NIOHandler是MySQLConnectionHandler实 ...
- MyCat源码分析系列之——SQL下发
更多MyCat源码分析,请戳MyCat源码分析系列 SQL下发 SQL下发指的是MyCat将解析并改造完成的SQL语句依次发送至相应的MySQL节点(datanode)的过程,该执行过程由NonBlo ...
- MyCat源码分析系列之——BufferPool与缓存机制
更多MyCat源码分析,请戳MyCat源码分析系列 BufferPool MyCat的缓冲区采用的是java.nio.ByteBuffer,由BufferPool类统一管理,相关的设置在SystemC ...
- MyCat源码分析系列之——前后端验证
更多MyCat源码分析,请戳MyCat源码分析系列 MyCat前端验证 MyCat的前端验证指的是应用连接MyCat时进行的用户验证过程,如使用MySQL客户端时,$ mysql -uroot -pr ...
- MyCat源码分析系列之——配置信息和启动流程
更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)se ...
- 开源分布式数据库中间件MyCat源码分析系列
MyCat是当下很火的开源分布式数据库中间件,特意花费了一些精力研究其实现方式与内部机制,在此针对某些较为重要的源码进行粗浅的分析,希望与感兴趣的朋友交流探讨. 本源码分析系列主要针对代码实现,配置. ...
- mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...
- 【无私分享:ASP.NET CORE 项目实战(第十三章)】Asp.net Core 使用MyCat分布式数据库,实现读写分离
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题,大家可以加一下MyCat的官方QQ群:106088787.我 ...
- mycat入门教程
github https://github.com/MyCATApache/Mycat-Server myCat介绍 myCat的诞生,要从其前身Amoeba和Cobar说起. Amoeba(变形虫) ...
- Mycat 全局系列号
标签:utf8 概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server. ...
随机推荐
- python的pip安装超时问题解决
使用pip install 安装python第三方库时出现了如下错误:pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionP ...
- eslint报错: Unexpected any value in conditional. An explicit comparison or type cast is required
原代码: record.modifiedTime? 修改后代码:typeof record.modifiedTime !== 'undefined' ? (isAddType === true ? ...
- c语言版单链表
1 //c语言单链表 2 #include <stdio.h> 3 #include <stdlib.h> 4 typedef struct Node 5 { 6 int da ...
- c++11-17 模板核心知识(十二)—— 模板的模板参数 Template Template Parameters
概念 举例 模板的模板参数的参数匹配 Template Template Argument Matching 解决办法一 解决办法二 概念 一个模板的参数是模板类型. 举例 在c++11-17 模板核 ...
- 技巧收藏|10个JavaScript常用数组操作方法
摘要:这篇文章,向大家展示了在日常开发中,数组有哪些小技巧值得借鉴和学习. 在web前端开发第二阶段Javascript中,数组是一个重要且常见的知识点,我们经常将数据存储在数组中,遍历数组或替换数组 ...
- 20200203_windows2012下安装mysql 5.7.29
一. 检查系统版本: 二. 下载mysql, 下载地址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 三. 解压下载后的压 ...
- RedHat-Linux操作指令第1篇
不同的linux系统切换方式会稍有一点差别 从图形界面切换到字符界面:Alt+F(1-8) 或者 Alt+Ctrl+Shift+F(1-8) 从字符界面切换回图形界面:Alt+F7 字符界面启动到图形 ...
- 代码审计系列题目CTFD部署(上)
关于简单部署题目请参考:https://www.cnblogs.com/Cl0ud/p/13783325.html 如果需要进行较复杂部署,可参考本篇 PHP代码审计系列题目的部署,较之前的部署方案, ...
- Leetcode学习笔记(2)
题目1 ID面试题 01.04 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. 示例 ...
- IntelliJ IDEA 学习笔记
之前一直用Eclipse,最近尝试使用IDEA,相较于 Eclipse 而言,IDEA强大的整合能力,比如: Git. Maven. Spring 等:提示功能的快速. 便捷:提示功能的范围广:好用的 ...