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. WIN10—更改电脑桌面路径

    电脑默认的桌面路径一般都在C盘,而我们又特别喜欢把文件都放在桌面,因为桌面既方便又好找.可时间久了,桌面文件会越来越多,C盘空间会越来越小,会拖慢系统速度.怎么把系统桌面路径设置在非C盘呢?本期教程将 ...

  2. FL Studio CPU面板讲解

    在FL Studio中,其CPU面板主要是由CPU使用表.内存使用表和复音数这几个部分组成的.这些对刚接触这款音乐制作软件的同学来说是非常陌生的吧!因为不知道这些是什么,主要的作用是什么.所以小编这里 ...

  3. 换系统之后为什么iMindMap会提示“许可证使用的次数过多”

    iMindMap是一款十分受欢迎的思维导图软件,随着12版本的上线,iMindMap新增了很多新用户,最近小编发现有不少新用户在群里反映:"为什么购买iMindMap时说可以支持换机,但是在 ...

  4. Java蓝桥杯——排序练习:选美大赛

    选美大赛 在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低.当半决决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次 ...

  5. 【操作系统】银行家算法实现(C语言)

    [操作系统]银行家算法实现(C语言) 注意:本人编码水平很菜.算是自己的一个总结.可能会有我还没有发现的bug.如果有人发现后可以指出,不胜感激. 1.银行家算法: 我们可以把操作系统看作是银行家,操 ...

  6. C#中From窗体判断提示框是否

    int ret(变量名1) = command.ExecuteNonQuery(); if (ret(变量名1) > 0)//判断变量名是否大于0 { DialogResult dr(变量名2) ...

  7. rest-framework 分页器

    一 简单分页(查看第n页,每页显示n条) from rest_framework.pagination import PageNumberPagination # 一 基本使用:url=url=htt ...

  8. 硬RAID和软RAID

    RAID简介: RAID是 Redundant Array of Independent Disks的简写,意为独立磁盘冗余阵列,简称磁盘阵列.基本思想是把多个相对便宜的硬盘结合起来,称为一个磁盘阵列 ...

  9. django(django学习) 两张表创建 插入数据

      pycharm中直接创建django项目 输入创建项目名(如first_django) 在此输入应用名(如g_tu) 此为项目总目录 将first_django中settings.py中第58行修 ...

  10. 使用Flutter重构斗鱼APP

    Github源码地址:https://github.com/yukilzw/dy_flutter flutter重构的斗鱼直播APP 首页.娱乐为Material组件开发:直播间.鱼吧为纯自定义编写 ...