Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_Mycat

 

 

目录

Mycat安全设置_user标签权限控制

Mycat安全设置_privileges标签权限控制

Mycat安全设置_SQL拦截白名单

 Mycat安全设置_SQL拦截黑名单

Mycat性能监控_Mycat-web安装 

Mycat性能优化 

Mycat实施指南


Mycat安全设置_user标签权限控制

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_数据库_02

目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。 

#server.xml配置文件user部分
<user name="mycat">
 <property name="password">123456</property>
 <property name="schemas">TESTDB</property>
</user>
<user name="user">
 <property name="password">user</property>
 <property name="schemas">TESTDB</property>
 <property name="readOnly">true</property>
</user>

参数:

  • name:应用连接中间件逻辑库的用户名
  • password:该用户对应的密码
  • TESTDB:应用当前连接的逻辑库中所对应的逻辑表。
  • schemas 中可以配置一个或多个
  • readOnly:应用连接中间件逻辑库所具有的权限。true 为只读,false 为读写都有,默认为 false

测试案例 

使用user用户,权限为只读(readOnly:true),验证是否可以查 询出数据,验证是否可以写入数据。

1、用user用户登录,运行命令如下:

mysql -uuser -puser -h 192.168.140.128 -P8066

2、切换到TESTDB数据库,查询orders表数据,如下:

use TESTDB
select * from orders;

3、执行插入数据sql

insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);

4、可看到运行结果,插入失败,只有只读权限

mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
ERROR 1495 (HY000): User readonly

实时学习反馈

1.Mycat技术中如何设置用户只读操作___。

A Only="true"

B readOnly="false"

C read="true"

D readOnly="true"

Mycat安全设置_privileges标签权限控制

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_mysql_03

 在 user 标签下的 privileges 标签可以对逻辑库(schema)、表 (table)进行精细化的 DML 权限控制。

#server.xml配置文件privileges部分
#配置orders表没有增删改查权限
<user name="mycat">
 <property name="password">123456</property>
 <property name="schemas">TESTDB</property>
 <!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!--<table name="tb02" dml="1111"></table>-->
</schema>
</privileges>
</user>

 配置说明

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_Mycat_04

测试案例 

使用mycat用户,privileges配置orders表权限为禁止增删改查 (dml="0000") 验证是否可以查询出数据,验证是否可以写入数据。

1、重启mycat,用mycat用户登录,运行命令如下:

mysql -umycat -p123456 -h 192.168.66.101 -P8066

2、切换到TESTDB数据库,查询orders表数据,如下:

use TESTDB
select * from orders;

3、禁止该用户查询数据

mysql> use TESTDB
Database changed

mysql> select* from orders;
ERROR 3012(HY000): The statement DML
privilege check is not passed,reject for user 'mycat'

4、执行插入数据sql,如下

insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);

5、可看到运行结果,禁止该用户插入数据

mysql> insert into orders(id,order_type,customer_id,amount) 
values(8,101,101,10000)ERROR 3012 (HY000):
The statement DMLprivilege check is not
passed,reject for use

实时学习反馈

1.Mycat技术中如何细粒度控制对用户进行权限控制___。

A user

B server

C privileges

D rule

2. Mycat技术中如何设置用户对表的操作只有添加权限____。

A dml="0000"

B dml="1000"

C dml="1110"

D dml="1111"

Mycat安全设置_SQL拦截白名单

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_mysql_05

 firewall标签用来定义防火墙;firewall下whitehost标签用来定义IP 白名单 ,blacklist 用来定义SQL 黑名单。

白名单

可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问。

#设置白名单
#server.xml配置文件firewall标签
#配置只有192.168.66.101主机可以通过mycat用户访问
<firewall>
 <whitehost>
 <host host="192.168.66.102" user="mycat"/>
 </whitehost>
</firewall>

 实时学习反馈

1.Myat技术中如何添加白名单___。

A server下whitehost 标签

B rule下whitehost 标签

C schema下whitehost 标签

D firewall下whitehost 标签

 Mycat安全设置_SQL拦截黑名单

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_Mycat_06

可以通过设置黑名单,实现Mycat对具体SQL操作的拦截,如增删改查等操作的拦截。 

