在2.18.12.0之后的版本中server.xml在文件头中添加了version属性,以供运维人员区分配置创建或修改的版本(xml配置version对照表)
verison字段不匹配时,启动和dryrun会给出NOTICE的提示,但不会影响功能
| 模块 | 配置名称  | 
配置内容  | 
默认值/单位  | 
详细作用原理或应用  | 
配置范围  | 
范围  | 
版本变更 | 
| 后端连接socket 配置 | backSocketSoRcvbuf  | 
后端套接字接收缓冲区大小  | 
1024×1024×4  | 
在创建后端管道的时候作为buffer大小使用  | 
正整数  | 
实例  | 
-  | 
backSocketSoSndbuf  | 
后端套接字发送缓冲区大小  | 
1024×1024  | 
在创建后端管道的时候作为buffer大小使用  | 
正整数  | 
实例  | 
-  | 
|
backSocketNoDelay  | 
后端Nagle算法是否禁用  | 
默认1/单位无  | 
在创建后端管道的时候禁用延迟加载,会影响网络包的情况 详见相关资料  | 
1-是, 0-否  | 
实例  | 
-  | 
|
| 前端连接socket 配置 | frontSocketSoRcvbuf  | 
前端套接字接受缓冲区大小  | 
10241X1024  | 
在读取网络传输信息的时候作为每次缓冲的大小使用  | 
正整数  | 
实例  | 
-  | 
frontSocketSoSndbuf  | 
前端套接字发送缓冲区大小  | 
1024×1024×4  | 
在创建前端管道的时候作为buffer大小使用  | 
正整数  | 
实例  | 
-  | 
|
frontSocketNoDelay  | 
前端Nagle算法是否禁用  | 
默认1  | 
在创建前端管道的时候禁用延迟加载 相关资料  | 
1-是,0-否  | 
实例  | 
-  | 
|
| Session预留内存配置 | orderMemSize  | 
session中的复杂查询order预留内存  | 
默认4,单位M  | 
在session初始化的时候创建内存分配对象,在复杂查询order by的时候使用到  | 
正整数  | 
实例  | 
2.18.02.0引入  | 
otherMemSize  | 
session中的复杂查询其他预留内存  | 
默认4,单位M  | 
在session初始化的时候创建内存分配对象,在复杂查询subQuery以及distinctd的时候使用  | 
正整数  | 
实例  | 
2.18.02.0引入  | 
|
joinMemSize  | 
session中的复杂查询join预留内存  | 
默认4,单位M  | 
在session初始化的时候创建内存分配对象,在复杂查询join使用到  | 
正整数  | 
实例  | 
2.18.02.0引入  | 
|
| 堆外内存管理 | bufferPoolChunkSize  | 
内存池中分配的最小粒度 | 默认4096  | 
内存池中分配的最小粒度,需要的大小除以此粒度,向上取整  | 
  | 
实例  | 
-  | 
bufferPoolPageNumber  | 
预分配内存池页数量  | 
默认 0.8 × MaxDirectMemorySize / bufferPoolPageSize(default 2M)  | 
在初始化的时候通过和bufferPoolPageSize的相乘确定缓冲池最后的大小,内存配置建议见1.4_wrapper.conf  | 
  | 
实例  | 
-  | 
|
bufferPoolPageSize  | 
预分配内存池页大小  | 
默认512×1024×4  | 
在初始化的时候通过和bufferPoolPageNumbe的相乘确定缓冲池最后的大小, 注意:虚拟机参数MaxDirectMemorySize(见1.4_wrapper.conf)需要大于bufferPoolPageNumber * bufferPoolPageSize,否则会触发OOM  | 
  | 
实例  | 
-  | 
|
mappedFileSize  | 
文件映射区单个文件最大体积  | 
默认1024×1024×64  | 
在初始化的时候此参数确定文件映射区最大容量,参见内存管理章节  | 
  | 
实例  | 
2.17.04.0引入  | 
|
 暂时废弃,待重审  | 
处理跨分配结果合并是不是采用Direct Memory  | 
默认1  | 
在初始化服务的时候会根据此配置初始化一个内存管理对象,并检查剩余内存的大小 并在执行中影响内存请求时请求到的内存的管理方式,在合并多节点返回数据使用  | 
  | 
实例  | 
2.17.11.0废弃  | 
|
| 
 
 暂时废弃,待重审  | 
每页内存的大小  | 
默认1m  | 
影响在程序中申请内存的最小单位,在多节点结果合并使用  | 
  | 
实例  | 
2.17.11.0废弃  | 
|
| 
 
 暂时废弃,待重审  | 
写磁盘缓存大小  | 
默认 2K  | 
在合并结果集内存不够用的时候通过写磁盘来进行缓冲, 这个时候spillsFileBufferSize就是写磁盘流buffer的大小  | 
  | 
实例  | 
2.17.11.0废弃  | 
|
| 
 
 暂时废弃,待重审  | 
写磁盘目录 | 默认相对路径/sortDirs | 在合并结果集内存不够用的时候写磁盘 | 
  | 
实例  | 
2.17.11.0废弃  | 
|
| 
 统计管理  | 
bufferUsagePercent  | 
是否清理大结果集阈值  | 
默认80, 单位百分号  | 
定时任务resultSetMapClear使用,周期clearBigSqLResultSetMapMs,定时清理统计的结果集,当定时任务执行时发现结果集统计超过阀值,触发清理结果集的行为  | 
0-100  | 
实例  | 
-  | 
useSqlStat  | 
是否启用SQL统计  | 
默认1/单位无 
  | 
启用之后会对于下发的查询进行SQL的统计,分别按照用户、表格、查询条件进行存放在内存中 并且开启之后会随之开启recycleSqlStat定时任务以固定5秒一次的周期回收SQL统计的结果  | 
1-是0-否  | 
实例  | 
-  | 
|
clearBigSqLResultSetMapMs  | 
定期大结果清理时间  | 
默认600×1000  | 
定时任务resultSetMapClear的执行周期,定时清理记录的查询结果集 
  | 
