概述
server.xml 几乎保存了所有 mycat 需要的系统配置信息。其在代码内直接的映射类为 SystemConfig 类。
1.user 标签
test
TESTDB
true
11111
1
server.xml 中的标签本就不多,这个标签主要用于定义登录 mycat 的用户和权限。例如上面的例子中定义了一个用户,用户名为 test、密码也为 test,可访问的 schema 也只有 TESTDB 一个。
如果在 schema.xml 中定义了多个 schema,那么这个用户是无法访问其他的 schema。在 mysql 客户端看来则是无法使用 use 切换到这个其他的数据库。
如果使用了 use 命令,则 mycat 会报出这样的错误提示:
ERROR 1044 (HY000): Access denied for user 'test' to database 'xxx'
user标签嵌套的 property 标签则是具体声明的属性值;
修改 user 标签的name 属性来指定用户名;
修改 password 内的文本来修改密码;
修改 readOnly 为 true 或 false 来限制用户是否只是可读的;
修改 schemas 内的文本来控制用户可放问的 schema,同时访问多个 schema 的话使用“ ,” 隔开,例如:
TESTDB,db1,db2
Benchmark 属性
Benchmark基准实现mycat 连接服务降级处理:
当前端的整体 connection 数达到基准值时, 对来自该账户的请求开始拒绝连接, 默认是0 或不设置限制。
表示不限制:
1000
usingDecrypt 属性
是否对密码加密:
默认 0 否
如需要开启配置 1,同时使用加密程序对密码加密,加密命令为:
java -cp Mycat-server-1.4.1 -dev.jar io.mycat.util.DecryptUtil 0:user:password
执行上面的mycat jar 程序:
Mycat-server-1.4.1 -dev.jar 为 mycat download 下载目录的 jar
1:host:user:password 中 0 为前端加密标志
2.privileges 子节点
对用户的 schema及下级的 table 进行精细化的 DML 权限控制:
privileges 节点中的 check 属性是用于标识是否开启 DML 权限检查, 默认 false 标识不检查,当然 privileges 节点不配置,等同 check=false;
由于Mycat 一个用户的 schemas 属性可配置多个schema,所以privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。
Schema/Table 上的 DML 属性描述,如果只设置了schema个别 table 或 未设置 table 的 DML,自动继承 schema 的 DML 属性:
privileges.png
privileges示例:
111111
TESTDB,TESTDB1
3.system标签
这个标签内嵌套的所有 property 标签都与系统配置有关,请注意,下面省去标签 property 直接使用这个标签的 name 属性内的值来介绍这个属性的作用。
charset 属性
字符集设置:
utf8
配置字符集的时候一定要坚持 mycat 的字符集与数据库端的字符集是一致的,可以通过变量来查询:
show variables like 'collation_%';
show variables like 'character_set_%';