mycat配置文件mysql_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

参考资料:《开源数据库中间件MyCat实战笔记》

快速入手通道:发送简信“MyCat资料”免费获取

二、user 标签

123456

ITCAST

true

1000

0

user标签主要用于定义登录MyCat的用户和权限 :

: name 属性用于声明用户名 ;

123456 : 指定该用户名访问MyCat的密码;

ITCAST : 能够访问的逻辑库, 多个的话, 使用 "," 分割

true : 是否只读

11111 : 指定前端的整体连接数量 , 0或不设置表示不限制

0 : 是否对密码加密默认 0 否 , 1是

java -cp Mycat-server-1.6.7.3-release.jar io.mycat.util.DecryptUtil 0:root:123456

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

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

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

三、firewall 标签

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

false

黑名单拦截明细配置:

配置项

缺省值

描述

selelctAllow

true

是否允许执行 SELECT 语句

selectAllColumnAllow

true

是否允许执行 SELECT * FROM T 这样的语句。如果设置为 false,不允许执行 select * fromt,但可以 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 SQLParser 在某些场景不能覆盖所有的SQL 语法,出现解析 SQL 出错,可以临时把这个选项设置为 false,同时把 SQL 反馈给Druid 的开发者。

conditionOpXorAllow

false

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

conditionOpBitwseAllow

true

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

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、DELETE、UPDATE、INSERT、MERGE 中作为"被修改表"出现

参考资料:《开源数据库中间件MyCat实战笔记》

快速入手通道:发送简信“MyCat资料”免费获取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值