权限配置
1. user标签权限控制:
目前Mycat对于中间件的连接控制并没有做太负责的控制,目前只做了中间件逻辑库级别的读写权限,是通过server.xml的user标签进行配置。
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<user name="user">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
| 标签属性 | 说明 |
|---|---|
| name | 应用连接中间件逻辑库的用户名 |
| password | 该用户对应的密码 |
| TESTDB | 应用当前连接的逻辑库中所对应的逻辑表。schemas中可以配置一个或多个 |
| readOnly | 应用连接中间逻辑库所具有的权限。true为只读,false为读写都有,默认为false |
测试案例:



2. privileges标签权限控制:
在user标签下的privileges标签可以对逻辑库(schema)、表(table)进行精细化的DML权限控制。
privileges标签下的check属性,如true开启权限检查,为false不开启,默认为false。
由于Mycat一个用户的schemas属性可配置多个逻辑库,所以privileges的下级节点schema节点可配置多个,对多库多表进行细粒度的DML权限控制。
#配置orders表没有增删改查权限
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<!-- 表级 DML 权限设置 -->
<privileges check="false">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!-- <table name="tb02" dml="1111"></table> -->
</schema>
</privileges>
</user>
配置说明:
| DML权限 | 增加(insert) | 更新(update) | 查询(select) | 删除(delete) |
|---|---|---|---|---|
| 0000 | 禁止 | 禁止 | 禁止 | 禁止 |
| 0010 | 禁止 | 禁止 | 可以 | 禁止 |
| 1110 | 可以 | 禁止 | 禁止 | 禁止 |
| 1111 | 可以 | 可以 | 可以 | 可以 |
测试案例:


SQL拦截
firewall标签用来定义防火墙:firewall下whitehost标签用来定义IP白名单,blacklist用来定义SQL黑名单。
1. 白名单:
可以通过设置白名单,实现某主机某用户可以访问Mycat,而其他主机用户禁止访问。
配置只有192.168.140.128主机可以通过mycat用户访问:
<!-- 全局SQL防火墙设置,设置白名单 -->
<firewall>
<whitehost>
<host host="192.168.140.128" user="mycat"/>
</whitehost>
</firewall>
2. 黑名单:
可以通过设置黑名单,实现Mycat对具体SQL操作的拦截,如增删改查操作的拦截。
配置禁止myca用户进行删除操作:
<firewall>
<whitehost>
<host host="192.168.140.128" user="mycat"/>
</whitehost>
<blacklist check="true">
<property name="deleteAllow">false</property>
</blacklist>
</firewall>
| 配置项 | 缺省值 | 描述 |
|---|---|---|
| selectAllow | true | 是否允许执行SELECT语句 |
| deleteAllow | true | 是否允许执行DELETE语句 |
| updateAllow | true | 是否允许执行UPDATE语句 |
| insertAllow | true | 是否允许执行INSERT语句 |
| createTableAllow | true | 是否允许创建表 |
| setAllow | true | 是否允许使用SET语句 |
| alterTableAllow | true | 是否允许执行Alter Table语句 |
| dropTableAllow | true | 是否允许修改表 |
| commitAllow | true | 是否允许执行commit操作 |
| rollbackAllow | true | 是否允许执行roll back操作 |
本文详细解析了Mycat数据库中间件的权限配置方法,包括user标签的读写权限控制,privileges标签的DML权限精细化管理,以及firewall标签下的SQL拦截策略。深入探讨了如何通过配置实现用户权限的灵活控制。
264





