mycat的表级DML权限设置无法生效问题的解决
2017/07/15
posted in
MyCat
2017/07/15
posted in
MyCat
在mycat
中,可以通过对server.xml
文件里的user
段下的privileges
段进行配置,而从进行更细化的权限控制。
但是在实际操作中,配置了property
段后,mycat
却会报出配置文件错误的信息。
我们可以在错误日志中看到具体的信息
错误显示元素类型为"user"
的内容必须匹配"(property)+"
。
显然是我们添加了privileges
标签导致的错误,而mycat
却要求user
下必须匹配property
标签,一定是在校验xml
的时候出来问题。
我们查看github
中mycat
的源码,在src/main/resources
目录下的server.dtd
文件中我们可以看到对server.xml
的校验是<!ELEMENT user (property+,privileges*)>
这一行说明在user
段下是允许使用privileges
标签的,但是必须在property
之后,显然我们的配置是符合规范的,可是我们运行mycat
是却会报错。
我们再来查看我们部署的mycat
中server.dtd
文件是怎么写的,
在mycat
目录下的lib/Mycat-server-1.6-RELEASE.jar
包中我们可以看到server.dtd
文件显示的是<!ELEMENT user (property+)>
这和github
中的不一样,这个校验只允许property
标签。
问题的原因就是,官方最新打包的程序中的配置和github
中的源码不一致,并且不支持privileges
标签。
那么解决的方法就很简单了,将github
中的server.dtd
文件替换掉jar
包中的相应文件,然后重新部署。
至此,问题解决。