微服务 教程
1085个小节阅读:196.1k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。
xxxxxxxxxx
#server.xml配置文件user部分
<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>
参数:
- name:应用连接中间件逻辑库的用户名
- password:该用户对应的密码
- TESTDB:应用当前连接的逻辑库中所对应的逻辑表。schemas 中可以配置一个或多个
- readOnly:应用连接中间件逻辑库所具有的权限。true 为只读,false 为读写都有,默认为 false
使用user用户,权限为只读(readOnly:true),验证是否可以查询出数据,验证是否可以写入数据。
1、用user用户登录,运行命令如下:
xxxxxxxxxx
mysql -uuser -puser -h 192.168.140.128 -P8066
2、切换到TESTDB数据库,查询orders表数据,如下:
xxxxxxxxxx
use TESTDB
select * from orders;
3、执行插入数据sql
xxxxxxxxxx
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
4、可看到运行结果,插入失败,只有只读权限
xxxxxxxxxx
mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
ERROR 1495 (HY000): User readonly
1.Mycat技术中如何设置用户只读操作___。
A Only="true"
B readOnly="false"
C read="true"
D readOnly="true"
1=> D
在 user 标签下的 privileges 标签可以对逻辑库(schema)、表(table)进行精细化的 DML 权限控制。
xxxxxxxxxx
#server.xml配置文件privileges部分
#配置orders表没有增删改查权限
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!--<table name="tb02" dml="1111"></table>-->
</schema>
</privileges>
</user>
DML权限 | 新增 | 更新 | 查询 | 删除 |
---|---|---|---|---|
0000 | 禁止 | 禁止 | 禁止 | 禁止 |
0010 | 禁止 | 禁止 | 可以 | 禁止 |
1110 | 可以 | 禁止 | 禁止 | 禁止 |
1111 | 可以 | 可以 | 可以 | 可以 |
使用mycat用户,privileges配置orders表权限为禁止增删改查(dml="0000") 验证是否可以查询出数据,验证是否可以写入数据。
1、重启mycat,用mycat用户登录,运行命令如下:
xxxxxxxxxx
mysql -umycat -p123456 -h 192.168.66.101 -P8066
2、切换到TESTDB数据库,查询orders表数据,如下:
xxxxxxxxxx
use TESTDB
select * from orders;
3、禁止该用户查询数据
xxxxxxxxxx
mysql> use TESTDBDatabase changed
mysql> select* from orders;
ERROR 3012(HY000): The statement DML privilege check is not passed,reject for user 'mycat'
4、执行插入数据sql,如下
xxxxxxxxxx
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
5、可看到运行结果,禁止该用户插入数据
xxxxxxxxxx
mysql> insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000)ERROR 3012 (HY000): The statement DMLprivilege check is not passed,reject for use
1.Myat技术中如何细粒度控制对用户进行权限控制___。
A user
B server
C privileges
D rule
2. Myat技术中如何设置用户对表的操作只有添加权限____。
A dml="0000"
B dml="1000"
C dml="1110"
D dml="1111"
1=>C 2=>C