正整数  | 
实例  | 
-  | 
|
| sqlRecordCount | 慢查询记录阈值 | 默认10 ,单位条  | 
在定时任务recycleSqlStat中会进行sql记录的清理,当发现记录的慢查询SQL数量超过阀值时,会仅保留阀值数量个元素 | 正整数  | 
实例  | 
-  | 
|
| maxResultSet | 大结果集阈值 | 默认512×1024  ,单位字节  | 
当查询的结果集超过这个阀值时,查询的SQL和查询结果集的大小才会被记录到结果集统计里面 | 正整数  | 
实例  | 
-  | 
|
useCostTimeStat  | 
是否启用查询耗时统计  | 
默认0/单位无  | 
开启之后以一定的比例统计查询过程中的各个步骤的耗时情况,可以使用BTraceCostTime.jav进行观测,也可在管理端使用show @@cost_time观察  | 
1-是0-否  | 
实例  | 
2.18.02.0引入  | 
|
maxCostStatSize  | 
  | 
默认100  | 
show @@cost_time结果最近保留的行数  | 
  | 
实例  | 
2.18.02.0引入  | 
|
costSamplePercent  | 
查询采样百分比  | 
默认1/单位%  | 
在耗时采样统计中实际采样百分比为costSamplePercent  | 
  | 
实例  | 
2.18.02.0引入  | 
|
useThreadUsageStat  | 
开启线程使用率统计  | 
默认0/单位无  | 
开启之后能在管理端通过管理命令show @@thread_used查看各个部分的线程使用情况  | 
1-是0-否  | 
实例  | 
2.18.02.0引入  | 
|
| 系统服务基本参数 | bindIp  | 
服务IP  | 
默认 "0.0.0.0"  | 
在服务初始化的时候作为侦听的IP  | 
有效IP地址,  | 
实例  | 
-  | 
serverPort  | 
服务端口  | 
默认8066  | 
在服务初始化的时候作为服务侦听的端口  | 
机器空闲端口  | 
实例  | 
-  | 
|
managerPort  | 
控制端口  | 
默认9066  | 
在服务初始化的时候作为控制侦听的  | 
机器空闲端口  | 
实例  | 
-  | 
|
maxCon  | 
控制最大连接数  | 
默认0  | 
默认不做限制。若maxCon大于0,建立的连接数大于maxCon之后,建立连接会失败.注意当各个用户的maxcon总和值大于此值时,以当前值为准。 全局maxCon不作用于manager用户  | 
正整数  | 
实例  | 
2.18.09.0引入  | 
|
processors  | 
NIO前端处理器的数量  | 
默认java虚拟机核数  | 
进行前端网络IO吞吐的线程数  | 
正整数  | 
实例  | 
-  | 
|
backendProcessors  | 
NIO后端处理器的数量  | 
默认java虚拟机核数  | 
进行后端网络IO吞吐的线程数  | 
正整数  | 
实例  | 
2.18.02.0引入  | 
|
fakeMySQLVersion  | 
dble模拟mysql版本号  | 
默认NULL  | 
模拟成正常的MySql版本在进行前端协议交互的时候能够使用到  | 
MYSQL版本号  | 
最好全局,实例也可  | 
-  | 
|
processorExecutor  | 
前端业务处理线程池数量  | 
默认  | 
进行前端具体业务处理的线程池大小,负责解析路由下发  | 
正整数  | 
实例  | 
-  | 
|
backendProcessorExecutor  | 
后端业务处理线程池数量  | 
默认  | 
进行后端具体业务处理的线程池大小,负责回收结果集并合并  | 
正整数  | 
实例  | 
2.18.02.0引入  | 
|
complexExecutor  | 
复杂查询后端业务线程池数量  | 
默认  | 
负责复杂查询或者子命令结果集的回收  | 
正整数  | 
实例  | 
2.18.02.0引入  | 
|
sequnceHandlerType  | 
全局序列处理器的方式  | 
默认2  | 
在初始化的时候根据这个配置选择不同的序列生成器进行加载 
 1,MySQL offset-step序列方式, sequence信息存储在数据库中 2,时间戳方式(类Snowflake), 依赖sequence_time_conf.properties 3,分布式time序列(类Snowflake) 4,分布式offset-step序列  | 
1,2,3,4  | 
全局  | 
-  | 
|
serverNodeId  | 
服务编号  | 
默认1  | 
在分布式事务的时候构造 XATXID,同组中必须不同 其形式为$ServerName$.serverNodeId.xid  | 
正整数  | 
实例  | 
-  | 
|
| serverBacklog | 前端tcp连接 backlog | 默认2048 | 前端tcp连接 backlog | 正整数  | 
实例  | 
2.17.04.0引入  | 
|
| showBinlogStatusTimeout | 拉取一致性binlog线的超时时间 | 默认60000 ,单位毫秒  | 
拉取一致性binlog线的超时时间 | 正整数  | 
全局  | 
2.17.08.0引入  | 
|
usePerformanceMode  | 
是否启用性能模式  | 
默认0/单位无  | 
开启之后Dble会大量占用CPU资源,并提供更高的性能体现,慎用  | 
1-是0-否  | 
实例  | 
2.18.02.0引入  | 
|
| 大小写敏感 | true 不敏感 ,其他值敏感  | 
在代码里面所有涉及表明判断的时候使用到,如果开启true  大小写不敏感在代码判定的时候都会转化成小写进行判定  | 
正整数  | 
全局  | 
2.17.04.0引入  | 
||
| 使用V10 | 1代表使用 ,否则不使用  | 
握手协议时使用 | 正整数  | 
全局  | 
2.17.09.0废弃  | 
||
| 功能性配置 | useCompression  | 
是否启用数据压缩  | 
默认 0否  | 
使用mysql压缩协议  | 
1 - 是 0 - 否  | 
全局  | 
-  | 
usingAIO  | 
是否启用AIO  | 
默认0  | 
在初始化服务的时候将会作为判断启用AIO或是NIO的依据  | 
1 - 是 0 - 否  | 
实例  | 
-  | 
|
useZKSwitch  | 
是否启用useZKSwitch转换  | 
默认 true  | 
是否使用ZK记录节点切换的结果,当且仅当myid.properties中的ZK配置有效时才启用,会将本地文件状态下的dnindex.properties信息保存到ZK的对应路径中使用  | 
true 是 false否  | 
全局  | 
-  | 
|
连接缺省值 
 
  | 
