mycat-server.xml文件-配置参数-详细解释

system 标签

属性

取值

含义

charset

utf8

设置Mycat的字符集 , 字符集需要与MySQL字符集保持一致

 

nonePasswordLogin

 

0 , 1

0为需要密码登陆、 1为不需要密码登陆  ,默认为0
设置为
1则需要指定默认账户

useHandshakeV10

0 , 1

使用该选项主要的目的是为了能够兼容高版本的jdbc驱动 , 是否采用HandshakeV10Packet来与client进行通 , 1: , 0:

 

 

useSqlStat

 

 

0 , 1

开启SQL实时统计, 1 为开启 , 0 为关闭 ;
开启之后, MyCat会自动统计SQL语句的执行 情况 ; mysql -h 127.0.0.1 -P 9066 -u root -p
查看MyCat执行的SQL, 执行效率比较低的SQL , SQL的整体执行情况、读写比例等 ;
show @@sql ; show @@sql.slow ; show @@sql.sum ;

 

useGlobleTableCheck

0 , 1

是否开启全局表的一致性检测。 1为开启   , 0关闭  。

sqlExecuteTimeout

1000

SQL语句执行的超时时间  , 单位为  s ;


sequnceHandlerType


0 , 1 ,2

用来指定Mycat全局序列类型 0 为本地文 1 为数据库方式 2 为时间戳列方式
认使用本地文件方式 ,文件方式主要用于测试

sequnceHandlerPattern

正则表达式

必须带有MYCATSEQ或者 mycatseq 进入序列匹配流程  注意MYCATSEQ_有空格的情况

subqueryRelationshipCheck

true , false

子查询中存在关联查询的情况下 ,检查关联字段中是否有分片字段  .默认  false

useCompression

0 , 1

开启mysql压缩协议  , 0 : 关闭 , 1 : 开启

fakeMySQLVersion

5 . 5 , 5 . 6

设置模拟的MySQL版本号

 

属性

取值

含义

 

defaultSqlParser

 

由于MyCat的最初版本使用了FoundationDB的SQL解析器 ,
MyCat1 . 3后增加了Druid
析器 , 所以要设置defaultSqlParser属性来指定默认的解析器;
解析器有两个  :
druidparser   fdbparser , MyCat1 . 4之后 ,默认是druidparser ,

fdbparser已经废除了

 

processors

 

1 ,2 . . . .

指定系统可用的线程数量 , 默认值为CPU核心

x 每个核心运行线程数量; processors 影响processorBufferPool ,processorBufferLocalPercent ,processorExecutor属性 ,
所有 , 在性能调
优时 , 可以适当地修改processors

 

processorBufferChunk

 

指定每次分配Socket Direct Buffer
默认
值为4096字节 , 也会影响BufferPool长度 ,

如果一次性获取字节过多而导致buffer不够 , 则会出现警告 , 可以调大该值


processorExecutor

 

指定NIOProcessor上共享businessExecutor固定线程池的大小;

MyCat把异步任务交给  businessExecutor线程池中 , 在新版本的MyCat中这个连接池使用频次不高 , 可以适当地把该值调小

packetHeaderSize

 

指定MySQL协议中的报文头长度 , 默认4个字节

maxPacketSize

 

指定MySQL协议可以携带的数据最大大小 , 认值为16M

idleTimeout

30

指定连接的空闲时间的超时长度;如果超时 ,关闭资源并回收 , 默认30分钟

属性

取值

含义

 

 

 

txIsolation

 

 

 

1 ,2 , 3 , 4

初始化前端连接的事务隔离级别 ,默认为

REPEATED_READ , 对应数字为3

READ UNCOMMITED=1;

READ COMMITTED=2;

REPEATED READ=3;

SERIALIZABLE=4;

sqlExecuteTimeout

300

执行SQL的超时时间 , 如果SQL语句执行超时 ,将关闭连接; 默认300;

serverPort

8066

定义MyCat的使用端口 , 默认8066

