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使用起来是非常方便,而且最重要的是配置简单,稍显麻烦的就是需要对库中的每一个表都进行配置. 记录一下最重要的几 ...
随机推荐
- JUC锁种类总结
在并发编程中有各种各样的锁,有的锁对象一个就身兼多种锁身份,所以初学者常常对这些锁造成混淆,所以这里来总结一下这些锁的特点和实现. 乐观锁.悲观锁 悲观锁 悲观锁是最常见的锁,我们常说的加锁指的也就是 ...
- bWAPP----Server-Side Includes (SSI) Injection
Server-Side Includes (SSI) Injection 什么是SSI和SSI注入 SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术 ...
- 宕机了,Redis数据丢了怎么办?
持续原创输出,点击上方蓝字关注我 目录 前言 什么是AOF? 三种写回策略 日志文件太大怎么办? AOF重写会阻塞主线程吗? AOF的缺点 总结 什么是RDB? 给哪些数据做快照? 快照时能够修改数据 ...
- 给力啊!这篇Spring Bean的依赖注入方式笔记总结真的到位,没见过写的这么细的
1. Bean的依赖注入概念 依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现.在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是 ...
- Java IDEA根据database以及脚本代码自动生成DO,DAO,SqlMapper文件(一)
根据数据库代码自动生成的插件挺多的,这里主要分享两种: 1.根据database以及脚本代码自动生成 2.根据mybatis-generator-core自动生成(下一章节进行分享,包含sqlserv ...
- Oracle数据库由dataguard备库引起的log file sync等待
导读: 最近数据库经常出现会话阻塞的报警,过一会又会自动消失,昨天晚上恰好发生了一次,于是赶紧进行了查看,不看不知道,一看吓一跳,发现是由dataguard引起的log file sync等待.我们知 ...
- pytest失败重跑
一.说明 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来.自动化运行用例时候,也会出现偶然的bug,可以针对单个用例 ...
- selenium+python自动化元素定位
最近学习自动化测试,终于初步学习完成,需要进行博客日志总结,加深巩固自己的知识. 元素的八种定位方式 1.id 以百度为例子 我们在python输入的元素定位语法:bs.find_element_by ...
- Goland 2020.2.x 激活码永久破解教程 (最新Goland激活码!2020.11.26亲测可用!)
在2020.11.26 Goland的用户们又迎来了一次更新,这就导致很多软件打开时候就提示Goland激活码已经失效,码小辫第一时间给各位分享了关于最新Goland激活破解教程! goland已经更 ...
- 听说高手都用记事本写C语言代码?那你知道怎么编译运行吗?
坊间传闻高手都喜欢用记事本写代码,那么问题来了,我们以C语言为例,如何用记事本编译运行呢?其实最简单的方式就是安装GCC编译器,在记事本编写C语言程序,然后再在命令行用GCC编译运行,下面我简单介绍一 ...