charset  | 
字符集  | 
utf8mb4  | 
应用于所有字符集相关的部分,包括前端连接和后端连接  | 
有效字符集  | 
全局  | 
-  | 
maxPacketSize  | 
包大小限制  | 
默认 4×1024×1024  | 
前后端管道建立的时候用作参数使用  | 
正整数  | 
全局  | 
-  | 
|
txIsolation  | 
隔离级别  | 
默认 3  | 
执行具体SQL的时候会比较前后端连接, 如果不一致将会执行session级别的事务set  | 
1-READ_UNCOMMITTED  | 
全局  | 
-  | 
|
autocommit  | 
是否自动提交  | 
默认 1,自动提交  | 
执行具体SQL的时候会比较前端配置 如果不一致将会执行session级别的事务set  | 
0/1  | 
全局  | 
2.19.11.0引入  | 
|
| 一致性检查 | checkTableConsistency  | 
表格一致性检查  | 
默认0  | 
如果值为1,那么在服务初始化的时候会启动一个定时任务,在 定时任务会检查DB是不是存在,表格是不是存在,表结构是否一致  | 
1-是,0-否  | 
实例  | 
-  | 
checkTableConsistencyPeriod  | 
表格一致性检查周期  | 
默认30×60×1000  | 
表格一致性检查周期  | 
正整数  | 
实例  | 
-  | 
|
| 心跳任务周期 | dataNodeIdleCheckPeriod  | 
后端空闲连接心跳周期  | 
默认5×60×1000  | 
后端空闲连接心跳检查,超时关闭,调整容量  | 
正整数  | 
实例  | 
-  | 
dataNodeHeartbeatPeriod  | 
数据节点心跳任务周期  | 
10X1000  | 
根据这个周期在服务初始化的时候注册心跳任务  | 
正整数  | 
实例  | 
-  | 
|
| processor内部前后端连接检查 | 
sqlExecuteTimeout  | 
后端连接执行超时时间  | 
默认 300  | 
如果超过这个时间没有完毕,就直接关闭连接  | 
正整数  | 
实例  | 
-  | 
idleTimeout  | 
(前端)连接无响应超时时间  | 
 默认 30×60 × 1000  | 
在processor定时连接检查时,发现前端连接上一次的读写距今超过阀值,会直接关闭连接  | 
正整数  | 
实例  | 
-  | 
|
processorCheckPeriod  | 
processor定时任务检查周期  | 
1000  | 
根据此配置定时的检查在processor中的前后端连接的状态  | 
正整数  | 
实例  | 
-  | 
|
| 普通事务日志相关 | recordTxn  | 
事务log记录  | 
默认0  | 
在初始化服务的时候会注册一个类,其作用就是将事务的log写到一个指定的文件中  | 
1-是,0-否  | 
实例  | 
2.17.04.0引入  | 
transactionLogBaseDir  | 
事务log目录  | 
默认当前路径/txlogs  | 
当开启日志log记录时,记录文件会被存放在对应目录下  | 
绝对路径  | 
实例  | 
-  | 
|
transactionLogBaseName  | 
事务log文件名称  | 
默认server-tx  | 
事务记录存储文件的文件名  | 
符合运行系统  | 
实例  | 
-  | 
|
| transactionRatateSize | 事务日志单个文件大小 | 默认16 ,单位M  | 
正整数  | 
实例  | 
-  | 
||
| 视图相关参数 | viewPersistenceConfBaseDir  | 
视图记录本地文件路径  | 
dble目录/viewConf  | 
用于存放视图本地记录文件的文件路径  | 
绝对路径  | 
集群配置时无意义  | 
2.17.11.0引入  | 
viewPersistenceConfBaseName  | 
视图记录本地文件名  | 
viewJson  | 
视图记录的文件文件名  | 
符合运行系统  | 
集群配置时无意义  | 
2.17.11.0引入  | 
|
| XA 事务 | xaRecoveryLogBaseDir  | 
xa的tm日志路径  | 
dble目录/tmlogs/  | 
此日志涉及到XA事务状态的记录,并且在Dble意外重启之后需要从里面获取重启之前的xa事务状态,切勿自行修改 | 绝对路径  | 
实例  | 
-  | 
| xaRecoveryLogBaseName | xa的tm日志名称 | tmlog | 符合运行系统  | 
实例  | 
-  | 
||
xaSessionCheckPeriod  | 
XA定时任务执行周期  | 
默认1000, 单位ms  | 
在server开始的时候会注册一个定时任务以此参数为执行周期 (注:定时任务必定会被注册) 如果有尝试多次没有成功提交的session在之后的定时任务会被重复提交  | 
正整数  | 
实例  | 
2.17.04.0引入  | 
|
xaLogCleanPeriod  | 
定时XAlog清除周期  | 
默认1000, 单位ms  | 
在server开始的时候会根据这个周期注册一个定时任务 (注:定时任务必定会被注册) 定时清XA log,主要是将已经回滚和提交成功的部分从记录中删除  | 
正整数  | 
实例  | 
2.17.04.0引入  | 
|
xaRetryCount  | 
后台重试XA次数  | 
默认0  | 
后台定时任务重试XA次数,0为无限重试,达到设定次数后,停止重试  | 
正整数  | 
实例  | 
2.19.03.0引入  | 
|
| cluster相关参数 | clusterHeartbeatPass | -  | 
|||||
| clusterHeartbeatUser | -  | 
||||||
| 队列大小参数 | joinQueueSize | join时,左右结点的暂存数据行数的队列大小 | 1024 | 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 | 正整数 | 实例 | 2.17.04.0引入  | 
| mergeQueueSize | merge时,左右结点的暂存数据行数的队列大小 | 1024 | 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 | 正整数 | 实例 | 2.17.04.0引入  | 
|
| orderByQueueSize | 排序时,时,左右结点的暂存数据行数的队列大小 | 1024 | 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 | 正整数 | 实例 | 2.17.04.0引入  | 
|
| 使用Nest Loop优化 | useJoinStrategy | 是否使用nest loop 优化 | 默认不使用 | 开启之后会尝试判断join两边的where来重新调整查询SQL下发的顺序 | true 开启 false 不开启  | 
实例 | 2.17.04.0引入  | 
| nestLoopConnSize | 临时表阈值 | 默认4 | 若临时表行数大于这两个值乘积,则报告错误  | 
正整数  | 
实例  | 
2.17.04.0引入  | 
|
| nestLoopRowsSize | 临时表阈值 | 默认2000 | |||||
| 慢查询日志相关配置 | enableSlowLog  | 
慢查询日志开关  | 
默认为0,关闭  | 
慢查询日志开关  | 
0或者1  | 
实例  | 
2.18.09.0 引入  | 
slowLogBaseDir  | 
慢查询日志存储文件夹  | 
dble根目录/slowlogs  | 
慢查询日志存储文件夹  | 
文件夹路径  | 
实例  | 
2.18.09.0 引入  | 
|
slowLogBaseName  | 
慢查询日志存储文件名前缀  | 
slow-query  | 
慢查询日志存储文件名前缀(后缀名是.log)  | 
合法文件名  | 
实例  | 
2.18.09.0 引入  | 
|
flushSlowLogPeriod  | 
日志刷盘周期,单位秒  | 
1  | 
日志刷盘周期,每隔这个周期,会强制将内存数据刷入磁盘  | 
正整数  | 
实例  | 
2.18.09.0 引入  | 
|
flushSlowLogSize  | 
日志刷盘条数阈值  | 
1000  | 
日志刷盘条数阈值,内存中每次写出这么多条日志,会强制刷盘1次  | 
正整数  | 
实例  | 
2.18.09.0 引入  | 
|
sqlSlowTime  | 
慢日志时间阈值,单位毫秒  | 
100  | 
慢日志时间阈值,大于此时间的查询会记录下来  | 
正整数  | 
实例  | 
2.18.09.0 引入  | 
|
| load data 相关配置 | maxCharsPerColumn  | 
每列所允许最大字符数  | 
默认为65535  | 
每行所允许最大字符数  | 
正整数  | 
实例  | 
2.19.03.0 引入  | 
maxRowSizeToFile  | 
需要持久化的最大行数  | 
默认为10000  | 
当load data的数据行数超过阈值后,会将数据保存在文件中以防OOM  | 
正整数  | 
实例  | 
2.19.03.0 引入  | 
|
| 高可用联动相关配置 | useOuterHa  | 
是否启用外部高可用联动  | 
默认为false  | 
  | 
