Mycat【Mycat安全设置(SQL拦截白名单、SQL拦截黑名单、Mycat-web安装 )】(九)-全面详解(学习总结---从入门到深化)

news2024/9/23 13:16:12

 

 

目录

Mycat安全设置_user标签权限控制

Mycat安全设置_privileges标签权限控制

Mycat安全设置_SQL拦截白名单

 Mycat安全设置_SQL拦截黑名单

Mycat性能监控_Mycat-web安装 

Mycat性能优化 

Mycat实施指南


Mycat安全设置_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、执行插入数据sql

insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);

4、可看到运行结果,插入失败,只有只读权限

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"

Mycat安全设置_privileges标签权限控制

 在 user 标签下的 privileges 标签可以对逻辑库(schema)、表 (table)进行精细化的 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>

 配置说明

测试案例 

使用mycat用户,privileges配置orders表权限为禁止增删改查 (dml="0000") 验证是否可以查询出数据,验证是否可以写入数据。

1、重启mycat,用mycat用户登录,运行命令如下:

mysql -umycat -p123456 -h 192.168.66.101 -P8066

2、切换到TESTDB数据库,查询orders表数据,如下:

use TESTDB
select * from orders;

3、禁止该用户查询数据

mysql> use TESTDB
Database changed

mysql> select* from orders;
ERROR 3012(HY000): The statement DML
privilege check is not passed,reject for user 'mycat'

4、执行插入数据sql,如下

insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);

5、可看到运行结果,禁止该用户插入数据

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.Mycat技术中如何细粒度控制对用户进行权限控制___。

A user

B server

C privileges

D rule

2. Mycat技术中如何设置用户对表的操作只有添加权限____。

A dml="0000"

B dml="1000"

C dml="1110"

D dml="1111"

Mycat安全设置_SQL拦截白名单

 firewall标签用来定义防火墙;firewall下whitehost标签用来定义IP 白名单 ,blacklist 用来定义SQL 黑名单。

白名单

可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问。

#设置白名单
#server.xml配置文件firewall标签
#配置只有192.168.66.101主机可以通过mycat用户访问
<firewall>
 <whitehost>
 <host host="192.168.66.102" user="mycat"/>
 </whitehost>
</firewall>

 实时学习反馈

1.Myat技术中如何添加白名单___。

A server下whitehost 标签

B rule下whitehost 标签

C schema下whitehost 标签

D firewall下whitehost 标签

 Mycat安全设置_SQL拦截黑名单

可以通过设置黑名单,实现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>

黑名单 SQL 拦截功能列表

 

实时学习反馈

1.Myat技术中如何设置用户不能执行删除语句___。

A selectAllow="false"

B alterTableAllow="false"

C useAllow="false"

D deleteAllow="false" 

Mycat性能监控_Mycat-web安装 

Mycat-web是Mycat可视化运维的管理和监控平台。Mycat-web引 入了 ZooKeeper作为配置中心,可以管理多个节点。 

 

注意: Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和 内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分 析慢SQL和高频 SQL等。为优化SQL提供依据。 

Docker安装Zookeeper 

docker run --name myzk -d -p 2181:2181 zookeeper

解压Mycat-web

tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz -C /usr/local

设置Zookeeper的地址

在/usr/local/mycat-web/mycat-web/WEB-INF/classes/mycat.properties文件中配置

 zookeeper=192.168.66.101:2181

 进入mycat-web的目录下运行启动命令

cd /usr/local/mycat-web/

./start.sh &

查看服务已经启动

lsof -i:8082

通过地址访问服务

http://192.168.66.101:8082/mycat/

Mycat性能优化 

JVM调优 

Java堆内存和直接内存映射,建议堆内存大小适度,直接映射的内存尽可能大,总计占用操作系统50%~67%的内存。

示例

下面以16GB内存的服务器为例,Mycat堆内存为4GB,直接内存映 射为6GB,

修改文件 /usr/local/mycat/bin/startup_nowrap.sh

JAVA_OPTS="-server -Xms4G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"

 Mycat调优

MyCAT所有的调优参数都可以才server.xml中找到。

主要讨论两个内容:

1、processors数值的影响范围。

<system>
   <property name="processors">1</property>
    <property name="processorExecutor">16</property>
</system>

