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安全配置的更多相关文章

  1. Mycat 中间件配置初探与入门操作

    Mycat中间件配置初探与入门操作 By:授客 QQ:1033553122 实践环境 Mycat-server-1.5.1-RELEASE-20161130213509-win.tar.gz 下载地址 ...

  2. Mycat入门配置_读写分离配置

    1.Mycat的分片 两台数据库服务器: 192.168.80.11 192.168.80.4 操作系统版本环境:centos6.5 数据库版本:5.6 mycat版本:1.4 release 数据库 ...

  3. linux中mycat的配置,分片,以及主从复制

    1.1    安装环境 1.jdk:要求jdk必须是1.7及以上版本 2.Mysql:推荐mysql是5.5以上版本 1.2  安装步骤 Mycat有windows.linux多种版本.本教程为lin ...

  4. Mycat 安装配置

    下载https://github.com/MyCATApache/Mycat-download Mycat 需要jdk 环境,首先安装 jdk 安装完 jdk 环境以后 下载 mycat server ...

  5. 基于HA机制的MyCat架构——配置HAProxy

    HAProxy简介HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这些站 ...

  6. MyCat安装配置

    Mycat : 数据库分库分表中间件 http://www.mycat.io/ mycat运行需要JVM,所以先安装java环境,JDK1.7以上.数据库采用mysql5.7,或者8.0 下载 下载地 ...

  7. MyCAT+MySQL 搭建高可用企业级数据库集群——第3章 MyCat核心配置讲解

    3-1 章节综述 3-2 常用配置文件间的关系 3-3 server.xml配置详解 3-4 log4j2.xml配置文件 3-5 rule.xml 3-6 常用分片算法(上) 3-7 常用分片算法( ...

  8. mycat的配置和学习

    1.mycat一共三个配置文件. 1)server.xml:配置逻辑库的名称访问的账号密码 <user name="root"> <property name=& ...

  9. MySQL主从复制之Mycat简单配置和高可用

    什么是Mycat 1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等.因此,Mycat本身并不存储 ...

  10. Mycat简单配置

    最近项目中需要用到Mycat来作为Mysql的分表中间件.所以稍微研究了一下. Mycat使用起来是非常方便,而且最重要的是配置简单,稍显麻烦的就是需要对库中的每一个表都进行配置. 记录一下最重要的几 ...

随机推荐

  1. 查看 /var/log目录下文件个数 命令tree 、cut

    查看 /var/log目录下文件个数 方法1. [root@oldboy learn_shell]# tree -L 1 /var/log/ |tail -1 5 directories, 42 fi ...

  2. HDU100题简要题解(2030~2039)

    HDU2030 汉字统计 题目链接 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output ...

  3. 冷门的HTML - tabindex 的作用

    冷门的HTML - tabindex 的作用 HTML 的 tabindex 属性开发过程中一般不会使用到,最近开发中有个需求兼顾富交互,便总结了一下.本篇文章同时收录在我的[前端知识点]中,Gith ...

  4. 记php多张图片 合并生成竖列 纵向长图(可用于商品详情图合并下载)

    <?php namespace app\mapi\common\image; /** * 拼接多幅图片成为一张图片 * * 参数说明:原图片为文件路径数组,目的图片如果留空,则不保存结果 * * ...

  5. 如何使用Camtasia给视频或者图片调色

    喜欢摄影过着做视频的朋友一定知道,一张好看的照片或者一段精美视频的构成因素很多,取景本身肯定是个很重要的条件,相机的素质是非常重要的硬件条件,接下来的就是后期的编辑和处理了,而在后期处理过程中调色就显 ...

  6. And Or IN Not操作符

    再sql中And比or运算符优先级要更高,比如说  条件1 Or 条件2 And 条件3     如果先执行or,就是1or2   再and3 但是实际上是  2and3 再or 1,所以如果想要 1 ...

  7. 【模版 Luogu P3808/P3796/P5357】AC自动机(简论)

    浙江集训Day9,没有出任何实质性成果,只好把昨天打完的板子记一下. 该博客基于luogu的三道模版题.只有一个大致的讲解,主要提供代码给自己参考. ------------------------- ...

  8. 【数据结构模版】可持久化线段树 && 主席树

    浙江集训Day4,从早8:00懵B到晚21:00,只搞懂了可持久化线段树以及主席树的板子.今天只能记个大概,以后详细完善讲解. 可持久化线段树指的是一种基于线段树的可回溯历史状态的数据结构.我们想要保 ...

  9. LeetCode周赛#204 题解

    1566. 重复至少 K 次且长度为 M 的模式 #模拟 题目链接 题意 给定正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式. 模式 是由一个或多个值组成的子数组(连续的 ...

  10. 浅谈AsyncLocal,我们应该知道的那些事儿

    前言 最近查看有关框架源码,发现AsyncLocal这玩意水还挺深,于是花了一点功夫去研究,同时对比ThreadLocal说明二者区别以及在何时场景下使用AsyncLocal或ThreadLocal. ...