#设置黑名单
#server.xml配置文件firewall标签
#配置禁止mycat用户进行删除操作
<firewall>
 <whitehost>
 <host host="192.168.140.128" user="mycat"/>
 </whitehost>
 <blacklist check="true">
 <property name="deleteAllow">false</property>
</blacklist>
</firewall>

黑名单 SQL 拦截功能列表

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_Mycat_07

 

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_docker_08

实时学习反馈

1.Myat技术中如何设置用户不能执行删除语句___。

A selectAllow="false"

B alterTableAllow="false"

C useAllow="false"

D deleteAllow="false" 

Mycat性能监控_Mycat-web安装 

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_Mycat_09

Mycat-web是Mycat可视化运维的管理和监控平台。Mycat-web引 入了 ZooKeeper作为配置中心,可以管理多个节点。 

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_数据库_10

 

注意: Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和 内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分 析慢SQL和高频 SQL等。为优化SQL提供依据。 

Docker安装Zookeeper 

docker run --name myzk -d -p 2181:2181 zookeeper

解压Mycat-web

tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz -C /usr/local

设置Zookeeper的地址

在/usr/local/mycat-web/mycat-web/WEB-INF/classes/mycat.properties文件中配置

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_数据库_11

zookeeper=192.168.66.101:2181

 进入mycat-web的目录下运行启动命令

cd /usr/local/mycat-web/

./start.sh &

查看服务已经启动

lsof -i:8082

通过地址访问服务

http://192.168.66.101:8082/mycat/

Mycat性能优化 

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_安全_12

JVM调优 

Java堆内存和直接内存映射,建议堆内存大小适度,直接映射的内存尽可能大,总计占用操作系统50%~67%的内存。

示例

下面以16GB内存的服务器为例,Mycat堆内存为4GB,直接内存映 射为6GB,

修改文件 /usr/local/mycat/bin/startup_nowrap.sh

JAVA_OPTS="-server -Xms4G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"

 Mycat调优

MyCAT所有的调优参数都可以才server.xml中找到。

主要讨论两个内容:

1、processors数值的影响范围。

<system>
   <property name="processors">1</property>
    <property name="processorExecutor">16</property>
</system>

参数:

  • processors:CPU核心数越多,可以越大,当发现系统CPU压力很小的情况下,可以适当调 大此参数,如4核心的4CPU,可以设置为16,24核的可以最大设置为128
  • processorExecutor:每个processor的线程池大小,建议可以是16-64,根据系统能力来测 试和确定。

设置连接数 

<dataHost name="localhostl" maxCon="500" mincon="10" balance="O"
dbType="MySQL"dbDriver="native" banlance="0">

注意: 最大连接池maxCon的值可以改为1000~2000,同一个MySQL 实例上的所有dataNode节点共享本dataHost上的所有物理连接。

实时学习反馈

1.Mycat技术中使用JVM进行调优映射的内存,总计占用操作系统 ___的内存。

A 50%~67%

B 60%~70%

C 70%~80%

D 80%~90% 

Mycat实施指南

Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)_Mycat_13

分表分库原则

原则一:能不分就不分;

原则二:分片数量尽量少;

原则三:分片规则需要慎重选择;

原则四:尽量不要在一个事务中的SQL跨越多个分片;

原则五:查询条件尽量优化; 

注意: 这里特别强调一下分片规则的选择问题,如果某个表的数据有明显的时间特征,比如订单、交易记录等,则他们通常比较合 适用时间范围分片,因为具有时效性的数据。 

数据拆分原则

  • 达到一定数量级才拆分(800 万);
  • 不到 800 万但跟大表(超 800 万的表)有关联查询的表也要拆分,在此称为大表关联表;
  • 小于100万的使用全局表;
  • 大于100万小于800 万跟大表使用同样的拆分策略。 

实时学习反馈

1.Myat技术分表分库最重要得原则___。

A 能不分就不分

B 分片数量尽量少

C 分片规则需要慎重选择

D 查询条件尽量优化 

2.Myat技术分表分库达到____数量级才拆分。

A 700万

B 800万

C 900万

D 1000万