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. IDEA “Cannot resolve symbol” 解决办法

    IDEA 无法识别同一个 package 里的其他类,将其显示为红色,但是 compile 没有问题.鼠标放上去后显示 "Cannot resolve symbol XXX",重启 ...

  2. 消灭又臭又长的if-else

    背景 由于目前工作岗位的原因,项目还是09年建立的,历史遗留问题也比较多,加上开发规范并不是很完善,项目中有的单个方法达到成百上千行,if-else更是连续写十几个也不累. 作为强迫症真的受不了,另一 ...

  3. 在linux系统中通过fw_printenv查看和设置u-boot中的环境变量

    uboot下可以通过命令访问(printenv)和修改环境变量(setenv),但是如果需要在Linux系统下访问这些数据该怎么办呢?其实uboot早就帮我们想好了.  1.编译fw_printenv ...

  4. 思维导图软件iMindMap制作技巧有哪些

    iMindMap11是iMindMap全新的版本.它可以提供给我们更好的灵活性以便我们将我们的思维进行可视化,并进一步的呈现和开发出属于自己的想法以及思维方式.在iMindMap中我们可以利用思维导图 ...

  5. Java基础教程——包装类

    Java出道之时,自诩为"纯面向对象的语言",意思是之前的所谓"面向对象语言"不纯. 但是,有人指责Java也不纯--8种基本类型并非类类型.为此,Java为他 ...

  6. redis 做分布式锁

    ok 我们从最基础的一步步来 加锁: 1.setNx没有expire,拿锁线程挂掉后,死锁 2.setNx然后exipre分两步做,setNx后redis宕机,或者线程挂掉,死锁 3.SETNX re ...

  7. 如何有效恢复误删的HDFS文件

    HDFS是大数据领域比较知名的分布式存储系统,作为大数据相关从业人员,每天处理HDFS上的文件数据是常规操作.这就容易带来一个问题,实际操作中对重要数据文件的误删,那么如何恢复这些文件,就显得尤为重要 ...

  8. LeetCode 033 Search in Rotated Sorted Array

    题目要求:Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you b ...

  9. 【刷题笔记】DP优化-状压

    因为篇幅太长翻着麻烦,计划把DP拆成几个小专题,这里原文只留下状压,其他请至后续博文. 状态压缩优化 所谓状态压缩,就是将原本需要很多很多维来描述,甚至暴力根本描述不清的状态压缩成一维来描述. 时间复 ...

  10. 最佳置换算法OPT

    原文链接:https://www.jianshu.com/p/544ee20e307c