Mycat 配置说明(server.xml)

时间:2024-12-11 19:37:01

server.xml 几乎保存了所有mycat需要的系统配置信息,包括 mycat 用户管理、DML权限管理等,其在代码内直接的映射类为SystemConfig 类。

user 标签

该标签主要用于定义登录 mycat的用户和权限。例如,我定义了一个用户,用户名为test、密码也为test,可访问的schema也只有TESTDB一个,示例代码如下:

<!-- 用户名称 -->

<user name="test">

<!-- 账户信息 -->

<!-- 用户密码 -->

<property name="password">test</property>

<!-- 逻辑数据库名称,存在多个则使用","号分隔 -->

<property name="schemas">TESTDB</property>

<!-- 只读 -->

<property name="readOnly">true</property>

<!-- 连接服务降级的基准连接数量 -->

<property name="benchmark">11111</property>

<!-- 是否对密码加密 -->

<property name="usingDecrypt">1</property>

<!-- 精细化DML权限控制 -->

<privileges check="false">

<schema name="TESTDB" dml="0010" showTables="custome/mysql">

<table name="tbl_user" dml="0110"></table>

<table name="tbl_dynamic" dml="1111"></table>

</schema>

</privileges>

</user>

  • 相关属性
    • Benchmark:mycat 连接服务降级处理,当前端的整体 connection 数达到基准值时,对来自该账户的请求开始拒绝连接,0 或不设表示不限制
    • usingDecrypt:是否对密码加密默认0 否 如需要开启配置1,同时使用加密程序对密码加密,加密命令为:

      # java -cp Mycat-server-1.6-RELEASE.jar io.mycat.util.DecryptUtil 0:user:password

      其中 Mycat-server-1.6-RELEASE.jar 位于 mycat/lib 目录中,0:user:password,其中 0 表示 前端加密标识

privileges 标签

对用户的 schema 及 下级的 table 进行精细化的 DML 权限控制,privileges 节点中的 check 属性是用于标识是否开启 DML 权限检查, 默认false 标识不检查,当然 privileges 节点不配置,等同 check=false, 由于Mycat一个用户的schemas 属性可配置多个 schema ,所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的DML 权限控制,在 schema 及 table 上设置 dml 字符串的规则时按照如下规则设置的,示例如下:

操作

DML权限示例

说明

insert,update,select,delete

0000

禁止增加、更新、查询和删除

insert,update,select,delete

0010

禁止增加、更新和删除,可以查询

insert,update,select,delete

1110

禁止删除,可以创建、更新和查询

如果设置了 schema 的 DML,而没有设置 table 的 DML,则自动继承 schema 的 DML 属性