1.权限配置
[1].user标签
目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。
#server.xml配置文件user部分 [root@host79 ~]# vim /usr/local/mycat/conf/server.xml
<user name="mycat"> <property name="password">123456</property> <property name="schemas">TESTDB</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">TESTDB</property> <property name="readOnly">true</property> </user> |
(1).配置说明
标签属性 |
说明 |
name |
应用连接中间件逻辑库的用户名 |
password |
该用户对应的密码 |
TESTDB |
应用当前连接的逻辑库中所对应的逻辑表。schemas 中可以配置一个或多个 |
readOnly |
应用连接中间件逻辑库所具有的权限。true 为只读,false 为读写都有,默认为 false |
(2).测试案例
#测试案例一 # 使用user用户,权限为只读(readOnly:true) # 验证是否可以查询出数据,验证是否可以写入数据 #1、用user用户登录,运行命令如下: mysql -uuser -puser -h 192.168.188.188 -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); #5、可看到运行结果,插入失败,只有只读权限,如下图: |
#测试案例二 # 使用mycat用户,权限为可读写(readOnly:false) # 验证是否可以查询出数据,验证是否可以写入数据 #1、用mycat用户登录,运行命令如下: mysql -umycat -p123456 -h 192.168.188.188 -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); #5、可看到运行结果,插入成功,如下图: |
[2].privileges 标签
持保留,因为privileges 打开后启动出现
错误.mycat的版本信息Mycat-server-1.6-RELEASE-20161028204710-linux.tar
2.SQL拦截
firewall 标签用来定义防火墙;firewall 下 whitehost 标签用来定义 IP 白名单 ,blacklist 用来定义SQL 黑名单。
[1].白名单
可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问
#设置白名单 #server.xml配置文件firewall标签 #配置只有192.168.140.128主机可以通过mycat用户访问 <firewall> <whitehost> <host host="192.168.140.128" user="mycat"/> </whitehost> </firewall> |
#重启Mycat后,192.168.140.128主机使用mycat用户访问 mysql -umycat -p123456 -h 192.168.140.128 -P 8066 #可以正常访问,如下图 ##在192.168.188.189主机用mycat用户访问,禁止访问 |
#在此主机换user用户访问,禁止访问 |
[2].黑名单
可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查等操作的拦截.
#设置白名单 #server.xml配置文件firewall标签 #配置禁止mycat用户进行删除操作 <blacklist check="true"> <property name="deleteAllow">false</property> </blacklist> #重启Mycat后,192.168.140.128主机使用mycat用户访问 mysql -umycat -p123456 -h 192.168.188.188 -P 8066 #可以正常访问,如下图 |
#切换TESTDB数据库后,执行删除数据语句 delete from orders where id=400200; #运行后发现已禁止删除数据,如下图 |
可以设置的黑名单 SQL 拦截功能列表