managerPort

9066

定义MyCat的管理端口 , 默认9066

user 标签

<!-- user标签主要用于定义登录MyCat的用户和权限 -->
<!-- name 属性用于声明用户名; -->
<user name="root" defaultAccount="true">
    <!-- 指定该用户名访问MyCat的密码 -->
    <property name="password">123456</property>
    <!-- 能够访问的逻辑库 , 多个的话 , 使用  "," 分割 -->
    <property name="schemas">ITCAST</property>
    <!-- 是否只读 -->
    <property name="readOnly">true</property>
    <!-- 指定前端的整体连接数量  , 0或不设置表示不限制 -->
    <property name="benchmark">1000</property>
    <!-- 是否对密码加密默认  0 否  , 1是 -->
    <!-- java -cp Mycat-server-1.6.7.3-release.jar io.mycat.util.DecryptUtil 0:root:123456 -->
    <property name="usingDecrypt">0</property>
    <!-- 对用户的  schema 及  下级的  table 进行精细化的  DML 权限控制 -->
    <privileges check="false">
        <schema name="TESTDB" dml="0110" >
            <table name="tb01" dml="0000"></table>
            <table name="tb02" dml="1111"></table>
        </schema>
    </privileges>
</user>

<privileges check="false">

A. 对用户的  schema   下级的  table 进行精细化的  DML 权限控制;

B. privileges 节点中的 check 属性是用 于标识是否开启 DML 权限检查, 默认 false 标识不检查,当然 privileges 节点不配置,等同 check=false,
由于 Mycat 一个用户的schemas 属性可配置多个 schema ,所以 privileges 的下级节点 schema 节点同样 可配置多个,对多库多表进行细粒度的 DML 权限控制;

C. 权限修饰符四位数字 (0000 - 1111) 对应的操作是  IUSD ( 增,改,查,删  ) 同时配置了 库跟表的权限,就近原则。以表权限为准。


firewall 标签

firewall标签用来定义防火墙firewallwhitehost标签用来定义  IP白名单   blacklist来定义  SQL黑名单

<firewall>
    <!-- 白名单配置 -->
    <whitehost>
        <host user="root" host="127.0.0.1"></host>
    </whitehost>
    <!-- 黑名单配置 -->
    <blacklist check="true">
        <property name="selelctAllow">false</property>
    </blacklist>
</firewall>

黑名单拦截明细配置 :

配置项

缺省值

描述

selelctAllow

true

是否允许执行  SELECT 语句

selectAllColumnAllow

true

是否允许执行  SELECT * FROM T 这样的 语句。
如果设置为
  false ,不允许执行      select * from t ,但可以select *   from (select id, name from t) a
这个选项是防御程序通过调用  select *
获得数据表的结构信息。

selectIntoAllow

true

SELECT 查询中是否允许  INTO 字句

配置项

缺省值

描述

deleteAllow

true

是否允许执行  DELETE 语句

updateAllow

true

是否允许执行  UPDATE 语句

insertAllow

true

是否允许执行  INSERT 语句

replaceAllow

true

是否允许执行  REPLACE 语句

mergeAllow

true

是否允许执行  MERGE 语句,这个只在Oracle 中有用

callAllow

true

是否允许通过  jdbc   call 语法调用存储过程

setAllow

true

是否允许使用  SET 语法

truncateAllow

true

truncate 语句是危险,缺省打开,若需要自行关闭

createTableAllow

true

是否允许创建表

alterTableAllow

true

是否允许执行  Alter Table 语句

dropTableAllow

true

是否允许修改表

commentAllow

false

是否允许语句中存在注释,Oracle 的用户不用担心,Wall 能够识别  hints和注释的区别

noneBaseStatementAllow

false

是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽  DDL

multiStatementAllow

false

是否允许一次执行多条语句,缺省关闭

useAllow

true

是否允许执行  mysql   use 语句,缺省打开

describeAllow

true

是否允许执行  mysql   describe 句,缺省打开