参数:

  • processors:CPU核心数越多,可以越大,当发现系统CPU压力很小的情况下,可以适当调 大此参数,如4核心的4CPU,可以设置为16,24核的可以最大设置为128
  • processorExecutor:每个processor的线程池大小,建议可以是16-64,根据系统能力来测 试和确定。

设置连接数 

<dataHost name="localhostl" maxCon="500" mincon="10" balance="O"
dbType="MySQL"dbDriver="native" banlance="0">

注意: 最大连接池maxCon的值可以改为1000~2000,同一个MySQL 实例上的所有dataNode节点共享本dataHost上的所有物理连接。

实时学习反馈

1.Mycat技术中使用JVM进行调优映射的内存,总计占用操作系统 ___的内存。

A 50%~67%

B 60%~70%

C 70%~80%

D 80%~90% 

Mycat实施指南

分表分库原则

原则一:能不分就不分;

原则二:分片数量尽量少;

原则三:分片规则需要慎重选择;

原则四:尽量不要在一个事务中的SQL跨越多个分片;

原则五:查询条件尽量优化; 

注意: 这里特别强调一下分片规则的选择问题,如果某个表的数据有明显的时间特征,比如订单、交易记录等,则他们通常比较合 适用时间范围分片,因为具有时效性的数据。 

数据拆分原则

  • 达到一定数量级才拆分(800 万);
  • 不到 800 万但跟大表(超 800 万的表)有关联查询的表也要拆分,在此称为大表关联表;
  • 小于100万的使用全局表;
  • 大于100万小于800 万跟大表使用同样的拆分策略。 

实时学习反馈

1.Myat技术分表分库最重要得原则___。

A 能不分就不分

B 分片数量尽量少

C 分片规则需要慎重选择

D 查询条件尽量优化 

2.Myat技术分表分库达到____数量级才拆分。

A 700万

B 800万

C 900万

D 1000万

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac矢量绘图工具 Sketch

Sketch是一款适用于 UI/UX 设计、网页设计、图标制作等领域的矢量绘图软件&#xff0c; 其主要特点如下&#xff1a; 1. 简单易用的界面设计&#xff1a;Sketch 的用户界面简洁明了&#xff0c;使得用户可以轻松上手操作&#xff0c;不需要复杂的学习过程。 2. 强大的矢量绘图功…

Lua快速入门笔记

文章目录 Lua快速入门笔记前言1、Lua概述2、Lua环境安装3、快速体验Lua编程4、数据类型5、变量6、循环7、流程控制8、函数9、运算符10、字符串11、数组12、迭代器13、表14、模块与包15、元表16、协同程序 Lua快速入门笔记 前言 本文是笔者参考菜鸟教程对Lua的一个快速入门学习&…

2023-07-08:RabbitMQ如何做到消息不丢失?

2023-07-08&#xff1a;RabbitMQ如何做到消息不丢失&#xff1f; 答案2023-07-08&#xff1a; 1.持久化 发送消息时设置delivery_mode属性为2&#xff0c;使消息被持久化保存到磁盘&#xff0c;即使RabbitMQ服务器宕机也能保证消息不丢失。同时&#xff0c;创建队列时设置du…

vue开发:Vue的状态管理 - Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 我个人的理解是&#xff0c;如果有一些公共的数据需要在多个组件中共享或者某一个状态的改变会影响多个组件&a…

基础之linux常用命令精华

目录 第一章.shell 1.1查看内部命令 1.2外部命令存放于 echo $PATH 一个一个找&#xff0c;找到为止&#xff0c;找不到就报无命令 第二章.linux常用命令 2.1.编辑linux命令行的辅助操作 2.2命令帮助help和--help&#xff0c;man手册使用 2.3.目录和文件的管理命令 2.…

消失的她-InsCode Stable Diffusion 美图活动一期

一、 Stable Diffusion 模型在线使用地址&#xff1a; https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型相关版本和参数配置&#xff1a; Model: Cute_Animals Version: v1.2.0 Size: 512x512 Model hash: 57bd734213 Steps: 20 Sampler: Heun CFG scale: 7 三、图…

操作系统中的线程进程和同步异步和并发并行

目录 一、进程和线程1.1 进程1.2 线程1.3 实现多任务的方法1.3.1 使用多进程实现多任务1.3.2 使用多线程(单个进程包含多个线程)实现多任务1.3.3 使用多进程多进程实现多任务 1.4 进程和线程的比较1.5 Java的多线程模型的应用 二、同步和异步2.1 同步2.2 异步 三、并发与并行3.…

