Mycat安全配置
1. Mycat相关文章
Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置
Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)
Docker部署Mysql8.0.20并配置主从复制
Mycat配置分库分表(垂直分库、水平分表)、全局序列
2. 环境准备
- 服务器划分
| 服务器IP | 备注 |
|---|---|
| 192.168.133.130 | 数据库-1 |
| 192.168.133.131 | 数据库-2 |
| 192.168.133.132 | Mycat |
- 表结构
数据库和表依据博客:Mycat配置分库分表(垂直分库、水平分表)、全局序列环境。其中,Mycat连接两个Mysql数据库education的逻辑库为TESTDB,Mysql-1中表为mycat_sequence(Mycat全局序列表)、t_schedule(课程表)、t_subject_dict(课程字典表)等,Mysql-2中表为t_student(学生表)、t_schedule(课程表)、t_subject_dict(课程字典表)。
3. 权限配置
- user标签权限控制
在server.xml中,进行用户级别的权限设置:
# server.xml中用户设置
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
<property name="defaultSchema">TESTDB</property>
</user>
属性说明如下:
| 标签属性 | 说明 |
|---|---|
| user > name | 连接逻辑库用户名 |
| password | 连接逻辑库密码 |
| schemas | 逻辑库名称:TESTDB |
| defaultSchema | 默认逻辑库 |
| readOnly | 该用户是否只读,默认:false |
测试:
# 启动Mycat
# 进入Mycat的bin目录
./mycat cosole
# 测试1:user用户(只读)
# 连接Mycat
mysql -uuser -puser -h192.168.133.132 -P8066
# 切换数据库
use TESTDB;
# 查询数据(查询成功)
select * from t_schedule;
# 插入数据
# 插入失败,提示:User readonly
insert into t_student(id, username) values(1, '张三');
# 测试2:root用户(可读可写)
# 连接Mycat
mysql -uroot -p123456 -h192.168.133.132 -P8066
# 切换数据库
use TESTDB;
# 查询数据(查询成功)
select * from t_schedule;
# 插入数据(插入成功)
insert into t_student(id, username) values(1, '张三');
# 查询插入的数据
select * from t_student;
- privileges标签权限控制
在user标签下的privileges标签可以对逻辑库(schema)、表(table)进行更加精确的DML权限控制。
privileges标签的check属性为true则开启权限检查,为false则不开启权限检查,默认为false。
由于Mycat一个用户的schemas属性可配置多个逻辑库(schema),所以privileges标签的下级节点schema同样可配置多个,同时对多库多表进行精确的DML权限控制。
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="t_student" dml="0000"></table>
<table name="t_schedule" dml="1111"></table>
<table name="t_subject_dict" dml="0010"></table>
</schema>
</privileges>
</user>
DML权限说明如下:
| DML权限 | 新增 | 更新 | 查询 | 删除 |
|---|---|---|---|---|
| 0000 | 禁止 | 禁止 | 禁止 | 禁止 |
| 0010 | 禁止 | 禁止 | 允许 | 禁止 |
| 1110 | 允许 | 允许 | 允许 | 禁止 |
| 1111 | 允许 | 允许 | 允许 | 允许 |
| ... | ... | ... | ... | ... |
测试:
# 启动Mycat
# 进入Mycat的bin目录
./mycat cosole
# 连接Mycat
mysql -uroot -p123456 -h192.168.133.132 -P8066
# 测试表t_student(0000)
# 查询报错:3012 - The statement DML privilege check is not passed, reject for user 'root'
select * from t_student;
# 新增报错:3012 - The statement DML privilege check is not passed, reject for user 'root'
insert into t_student(id, username) values(4 , '李四');
# 测试表t_schedule(1111)
# 查询正常:OK
select * from t_schedule;
# 更新正常:Affected rows: 1
update t_schedule set subject_code = 'SW' where id = 1;
# 其他权限请自行测试
4. SQL拦截
Mycat的server.xml配置文件中的firewall标签用来定义防火墙,其中firewall标签下的whitehost 标签用来定义IP白名单,firewall标签下的blacklist标签用来定义SQL黑名单。
- 白名单
通过白名单可以指定某个或某些主机可以访问Mycat,其他主机禁止访问。
白名单可以使用通配符%或*,这些配置情况下对于127.0.0.1都能以root账户登录。
# 例如
<host host="127.0.0.*" user="root"/>
<host host="127.0.*" user="root
<host host="127.*" user="root"/>
<host host="1*7.*" user="root"/>
配置指定IP访问:
<firewall>
<whitehost>
<host host="192.168.133.130" user="root"/>
</whitehost>
</firewall>
测试:
# 启动Mycat
# 进入Mycat的bin目录
./mycat cosole
# 其他主机连接Mycat
# root用户
# 连接失败:Access denied for user 'root' with host '192.168.133.131'
mysql -uroot -p123456 -h192.168.133.132 -P8066
# user用户
# 连接成功
mysql -uuer -puser -h192.168.133.132 -P8066
- 黑名单
通过黑名单,可以实现对SQL操作(例如增删改查等)的拦截。
server.xml配置文件下的firewall标签下的blacklist标签用来定义SQL黑名单,它的check属性标识是否开启权限拦截,true为开启,false为不开启,默认为false。
配置黑名单并开启权限检查:
<firewall>
<whitehost>
<host host="192.168.133.130" user="root"/>
</whitehost>
<blacklist check="true">
<property name="deleteAllow">false</property>
</blacklist>
</firewall>
黑名单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的bin目录
./mycat cosole
# 连接Mycat
mysql -uroot -p123456 -h192.168.133.132 -P8066
# 测试删除
# 删除失败:3012 - The statement is unsafe SQL, reject for user 'root'
delete from t_schedule where id = '123456';
Mycat安全配置的更多相关文章
- Mycat 中间件配置初探与入门操作
Mycat中间件配置初探与入门操作 By:授客 QQ:1033553122 实践环境 Mycat-server-1.5.1-RELEASE-20161130213509-win.tar.gz 下载地址 ...
- Mycat入门配置_读写分离配置
1.Mycat的分片 两台数据库服务器: 192.168.80.11 192.168.80.4 操作系统版本环境:centos6.5 数据库版本:5.6 mycat版本:1.4 release 数据库 ...
- linux中mycat的配置,分片,以及主从复制
1.1 安装环境 1.jdk:要求jdk必须是1.7及以上版本 2.Mysql:推荐mysql是5.5以上版本 1.2 安装步骤 Mycat有windows.linux多种版本.本教程为lin ...
- Mycat 安装配置
下载https://github.com/MyCATApache/Mycat-download Mycat 需要jdk 环境,首先安装 jdk 安装完 jdk 环境以后 下载 mycat server ...
- 基于HA机制的MyCat架构——配置HAProxy
HAProxy简介HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这些站 ...
- MyCat安装配置
Mycat : 数据库分库分表中间件 http://www.mycat.io/ mycat运行需要JVM,所以先安装java环境,JDK1.7以上.数据库采用mysql5.7,或者8.0 下载 下载地 ...
- MyCAT+MySQL 搭建高可用企业级数据库集群——第3章 MyCat核心配置讲解
3-1 章节综述 3-2 常用配置文件间的关系 3-3 server.xml配置详解 3-4 log4j2.xml配置文件 3-5 rule.xml 3-6 常用分片算法(上) 3-7 常用分片算法( ...
- mycat的配置和学习
1.mycat一共三个配置文件. 1)server.xml:配置逻辑库的名称访问的账号密码 <user name="root"> <property name=& ...
- MySQL主从复制之Mycat简单配置和高可用
什么是Mycat 1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等.因此,Mycat本身并不存储 ...
- Mycat简单配置
最近项目中需要用到Mycat来作为Mysql的分表中间件.所以稍微研究了一下. Mycat使用起来是非常方便,而且最重要的是配置简单,稍显麻烦的就是需要对库中的每一个表都进行配置. 记录一下最重要的几 ...
随机推荐
- C++运行时类型判断dynamic_cast和typeid
dynamic_cast dynamic_cast < Type-id > ( expression ) dynamic_cast<类型>(变量) 在运行期间检测类型转换是否安 ...
- 2020-11-02(三年之约D92)-优秀不是一种行为,而是一种习惯
1.阅读:<软技能-代码之外的生存指南>- 第45章 培养习惯:刷新你的代码 成就我们的恰恰就是那些不断重复做的事情.因此,优秀不是一种行为,而是一种习惯--亚里士多德 习惯主要由三个要素 ...
- python-Requests模块的使用
1. Requests简介 Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能,那为什么R ...
- 被 C# 的 ThreadStatic 标记的静态变量,都存放在哪里了?
一:背景 1. 讲故事 前几天公号里有一位朋友留言说,你windbg玩的溜,能帮我分析下被 ThreadStatic 修饰的变量到底存放在哪里吗?能不能帮我挖出来,其实这个问题问的挺深的,玩高级语言的 ...
- 下载器Folx扩展程序支持哪些浏览器
Folx使用多线程的下载方式大大提升了下载的速度,可以完全替代浏览器自带的下载工具,使下载文件的管理更加简单高效.但是,必须给浏览器安装Folx扩展程序,才能使用Folx下载页面链接. Folx在偏好 ...
- 思维导图软件iMindMap:生活工作的好帮手
思维导图iMindMap这样的好帮手在生活工作中能帮你打破困境,,至于它有哪些力所能及的事情就是下面小编要跟你讲的: 你是否经常遇到过这样的情况: 作为学生,你觉得学习紧张,虽然三更眠五更起,还是成绩 ...
- jQuery 第十章 ajax 什么是回调地狱 优化回调地狱
回调地狱 什么是回调地狱,回调函数,一个嵌套着一个,到最后,缩略图成了 一个三角形, 造成了可阅读性差,可阅读性差就代表代码的可维护性 和 可迭代性差,最后还有一个就是可扩展性差. 也不符合设计模式的 ...
- mysql5.5升级5.7(1)
卸载旧版本mysql 当然要记得备份数据库数据啦 1.查看需要卸载的部分: rpm -qa |grep -i mysql 2.开始卸载: yum remove mysql* 接下来是安装新版mysql ...
- 【模版】【P3806】点分治
(7.17)早就想学点分治了--今天状态不太在线,眯一会写篇笔记来理理思路. ------------------------------------------------------------- ...
- 【论文解读】【半监督学习】【Google教你水论文】A Simple Semi-Supervised Learning Framework for Object Detection
题记:最近在做LLL(Life Long Learning),接触到了SSL(Semi-Supervised Learning)正好读到了谷歌今年的论文,也是比较有点开创性的,浅显易懂,对比实验丰富, ...