showAllow

true

是否允许执行  mysql   show 语句,缺省打开

commitAllow

true

是否允许执行  commit 操作

配置项

缺省值

描述

rollbackAllow

true

是否允许执行  roll back 操作

拦截配置-永真条件

 

 

selectWhereAlwayTrueCheck

true

检查  SELECT 语句的  WHERE 子句是否是 一个永真条件

selectHavingAlwayTrueCheck

true

检查 SELECT 语句的 HAVING 子句是否是 一个永真条件

 

deleteWhereAlwayTrueCheck

true

检查  DELETE 语句的  WHERE 子句是否是 一个永真条件

deleteWhereNoneCheck

false

检查  DELETE 语句是否无  where 条件, 这是有风险的,但不是  SQL 注入类型的风

updateWhereAlayTrueCheck

true

检查  UPDATE 语句的  WHERE 子句是否是 一个永真条件

updateWhereNoneCheck

false

检查  UPDATE 语句是否无  where 条件, 这是有风险的,但不是SQL 注入类型的风险

conditionAndAlwayTrueAllow

false

检查查询条件 (WHERE/HAVING 子句)中是 否包含  AND 永真条件

conditionAndAlwayFalseAllow

false

检查查询条件 (WHERE/HAVING 子句)中是 否包含  AND 永假条件

conditionLikeTrueAllow

true

检查查询条件 (WHERE/HAVING 子句)中是 否包含  LIKE 永真条件

其他拦截配置

 

 

selectIntoOutfileAllow

false

SELECT ... INTO OUTFILE 是否允许, 这个是  mysql 注入攻击的常见手段,缺省 是禁止的

selectUnionCheck

true

检测  SELECT UNION

selectMinusCheck

true

检测  SELECT MINUS

selectExceptCheck

true

检测  SELECT EXCEPT

配置项

缺省值

描述

selectIntersectCheck

true

检测  SELECT INTERSECT

mustParameterized

false

是否必须参数化,如果为  True ,则不允许类似  WHERE ID = 1 这种不参数化的SQL


strictSyntaxCheck

true

是否进行严格的语法检测,Druid SQL Parser 在某些场景不能覆盖所有的SQL 法,出现解析  SQL 出错,
可以临时把这个
选项设置为  false ,同时把  SQL 反馈给Druid 的开发者。

conditionOpXorAllow

false

查询条件中是否允许有  XOR 条件。XOR 常用,很难判断永真或者永假,缺省不允许。

conditionOpBitwseAllow

true

查询条件中是否允许有"&" "~" " |" "^"运算符。

conditionDoubleConstAllow

false

查询条件中是否允许连续两个常量运算表达

 

minusAllow

 

true

是否允许  SELECT * FROM A MINUS

SELECT * FROM B 这样的语句

 

intersectAllow

 

true

是否允许  SELECT * FROM A INTERSECT

SELECT * FROM B 这样的语句

constArithmeticAllow

true

拦截常量运算的条件,比如说  WHERE FID= 3 - 1 ,其中"3 - 1"是常量运算表达式。

limitZeroAllow

false

是否允许  limit 0 这样的语句

禁用对象检测配置

 

 

tableCheck

true

检测是否使用了禁用的表

schemaCheck

true

检测是否使用了禁用的  Schema

functionCheck

true

检测是否使用了禁用的函数

配置项

缺省值

描述

objectCheck

true

检测是否使用了禁用对对象

variantCheck

true

检测是否使用了禁用的变量

readOnlyTables

指定的表只读,不能够在  SELECT INTO DELETEUPDATE INSERTMERGE 中作为"被修改表"出现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持prepare预编译指令(1.6) 支持非堆内存(Direct Memory)聚合计算(1.6) 支持PostgreSQL的native协议(1.6) 支持mysql和oracle存储过程,out参数、多结果集返回(1.6) 支持zookeeper协调主从切换、zk序列、配置zk化(1.6) 支持库内分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值