true/false  | 
实例  | 
2.19.09.0 引入  | 
| 废弃配置 | 
  | 
缓冲池类型  | 
  | 
在服务初始化的时候根据这个值确定缓冲池的类型 0,直接缓冲块 1,6个队列缓冲 (实际1未完成,删除)  | 
2.17.04.0废弃  | 
||
  | 
启用结果集流输出,不经过合并模块  | 
默认 0  | 
有bug,无应用场景,废弃  | 
2.17.04.0废弃  | 
|||
 暂时废弃,待重审  | 
系统预留内存  | 
384M  | 
在启用useOffHeapForMerge配置的时候如果系统剩余的内存小于这个配置 ,服务将不会启动(仅在配置useOffHeapForMerge的时候有效)  | 
2.17.04.0废弃  | 
|||
  | 
SQL拦截器  | 
默认 DefaultSqlInterceptor  | 
拦截SQL,进行统计等处理,默认实现极影响性能,废弃  | 
2.17.04.0废弃  | 
|||
  | 
类加载重载检查时间  | 
60  | 
Catlet 类加载器(废弃)  | 
2.17.04.0废弃  | 
|||
  | 
SQL解析器sqllogs  | 
默认 ./logs/sql.txt  | 
在每个SQL解析的之前都会通过写文件进行记录(废弃)  | 
2.17.04.0废弃  | 
|||
  | 
默认SQL解析器  | 
默认druidparser  | 
解析器不支持其他,废弃  | 
2.17.04.0废弃  | 
|||
  | 
分布式事务开关  | 
-  | 
0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志  | 
2.17.04.0废弃  | 
| 
 配置名称  | 
 配置内容  | 
是否能配多个元素 | 
 可选项/默认值  | 
 详细作用原理或应用  | 
 全局/实例属性  | 
| 
 name  | 
 用户名  | 
否 | 
 符合mysql用户名规范的字符串  | 
 用户唯一标识,用于登录校验  | 
 实例  | 
| 
 manager  | 
 是否为manager用户  | 
否 | 
 true-是 false-否 默认否  | 
 是否是manager用户,若一个用户是manager用户,则只能登录管理端口,并且只能执行管理端命令,依旧受到白名单制约  | 
 实例  | 
| 
 password  | 
 密码  | 
否 | 
 
  | 
 用户密码校验  | 
 实例  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
||
| 
 maxCon  | 
 负载限制,默认不做限制  | 
否 | 
 
  | 
 用户的连接数限制,会在用户验证登录的时候进行校验,默认0,表示不做限制。 特别的,当系统级别的maxCon已经到达上限之后,本用户的maxCon会失效,不能新建连接  | 
 实例  | 
| 
 usingDecrypt  | 
 是否启用加密  | 
否 | 
 默认 0否  | 
 启用加密password项配置通过执行脚本encrypt.sh 0:{user}:{password}的结果进行配置  | 
 实例  | 
| 
 配置名称  | 
 配置内容  | 
是否能配多个元素 | 
 可选项/默认值  | 
 详细作用原理或应用  | 
 全局/实例属性  | 
| 
 name  | 
 用户名  | 
否 | 
 符合mysql用户名规范的字符串  | 
 用户唯一标识,用于登录校验  | 
 实例  | 
| 
 password  | 
 密码  | 
否 | 
 
  | 
 用户密码校验  | 
 实例  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
||
| 
 maxCon  | 
 负载限制,默认不做限制  | 
否 | 
 
  | 
 用户的连接数限制,会在用户验证登录的时候进行校验,默认0,表示不做限制。 特别的,当系统级别的maxCon已经到达上限之后,本用户的maxCon会失效,不能新建连接  | 
 实例  | 
| 
 readOnly  | 
 用户只读标志  | 
否 | 
 
  | 
 在执行SQL的时候进行判断,如果是readonly不执行查询以外的SQL  | 
 实例  | 
| 
 schemas  | 
 用户对应使用的schema.xml中的方案  | 
否 | 
 
  | 
 用户有权限的schemas 列表,通过,进行分割(db1,db2,db3)  | 
 实例  | 
| 
 usingDecrypt  | 
 是否启用加密  | 
否 | 
 默认 0否  | 
 启用加密password项配置通过执行脚本encrypt.sh 0:{user}:{password}的结果进行配置  | 
 实例  | 
| 
 privileges  | 
 权限  | 
否 | 
 
  | 
 详情见user.privileges  | 
 实例  | 