QTday2

点击登录&#xff0c;登陆成功&#xff0c;跳转到新的界面 主函数 #include "widget.h" #include "second.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();Second s;QObject::connect…

MySQL数据库介绍流程(最新mysql)

版本介绍 第一步&#xff1a;下载MySQL数据库 1、下载地址&#xff1a;http://dev,mysql.com/downloads/windows/installer/8.0html 2、就是直接搜索&#xff1a;mysql官方 msyql官方网站 这里就安装成功 第二步&#xff1a;这么启动和停止mysql 第三步&#xff1a;这么快捷停…

B - Get an Even String

Get an Even String - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意&#xff1a;题目要使字符串变成偶字符串&#xff0c;对于每一个奇数i都和后面i1的位置字符相同。求给定字符串最少去掉几个字符能得到偶字符串。 解题思路&#xff1a;贪心&#xff0c;找每次第一对出现…

黑客(网安)自学

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

5、Task_stat() always report used == size他两总是相等

1、今天想查看一下任务的堆栈使用情况&#xff0c;按官方手册加入下面调试下面代码 Task_Stat statbuf; /* declear buffer */ Task_stat(Task_self(),&statbuf); /*call func to get status */ If(statbuf.used > (statbuf.stackSize * 9 / 10)) { System_printf(“…

Python——— 函数大全

&#xff08;一&#xff09;初识函数 函数是可重用的程序代码块。 函数的作用&#xff0c;不仅可以实现代码的复用&#xff0c;更能实现代码的一致性。一致性指的是&#xff0c;只要修改函数的 代码&#xff0c;则所有调用该函数的地方都能得到体现。 在编写函数时&#xff0…

LabVIEW开发空气动力学实验室的采集和控制系统

LabVIEW开发空气动力学实验室的采集和控制系统 在航空航天模拟设施中&#xff0c;通常的做法是准备一种针对当前正在进行的实验的数据采集和控制软件。该软件通常是根据当前要求编辑的更通用程序的修订版&#xff0c;或者可能是专门为该测试编写的自定义程序&#xff0c;具体取…

iview-admin前后台分离管理系统

加油&#xff0c;新时代打工人&#xff01; layui已淘汰&#xff0c;下面介绍vue管理后台系统&#xff0c;当然市场上不止下面一种框架。 layuimini后台管理系统的简单使用 iview-admin是iview生态圈的成员之一。是一套基于 Vue.js&#xff0c;搭配ivew UI(https://www.iviewu…

【LeetCode周赛】2022上半年题目精选集——二分

文章目录 2141. 同时运行 N 台电脑的最长时间解法1——二分答案补充&#xff1a;求一个int数组的和&#xff0c;但数组和会超int 解法2——贪心解法 2251. 花期内花的数目解法1——二分答案代码1——朴素二分写法代码2——精简二分⭐ 解法2——差分⭐⭐⭐ 2258. 逃离火灾解法1—…

在VSCode中导出安装的所有插件并在其他计算机进行导入

插件导出&#xff1a; 1、切换要导出的文件路径 cd D:\桌面文件\DownLoads2、导出到extensions文本 code --list-extensions > extensions.txt如图所示&#xff1a; 插件导入&#xff1a; 当您在另一台计算机上导出了 Visual Studio Code 编辑器已安装的扩展程序列表…

MySQL为什么选择B+树创建索引

不同方式查找数据 1. 全表遍历2. 哈希结构2.1 使用哈希结构创建索引的缺点2.2 哈希索引的适用性 3. 二叉搜索树4. AVL树5. B树6. B树6.1 B 树和 B 树的差异6.2 采用B树创建索引的优势6.3 一些需要注意的问题 1. 全表遍历 将磁盘中存储的所有数据记录依次加载&#xff0c;与给定…

linux下的mosquitto服务安装及使用(避坑指南)

Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单&#xff0c;可以方便的来进行一些测试。 mosquitto介绍 Mosquitto的特点&#xff1a; 1. 轻量级&#xff1a;Mosquitto是一个轻量级的MQTT代理…

Git学习(mac)

Git基础 1.安装与配置 下载与安装&#xff1a;git官网 使用入口&#xff1a; win&#xff1a;右键菜单 git bash Mac: 终端 查看git版本&#xff1a; git --version使用Git工作之前&#xff0c;我们需要做个一次性的配置。方便后续Git能跟踪到谁做了修改&#xff0c;我们需…