- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
1、 user标签权限控制;
目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。
#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用户登录,运行命令如下:
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);
#5、可看到运行结果,插入失败,只有只读权限,如下图:
#测试案例二
# 使用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);
#5、可看到运行结果,插入成功,如下图:
2、 privileges标签权限控制;
在user 标签下的 privileges 标签可以对逻辑库(schema)、表(table)进行精细化的 DML 权限控制。
privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默认为 false。由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema) ,所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。
#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**权限** | 增加**insert** | 更新**update** | 查询**select** | 删除**select** |
---|---|---|---|---|
0000 | 禁止 | 禁止 | 禁止 | 禁止 |
0010 | 禁止 | 禁止 | 可以 | 禁止 |
1110 | 可以 | 禁止 | 禁止 | 禁止 |
1111 | 可以 | 可以 | 可以 | 可以 |
测试案例
#测试案例一
# 使用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;
#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、可看到运行结果,插入成功,如下图:
#4、执行插入数据sql,如下:
delete from orders where id in (7,8);
#5、可看到运行结果,插入成功,如下图:
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
#可以正常访问,如下图
在此主机换user用户访问,禁止访问
在192.168.140.127主机用mycat用户访问,禁止访问
2、黑名单
可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查等操作的拦截。
#设置黑名单
#server.xml配置文件firewall标签
#配置禁止mycat用户进行删除操作
<firewall>
<whitehost>
<host host="192.168.140.128" user="mycat"/>
</whitehost>
<blacklist check="true">
<property name="deleteAllow">false</property>
</blacklist>
</firewall>
如下图
#重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
#可以正常访问,如下图
#切换TESTDB数据库后,执行删除数据语句
delete from orders where id=7;
#运行后发现已禁止删除数据,如下图
可以设置的黑名单 SQL 拦截功能列表
配置项 | 缺省值 | 描述 |
---|---|---|
selelctAllow | 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 操作 |
在schema.xml 配置文件中,我们在配置 物理库 信息时,会对 url、user、password 等进行配置,但是这里用到的 password 会使用到明文密码。在线上环境中,如果我们使用这种
全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一。为此,MyCat 提供了全局 sequence,并且提供了包含本地配置和数据库配置等多种实现方式。 1.本地文件
Mycat不支持的SQL语句: 1、某些SQL语法,如insert into......select..... 2、跨库关联查询 3、存储过程创建 4、存储过程调用 所以Mycat 提供 M
7.1、权限配置 1、 user标签权限控制; 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标
1.什么是 MyCat MyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议 的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和
1.配置读写分离 1.1 Schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM &qu
1.切分 逻辑上的切分. 在物理层面,是使用多库[database],多表[table]实现的切分 1.1 纵向切分/垂直切分 就是把原本存储于一个库的数据存储到多个库上。 由于对数据库的读写
1.什么是MyCat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Or
1.配置读写分离 1.1 Schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM &qu
1.读写分离 原理:需要搭建主从模式,让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理 SELECT 查询操作。
1.分片规则 1.1 auto-sharding-long 范围约定 以 500 万为单位,实现分片规则. 逻辑库 A 对应 dataNode - db1 和 db2. 1-500 万保
MyCat 官网:http://www.mycat.io/ 1.准备工作 1、 MyCat版本:1.6.x点击下载; 2、 数据库(MySQL为例,支持主从复制)主从复制教程:[MySQL5.7
1.安装 MySQL 传送门 已安装 主库:192.168.70.148 从库:192.168.70.149 2.Master[主库]配置 2.1 修改 Master 配置文件
1.在主数据库和从数据库都需要完成 1.1 放开 3306 端口 1.2 保证 root 用户可以被 mycat 访问 在 Mycat 中通过 Master 数据库的 root 用户访问
server.xml Mycat的配置文件,用来设置用户账号、黑/白名单、系统参数等 部分属性详解: 建议使用默认配置即可 <?xml version="1.0&quo
rule.xml ,配置定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。 rule.xml 配置文件,包含标签 <
在实际项目中,Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服 务故障,需要有备机提供服务,需要考虑 Mycat 集群。 1、 高可用方案 使用HAP
一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle
2.1、安装 1、解压后 即可使用 解压缩文件拷贝到 linux 下 /usr/local/ 2、三个配置文件 schema.xml:定义逻辑库,表、分片节点等内容。 rule.xm
Mycat配置文件 server.xml 1 system 标签 属性 取值 含义 charset utf8
我是一名优秀的程序员,十分优秀!