配置名称  | 
配置内容  | 
多节点 | 可选项/默认值  | 
详细作用原理或应用  | 
全局/实例  | 
check  | 
是否需要检查  | 
否 | 默认否 true-是 false-否  | 
如果在进行DML解析并进行用户权限检查的时候,配置为是会严格检查权限情况,配置为否则不会检查  | 
实例 | 
schema  | 
用户的schema节点权限情况  | 
是 | 空  | 
配置为空的情况下默认拥有所有有效schema的权限  | 
实例 | 
配置名称  | 
配置内容  | 
多节点 | 可选项/默认值  | 
详细作用原理或应用  | 
全局/实例  | 
name  | 
schema名称  | 
否 | 
  | 
用以标识对应schema  | 
实例 | 
dml  | 
dml权限  | 
否 | 0000  | 
权限判断,每一位分别表示INSERT UPDATE SELECT DELETE四种权限 1- 拥有权限 0-没有权限 例如拥有所有权限为1111  | 
实例 | 
table  | 
  | 
是 | 
  | 
如果没有配置,则table继承schema的权限  | 
实例 | 
配置名称  | 
配置内容  | 
多节点 | 可选项/默认值  | 
详细作用原理或应用  | 
全局/实例  | 
name  | 
表格名称  | 
否 | 
  | 
在权限判断的时候作为key值  | 
实例 | 
dml  | 
dml权限  | 
否 | 0000  | 
权限判断,每一位分别表示INSERT UPDATE SELECT DELETE四种权限 1- 拥有权限 0-没有权限 例如拥有所有权限为1111  | 
实例 | 
| 配置名称 | 是否可以配置多个 | 配置内容 | 默认值 | 配置范围/可选项 | 详细作用原理或应用 | 范围 | 
|---|---|---|---|---|---|---|
| whitehost | 否 | 白名单 | 无 | 白名单的总结点 | 实例 | |
| blacklist | 否 | 黑名单 | 无 | 黑名单的总结点 | 实例 | 
| 配置名称 | 节点是否可配多个 | 属性元素 | 元素是否可配多个 | 配置内容 | 默认值 | 配置范围/可选项 | 详细作用原理或应用 | 实例/全局属性 | 
|---|---|---|---|---|---|---|---|---|
| Host | 是 | host | 否 | 白名单某个具体的IP host | 无 | 
 有效IP地址 如需配置localhost可使用IP host = "0:0:0:0:0:0:0:1" | 
 ip值是多个平行配置的唯一标识,ip重复配置会导致部分配置丢失。如单个IP想配置多个用户请在user属性里用逗号隔开。 白名单功能类似mysql的权限控制,指定某些IP只能有某些特定的用户登录进行登录。 如启用白名单,除白名单标注的IP用户之外,其他dble用户均无法登录  | 
实例 | 
| user | 否 | 对应IP host可以允许连接的用户 | 无 | 
 有效dble用户名,使用‘,‘进行分割 例如user="user1,user2,user3"  | 
| 配置类型 | 配置名称 | 属性元素 | 是否可以配置多个 | 配置内容 | 默认值 | 配置范围/可选项 | 详细作用原理或应用 | 实例/全局属性 | 
|---|---|---|---|---|---|---|---|---|
| blacklist元素属性 | blacklist | check | 否 | 是否进行黑名单校验 | false | true/false | 
 如果开启黑名单校验,黑名单中规定的行为SQL都被禁止 影响范围全局,所有用户都无法豁免  | 
实例 | 
| blacklist下挂property | property | name | 是 | 详细的黑名单校验规则 | 无 | 如果开启黑名单校验具体的校验规则将有 所有property来确定 | 实例 | 
| 
 配置名称 
 | 
 配置内容 
 | 
 默认值 
 | 
 可选项 
 | 
 详细作用原理或应用 
 | 
 备注 
 | 
|---|---|---|---|---|---|
selectHavingAlwayTrueCheck  | 
 是否允许复杂select having 条件结果恒为真  | 
true | true - 允许 false -禁止  | 
 1、having部分的结果为真 2、SQL语句需要以注释结尾(不能有换行之类的) 3、条件部分不是简单SQL(单个条件、含有简单数值对等或大小比较、直接是真假值的表达式等) 符合以上三个条件的查询在校验的时候会被阻止, 举例:select * from test having id = id and hujh = hujh /*lxxddfsgdfsfdqwesfct*/;  | 
暂不具有实际意义 | 
selectWhereAlwayTrueCheck  | 
 是否允许复杂select where 条件结果恒为真  | 
true | 
 true - 允许 false -禁止  | 
 1、where部分的结果为真 2、SQL语句需要以注释结尾(不能有换行之类的) 3、条件部分不是简单SQL(单个条件、含有简单数值对等或大小比较、直接是真假值的表达式等) 符合以上三个条件的查询在校验的时候会被阻止, 举例:select * from test where id = id and hujh = hujh /*lxxddfsgdfsfdqwesfct*/;  | 
暂不具有实际意义 | 
doPrivilegedAllow  | 
druid内部权限控制使用 | 
false  | 
 true - 允许 false -禁止  | 
druid内部函数调用flag,在dble中没有作用 | 暂不具有实际意义 | 
wrapAllow  | 
 是否允许调用 isWrapFor和unwrap方法  | 
true | 
 true - 允许 false -禁止  | 
druid内部函数调用flag,在dble中没有作用 | 暂不具有实际意义 | 
metadataAllow  | 
是否允许调用getmetadata方法 | true | 
 true - 允许 false -禁止  | 
druid内部函数调用flag,在dble中没有作用 | 暂不具有实际意义 | 
completeInsertValuesCheck  | 
在dble依赖的1.0.31版本中没有效果 | false | 
 true - 允许 false -禁止  | 
druid内部函数调用flag,在dble中没有作用 | 暂不具有实际意义 | 
mergeAllow  | 
 是否允许merge语句 (在mysql中不支持)  | 
true | 
 true - 允许 false -禁止  | 
会校验是否是merge语句 | 在Dble中没有效果 | 
conditionLikeTrueAllow  | 
是否允许like之后包含永真条件 | 
true  | 
 true - 允许 false -禁止  | 
会根据SQL里面的内容进行判断,如果发现有like ‘%‘就会抛出异常 | 可用 | 
conditionDoubleConstAllow  | 
是否允许连续两个常量判断 | false | 
 true - 允许 false -禁止  | 
 会根据SQL里面的内容进行判断,如果发现有两个常量判断抛出异常 select * from suntest asdf where 1 = 1 and 2 = 1;  | 
可用 | 
conditionAndAlwayFalseAllow  | 
 是否允许and连接的语句存在 恒为false的条件  | 
