目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只 做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。
1、server.xml配置文件user部分
123456 TESTDB user TESTDB true 配置说明:
2、测试案例
2.1、测试案例一
需求:使用user用户,权限为只读(readOnly:true),验证是否可以查询出数据,
验证是否可以写入数据。1)、 用user用户登录,运行命令如下
mysql -uuser -puser -h 192.168.140.128 -P8066
2)、切换到TESTDB数据库,查询orders表数据,如下
use TESTDB
select * from orders;
3)、可以查询到数据,如下图
4)、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
2.2、测试案例二
需求:使用mycat用户,权限为可读写(readOnly:false),验证是否可以查询
出数据,验证是否可以写入数据。1)、用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -P8066
2)、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
3)、可以查询到数据,如下图
4)、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
在 user 标签下的 privileges 标签可以对逻辑库(schema)、 表(table)进行精细化的 DML 权限控制。
privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默认为 false。
由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema) ,所以 privileges 的下级 节点 schema 节点同样可配置多个,对多库多表进行细粒度 的 DML 权限控制。
1、server.xml配置文件privileges部分
1.1、配置orders表没有增删改查权限
123456 TESTDB
配置说明:
2、测试案例一
使用mycat用户,privileges配置orders表权限为禁止 增删改查(dml="0000"),验证是否可以查询出数据,验证是否可以写入数据。
1)、重启mycat,用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -P8066
2)、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
4)、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
3、测试案例二
使用mycat用户,privileges配置orders表权限为可 以增删改查(dml="1111"),验证是否可以查询出数据,验证是否可以写入数据。
1)、重启mycat,用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -P8066
2)、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
3)、可以查询到数据,如下图
4)、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
5)、可看到运行结果,插入成功,如下图:
6)、执行插入数据sql,如下:
delete from orders where id in (7,8);
1、简介
firewall 标签用来定义防火墙;firewall 下 whitehost 标签用来定义 IP 白名单 ,blacklist 用来定义 SQL 黑名单。
2、 白名单
可以通过设置白名单,实现某主机某用户可以访问 Mycat, 而其他主机用户禁止访问。
1)、设置白名单,修改server.xml配置文件firewall标签,配置只有192.168.140.128
主机可以通过mycat用户访问
2)、重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
3)、 在此主机换user用户访问,禁止访问
4)、在192.168.140.127主机用mycat用户访问,禁止访问
3、黑名单
可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截, 如增删改查等操作的拦截。
1)、设置黑名单,server.xml配置文件firewall标签,配置禁止mycat用户进行删除操作
false 2)、重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
3)切换TESTDB数据库后,执行删除数据语句
delete from orders where id=7;
4)、可以设置的黑名单 SQL 拦截功能列表