false | 
 true - 允许 false -禁止  | 
 会根据where之后and跟随的条件进行判断,如果发现恒为假的情况会抛出异常 举例:select * from suntest where id = 567 and 1 != 1;  | 
可用 | 
conditionAndAlwayTrueAllow  | 
 是否允许and连接的语句存在 恒为true的条件  | 
false | 
 true - 允许 false -禁止  | 
 会根据where之后and跟随的条件进行判断,如果发现恒为真的情况会抛出异常 举例:select * from suntest where id = 567 and 1 = 1;  | 
可用 | 
selectAllColumnAllow  | 
是否允许查询所有列 | true | 
 true - 允许 false -禁止  | 
 会根据查询sql进行判断,如果发现直接查询*会有这个异常, 但是如果带有别名(x.*)则不在此列  | 
存在问题 | 
multiStatementAllow  | 
是否允许一次提交多条sql | false | 
 true - 允许 false -禁止  | 
会检查sql的数量,如果超过一则抛出异常 | Dble不支持 | 
constArithmeticAllow  | 
是否允许常量运算 | true | 
 true - 允许 false -禁止  | 
 在SQL中如果发现包含有常量运算会抛出异常 select * from suntest asdf where id = 2 -1;  | 
可用 | 
alterTableAllow  | 
是否允许alter table 语句 | true | 
 true - 允许 false -禁止  | 
 在执行alter table之前会纯粹根据SQL进行语句的校验 ,发现SQL是alter table语句会抛出异常返回错误信息  | 
可用 | 
commitAllow  | 
是否允许commit语句 | true | 
 true - 允许 false -禁止  | 
 在执行commit之前会纯粹根据SQL进行语句的校验, 发现commit语句会抛出异常返回错误信息  | 
可用 | 
createTableAllow  | 
是否允许create table 语句 | ture | 
 true - 允许 false -禁止  | 
 在执行create table之前会纯粹根据SQL进行语句的校验, 发现SQL是create table语句会抛出异常返回错误信息  | 
可用 | 
deleteAllow  | 
是否允许delete语句 | true | 
 true - 允许 false -禁止  | 
 在执行delete之前会纯粹根据SQL进行语句的校验,发现delete语句会抛出异常 返回错误信息  | 
可用 | 
dropTableAllow  | 
是否允许drop table 语句 | ture | 
 true - 允许 false -禁止  | 
 在执行drop table之前会纯粹根据SQL进行语句的校验 ,发现SQL是drop table语句会抛出异常返回错误信息  | 
可用 | 
insertAllow  | 
是否允许insert | true | 
 true - 允许 false -禁止  | 
 在执行insert之前会纯粹根据SQL进行语句的校验,发现insert语句会抛出异常 返回错误信息  | 
可用 | 
intersectAllow  | 
是否支持intersect  | 
true | 
 true - 允许 false -禁止  | 
 在执行intersect之前会纯粹根据SQL进行语句的校验 ,发现intersect语句会抛出异常返回错误信息  | 
可用 | 
lockTableAllow  | 
是否允许lock tables语句 | true | 
 true - 允许 false -禁止  | 
 在执行lock tables之前会纯粹根据SQL进行语句的校验 ,发现lock语句会抛出异常返回错误信息  | 
可用 | 
minusAllow  | 
是否支持minus语句 | true | 
 true - 允许 false -禁止  | 
 在执行minus之前会纯粹根据SQL进行语句的校验 ,发现minus语句会抛出异常返回错误信息  | 
可用 | 
callAllow  | 
是否允许call语句 | true | 
 true - 允许 false -禁止  | 
 在执行query之前会纯粹根据SQL进行语句的校验, 发现SQL是CALL语句会抛出异常返回错误信息  | 
可用 | 
selectIntoOutfileAllow  | 
是否允许SELECT ... INTO OUTFILE | 
false  | 
 true - 允许 false -禁止  | 
 在执行query之前会纯粹根据SQL进行语句的校验,发现SQL是 SELECT ... INTO OUTFILE句会抛出异常返回错误信息  | 
Dble本身不支持 | 
selectIntoAllow  | 
是否允许select into 语句 | true | 
 true - 允许 false -禁止  | 
 在执行query之前会纯粹根据SQL进行语句的校验, 发现SQL是select into语句会抛出异常返回错误信息  | 
Dble本身不支持 | 
selelctAllow  | 
是否允许select语句 | true | 
 true - 允许 false -禁止  | 
 在执行query之前会纯粹根据SQL进行语句的校验, 发现SQL是select语句会抛出异常返回错误信息  | 
可用 | 
renameTableAllow  | 
是否允许rename table 语句 | true | 
 true - 允许 false -禁止  | 
 在执行rename table之前会纯粹根据SQL进行语句的校验 ,发现SQL是rename table语句会抛出异常返回错误信息  | 
可用 | 
replaceAllow  | 
是否允许replace语句 | true | 
 true - 允许 false -禁止  | 
 在执行replace之前会纯粹根据SQL进行语句的校验, 发现replace语句会抛出异常返回错误信息  | 
可用 | 
rollbackAllow  | 
是否允许rollback | true | 
 true - 允许 false -禁止  | 
 在执行rollback之前会纯粹根据SQL进行语句的校验, 发现rollback语句会抛出异常返回错误信息  | 
 可用 Dble慎用  | 
setAllow  | 
是否允许set语句 | true | 
 true - 允许 false -禁止  | 
 在执行set之前会纯粹根据SQL进行语句的校验, 发现set语句会抛出异常返回错误信息  | 
可用 | 
describeAllow  | 
是否支持describe语句 | true | 
 true - 允许 false -禁止  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验, 发现describe语句会抛出异常返回错误信息  | 
可用 | 
limitZeroAllow  | 
是否允许出现limit 0的情况 | false | 
 true - 允许 false -禁止  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验, 发现limit 0语句会抛出异常返回错误信息  | 
可用 | 
showAllow  | 
是否允许show语句 | true | 
 true - 允许 false -禁止  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验, 发现show语句会抛出异常返回错误信息  | 
可用 | 
hintAllow  | 
是否允许sql 包含hint | true | 
 true - 允许 false -禁止  | 
 在执行sql之前会纯粹根据SQL进行语句的校验 ,发现SQL是包含hint语句会抛出异常返回错误信息  | 
可用 | 
commentAllow  | 
是否允许在SQL中存在注释 | true | 
 true - 允许 false -禁止  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验,发现注释语句会抛出异常 返回错误信息  | 
可用 | 
mustParameterized  | 
是否必须参数化 | false | 
 true - 是 false -否  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验, 发现类似 name = ‘sdfasdf‘ ,id = 1语句会抛出异常返回错误信息  | 
可用 | 
conditionOpXorAllow  | 
是否允许SQL中使用关系符XOR | false | 
 true - 允许 false -禁止  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验, 发现类似运算符语句会抛出异常返回错误信息  | 
可用 | 
conditionOpBitwseAllow  | 
 查询条件中是否允许有"&"、 "~"、"|"、"^"运算符。  | 
true | 
 true - 允许 false -禁止  | 
 在执行SQL之前会纯粹根据SQL进行语句的校验, 发现类似运算符语句会抛出异常返回错误信息  | 
可用 | 
startTransactionAllow  | 
是否允许START TRANSACTION | true | 
 true - 允许 false -禁止  | 
 在执行START TRANSACTION之前会纯粹根据SQL进行语句的校验, 发现START TRANSACTION语句会抛出异常返回错误信息 注:现阶段如果开启黑名单检查begin无法通过校验, 这个是由于在druid中不支持的缘故  | 
可用 | 
truncateAllow  | 
是否允许truncate语句 | true | 
 true - 允许 false -禁止  | 
 在执行truncate之前会纯粹根据SQL进行语句的校验, 发现truncate语句会抛出异常 返回错误信息  | 
可用 | 
updateAllow  | 
是否允许update语句 | true | 
 true - 允许 false -禁止  | 
 在执行update之前会纯粹根据SQL进行语句的校验,发现update语句会抛出异常 返回错误信息  | 
可用 | 
useAllow  | 
是否允许use语句 | true | 
 true - 允许 false -禁止  | 
 在执行use之前会纯粹根据SQL进行语句的校验,发现use语句会抛出异常 返回错误信息  | 
可用 | 
blockAllow  | 
是否允许语句块 | 
true  | 
 true - 允许 false -禁止  | 
 在解析SQL阶段会判断SQL是否属于SQL语句块,如果是的话就会抛出错误 举例:BEGIN select * from suntest;END;//  | 
可用 | 
deleteWhereNoneCheck  | 
是否允许delete语句没有where条件 | false | 
 true - 启用 false -不启用  | 
 如果发现delete语句没有限定条件会抛出异常 举例:delete from suntest;  | 
可用 | 
updateWhereNoneCheck  | 
是否允许update语句没有where条件 | false | 
 true - 启用 false -不启用  | 
 如果发现update语句没有限定条件会抛出异常 举例:update suntest set name = ‘33‘;  | 
可用 | 
deleteWhereAlwayTrueCheck  | 
是否允许delete语句存在恒真条件 | true | 
 true - 启用 false -不启用  | 
 如果解析发现delete语句存在恒真条件,并且满足sql以注释结尾 ,并且where条件不是简单条件的,会抛出异常 举例:delete from suntest where id = id and name = name /*sdfaasdf*/;  | 
暂不具有实际意义 | 
updateWhereAlayTrueCheck  | 
是否允许delete语句存在恒真条件 | true | 
 true - 启用 false -不启用  | 
 如果解析发现delete语句存在恒真条件,并且满足sql以注释结尾 ,并且where条件不是简单条件的,会抛出异常 举例:update suntest set name = ‘33‘ where id = id,name = name /*sdfsdf*/;  | 
暂不具有实际意义 | 
selectIntersectCheck  | 
是否进行intersect check | true | 
 true - 进行 false -不进行  | 
 如果进行校验,则不允许except语句, 当且仅当left sql的from不是空并且right from为空的时候不能通过校验 举例:select * from sbtest1 where name = ‘ff‘ INTERSECT select * from dual;  | 
暂不具有实际意义 | 
selectExceptCheck  | 
是否进行except check | true | 
 true - 进行 false -不进行  | 
 如果进行校验,则不允许except语句, 当且仅当left sql的from不是空并且right from为空的时候不能通过校验 举例:select * from sbtest1 where name = ‘ff‘ except select * from dual;  | 
暂不具有实际意义 | 
selectMinusCheck  | 
是否进行MINUS check | 
true | 
 true - 进行 false -不进行  | 
 如果进行校验,则不允许MINUS语句, 当且仅当left sql的from不是空并且right from为空的时候不能通过校验 举例:select * from sbtest1 where namec = ‘fff‘ minus select * from dual;  | 
暂不具有实际意义 | 
selectUnionCheck  | 
是否进行union check | true | 
 true - 进行 false -不进行  | 
 如果进行校验,则不允许unoin语句 举例:select * from sbtest1 unoin select * from suntest;  | 
可用 | 
caseConditionConstAllow  | 
是否允许复杂查询中外部是一个常量 | false | 
 true - 允许 false -禁止  | 
 是否允许复杂查询中外部是一个常量, 如果子查询外部对应的是常量那么就在SQL检查的时候抛出异常 举例:delete from suntest where id = 123 and ‘name‘ = (select case ‘fname‘ whe dsome‘ else ‘good‘ end from xtest ) /*sdfaasdf*/; 
  | 
暂不具有实际意义 | 
strictSyntaxCheck  | 
是否启用严格语法检查 | true | 
 true - 是 false - 否  | 
 是否进行严格的语法检测,Druid SQL Parser在某些场景不 能覆盖所有的SQL语法,属于调试级别的参数,在正常的使用中不建议更改  | 
暂不具有实际意义 | 
schemaCheck  | 
检测是否使用了禁用的schema | true | 
 true - 启用 false -禁止  | 
这个需要配合drui的配置模式使用,在dble此功能无法被使用 | 暂不具有实际意义 | 
tableCheck  | 
检测是否使用了禁用的table | true | 
 true - 启用 false -禁止  | 
这个需要配合drui的配置模式使用,在dble此功能无法被使用 | 暂不具有实际意义 | 
functionCheck  | 
检测是否使用了禁用的function | true | 
 true - 启用 false -禁止  | 
这个需要配合drui的配置模式使用,在dble此功能无法被使用 | 暂不具有实际意义 | 
objectCheck  | 
检测是否使用了禁用的object | true | 
 true - 启用 false -禁止  | 
这个需要配合drui的配置模式使用,在dble此功能无法被使用 | 暂不具有实际意义 | 
variantCheck  | 
检测是否使用了禁用的变量 | true | 
 true - 启用 false -禁止  | 
这个需要配合drui的配置模式使用,在dble此功能无法被使用 | 暂不具有实际意义 | 
此项不再需要单独配置,所需要的配置项从myid.properties 中读取,下面表格并非配置内容,而是内存里存储的值
| 名称 | 内容 | 默认值 | 详细作用原理或应用 | 实例/全局属性 | 
|---|---|---|---|---|
| url | grpc告警的url | myid.properties 里的ipAddress | 在发送grpc的时候作为IP地址使用 | 实例 | 
| port | 告警端口 | myid.properties 里的port | grpc发送的目的端口 | 实例 | 
| level | 告警等级 | warn | 如果配置error只会发送error等级的告警,如果配置warn会发送warn以及error的告警信息 | 实例 | 
| serverId | 服务器ID | $ushard-id(ip1,ip2) ,其中$ushard-id 是myid.properties 里的myid | 接口参数 | 实例 | 
| componentId | 组件ID | $ushard-id 即myid.properties 里myid | 接口参数 | 实例 | 
| componentType | 组件类型 | ushard | 接口参数 | 实例 | 
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
   - you may not use this file except in compliance with the License. - You 
   may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
   - - Unless required by applicable law or agreed to in writing, software - 
   distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
   License for the specific language governing permissions and - limitations 
   under the License. -->
<!DOCTYPE dble:server SYSTEM "server.dtd">
<dble:server xmlns:dble="http://dble.cloud/" version="9.9.9.9">
    <system>
        <!-- base config -->
        <!--<property name="bindIp">0.0.0.0</property>-->
        <!-- property name="serverPort">8066</property> -->
        <!--<property name="managerPort">9066</property> -->
        <!-- <property name="processors">1</property>-->
        <!--<property name="processorExecutor">32</property> -->
        <!--<property name="fakeMySQLVersion">5.6.20</property>-->
        <property name="sequnceHandlerType">2</property>
        <!-- serverBacklog size,default 2048-->
        <property name="serverBacklog">2048</property>
        <!--<property name="serverNodeId">1</property>-->
        <!--<property name="showBinlogStatusTimeout">60000</property>-->
        <!--option-->
        <!--<property name="useCompression">1</property>-->
        <!--<property name="usingAIO">0</property>-->
        <!--<property name="useZKSwitch">true</property>-->
        <!--connection -->
        <!--<property name="charset">utf-8</property>-->
        <!--<property name="maxPacketSize">4194304</property>-->
        <!--<property name="txIsolation">3</property>-->
        <!--consistency-->
        <!-- check the consistency of table structure between nodes,default not -->
        <property name="checkTableConsistency">0</property>
        <!-- check periodt, he default period is 60000 milliseconds -->
        <property name="checkTableConsistencyPeriod">60000</property>
        <!-- heartbeat check period -->
        <property name="dataNodeIdleCheckPeriod">300000</property>
        <property name="dataNodeHeartbeatPeriod">10000</property>
        <!-- processor check conn-->
        <property name="processorCheckPeriod">1000</property><!-- unit millisecond -->
        <property name="sqlExecuteTimeout">300</property><!-- unit second -->
        <property name="idleTimeout">1800000</property><!-- unit millisecond -->
        <!-- transaction log -->
        <!-- 1 enable record the transaction log, 0 disable -->
        <property name="recordTxn">0</property>
        <!--<property name="transactionLogBaseDir">/txlogs</property>-->
        <!--<property name="transactionLogBaseName">server-tx</property>-->
        <!--<property name="transactionRatateSize">16</property><!– unit M –>-->
        <!-- XA transaction -->
        <!-- use XA transaction ,if the mysql service crash,the unfinished XA commit/rollback will retry for several times
       it is the check period for ,default is 1000 milliseconds-->
        <property name="xaSessionCheckPeriod">1000</property>
        <!-- use XA transaction ,the finished XA log will removed. the default period is 1000 milliseconds-->
        <property name="xaLogCleanPeriod">1000</property>
        <!-- XA Recovery Log path -->
        <!--<property name="XARecoveryLogBaseDir">/tmlogs/</property>-->
        <!-- XA Recovery Log name -->
        <!--<property name="XARecoveryLogBaseName">tmlog</property>-->
        <!-- true is use JoinStrategy, default false-->
        <property name="useJoinStrategy">true</property>
        <property name="nestLoopConnSize">4</property>
        <property name="nestLoopRowsSize">2000</property>
        <!-- off Heap unit:bytes-->
        <property name="bufferPoolChunkSize ">4096</property>
        <property name="bufferPoolPageNumber ">512</property>
        <property name="bufferPoolPageSize ">2097152</property>
        <!-- sql statistics-->
        <!-- 1 means use SQL statistics, 0 means not -->
        <property name="useSqlStat">0</property>
        <!--<property name="bufferUsagePercent">80</property>-->
        <!--<property name="clearBigSqLResultSetMapMs">600000</property>-->
        <!--<property name="sqlRecordCount">10</property>-->
        <!--<property name="maxResultSet">524288</property>-->
        <!-- backSocket unit:bytes-->
        <!--<property name="backSocketSoRcvbuf ">4194304</property>-->
        <!--<property name="backSocketSoSndbuf">1048576</property>-->
        <!--<property name="backSocketNoDelay ">1</property>-->
        <!-- frontSocket-->
        <!--<property name="frontSocketSoRcvbuf ">1048576</property>-->
        <!--<property name="frontSocketSoSndbuf">4194304</property>-->
        <!--<property name="frontSocketNoDelay ">1</property>-->
    </system>
    <!-- firewall config -->
    <!--
    <firewall>
    <whitehost>
          <host host="127.0.0.1" user="root"/>
          <host host="0:0:0:0:0:0:0:1" user="root"/>
       </whitehost>
       <blacklist check="true">
       <property name="selelctAllow">false</property>
       </blacklist>
    </firewall>
    -->
    <user name="man1">
        <property name="password">654321</property>
        <property name="manager">true</property>
        <!-- manager user can‘t set schema-->
    </user>
    <user name="root">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>
        <!-- table‘s DML privileges  INSERT/UPDATE/SELECT/DELETE -->
        <!--
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>
         -->
    </user>
    <user name="user">
        <property name="password">user</property>
        <property name="schemas">TESTDB</property>
        <property name="readOnly">true</property>
    </user>
</dble:server>原文:https://www.cnblogs.com/liang545621/p/12666362.html