数据库审核工具SQLE部署及使用

SQLE( https://opensource.actionsky.com/sqle/ )是由上海爱可生信息技术股份有限公司 开发并开源,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。我们可以基于此工具进行数据库SQL审核,提升SQL脚本质量。

1. 部署SQLE

下载地址:https://github.com/actiontech/sqle/releases

安装

mkdir  /opt/sqle
rpm -ivh  sqle-ce-1.2209.0.qa.el7.x86_64.rpm  --prefix=/opt/sqle

创建SQLE元数据存储库(mysql中): create database sqle

修改配置:修改配置文件名,并按需修改端口、元数据数据库信息

启动sqle: systemctl start sqled

2. SQLE使用

功能列表如下:

已有的审核规则 如下,大家可以部署后自行查看

配置数据源:需配置具体实例、用户信息、审核规则模板、开启审核等

创建审核任务:

点击下方审核

审核结果如下

3. 调用审核接口

审核接口:http://ip:port/v1/tasks/audits

先获取token

使用postman调用接口进行审核:需输入token 、instance_name、instance_schema 、sql

输入token:

提交待审核SQL

查看审核结果

http://ip:10000/v1/tasks/audits/9/sqls?page_index=1&page_size=10&no_duplicate=false

注:

数据库SQL脚本的审核是相当重要的一项工作,建议使用SQL审核工具进行审核,提升SQL质量。下一篇将通过代码来调用对应的接口并获得审核结果。

本文转载于网络 如有侵权请联系删除

相关文章

  • JVM之垃圾收集器与内存分配策略

    对象已死吗在堆里面存放着java世界几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象哪些还“存活”,哪些已经“死去”引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它的时候,计数器就加1,;当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。java虚拟机中没有选用引用计数算法是来管理内存,其中最主要的原因是它很难解决对象之间互相循环引用的问题可达性分析算法JVM通过可达性分析算法来判定对象是否存活。这个算法的基本思路是: 通过一系列的称为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GCRoots没有任何引用链相连(用图论来说,就是从GCRoots到这个对象不可达)时,则证明此对象是不可达的。如下图所示,object5,6,7不可达:在java语言中,可作为GCRoots的对象包含下面几种: -虚拟机栈(栈帧中的本地变量表)中引用的对象 -方法区中类静态属性引用的对象 -方法区中常量引用的对象 -本地方法栈中JNI(即一般说的Native方法)引用的对象再谈引用引用可分为四

  • “背锅侠”的春天,AnyRobot Library5让运维进阶So Easy

    都说运维是个苦差事儿,哪里有坑去哪里。以至于人们常戏言:运维是操着卖白粉的心,每天起的比鸡早,睡的比猪晚,还随时可能要背锅。但不可否认的是,运维的价值正在变得愈发重要。尤其是随着企业数字化转型的深入,DevOps成为大势所趋,多业务的持续交付速度、应用服务的稳定性、运维降本增效都彰显出运维的重要性。因此,近年来AIOps迅速流行,业界希望在运维中融入AI相关技术,减少运维复杂性和工作量,以实现运维的自动化和智能化。除了改变运维工作流程和模式之外,AI是否能对运维人员的能力提升和职业进阶有所帮助?答案是肯定的!近日,爱数正式发布了AnyRobotLibrary5,用领域认知智能技术彻底改变传统运维知识库,让运维知识库可持续进化,彻底改变运维人员的日常学习和进阶模式,从此甩掉“背锅侠”的称号。01传统运维知识库为何让人爱不起来正所谓,天下武功,唯快不破。如今,市场风向和客户需求瞬息万变,也让企业自身必须变得更快。与传统的瀑布式开发交付模式相比,DevOps的小步快跑模式能够加快业务交付效率、快速响应市场需求,深得企业人心。虽然企业借助DevOps打通了开发、运维的各个环节与流程,却在运维知

  • 用asp.net core结合fastdfs打造分布式文件存储系统

    最近被安排开发文件存储微服务,要求是能够通过配置来无缝切换我们公司内部研发的文件存储系统,FastDFS,MongDbGridFS,腾讯云OSS等。根据任务紧急度暂时先完成了通过配置来无缝切换内部文件系统以及FastDFS。至于MongDbGridFS腾讯云OSS等则后期需要的话再开发对应的提供者程序集合。作者:依乐祝 首发公众号:DotNetCore实战 原文链接: https://www.cnblogs.com/yilezhu/p/12797543.html 今天主要是对开发过程,以及对FastDFS这个通用的分布式文件存储服务的单机及集群安装部署过程做个总结。希望对想要自建分布式文件系统的朋友有所帮助。什么是FastDFS这里先简单介绍下分布式文件存储系统。 FastDFS是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB<file_size<500MB)为载体的在线服务。 FastDFS系统有三个角色:跟踪服务器(TrackerServer

  • 服务的容灾与容错

    引子先介绍几个概念,同步一下认知:容灾:是指系统冗余部署,当一处由于意外停止工作,整个系统应用还可以正常工作。容错:是指在运行中出现错误(如上下游故障或概率性失败)仍可正常提供服务。可用性:描述的是系统可提供服务的时间长短。用公式来说就是A=MTBF/(MTBF+MTTR),即正常工作时间/(正常工作时间+故障时间)。可靠性:描述的是系统指定时间单位内无故障的次数。比如:一年365天,以天为单位来衡量。有天发生了故障,哪怕只有1秒,这天算不可靠。其他没有故障的是可靠的。稳定性:这个业界没有明确的定义,我的理解是:在受到各种干扰时仍然能够提供符合预期的服务的能力。从要求的严格程度上:可用性<可靠性<稳定性。可用性和可靠性更侧重于容灾,而对稳定性同时包含容灾和容错。服务的容灾服务容灾的解决方案就是冗余。多几个备份来切换。常用的有N+1容灾和两地三中心。N和中心实际上都是机房的意思。所谓中心就是数据中心。N是数据中心的电力配置部分。电力配置有市电和备用发动机供电,但是一般互联网公司是不支持备用发动机供电的。所以一般一个机房就是一个N。N+1容灾就是要多出一个机房做容灾。而两地三中

  • DRF系列总结三:批量更新接口的一种写法

    项目中需要写一个批量更新资源的接口:/matrix/batch_upate/,请求参数如下:[ { "id":71, "priority":"1" }, { "id":69, "priority":"1" }, { "id":70, "priority":"2" } ]复制一次接口提交,批量更新三条数据的priority字段,在DRF框架中,要实现这样的接口,需要在视图类PriorityMatrixViewSet中添加一个自定义接口,比如batch_update方法,并定义序列化类MatrixListSerializer对接口参数进行校验,最后再定义一个批量更新的方法batch_update,并在视图类中校验通过后进行批量更新操作,如图所示:序列化类视图类测试一下接口,立刻报错了:报错了序列化类中新增的方法batch_update不见了?明明我定义的类是MatrixListSerializer,这里报错为什么

  • python 基础知识第6讲:条件语句控制练习题集合

    练习1.求1000以内所有的水仙花数需求:求1000以内的所有的水仙花数 分析:它的每个位数上的数字的3次幂之和等于它本身 代码1:用if单次判断num=int(input("请输入一个1000以内的三位数,最小为100:")) if100<num<1000: #求出对应的百位,十位,个位数字 #假设x是百位数,y是十位数,z是个位数 x=num//100 y=(num-x*100)//10 z=num%10 ifx**3+y**3+z**3==num: print(num,'是水仙花数') else: print(num,'不是水仙花数') else: print('输入的数字有误,请重新输入!')复制代码2:用while循环实现num=100 whilenum<1000: #求出对应的百位,十位,个位数字 #假设x是百位数,y是十位数,z是个位数 x=num//100 y=(num-x*100)//10 z=num%10 ifx**3+y**3+z**3==num: print(nu

  • Data Structures and Algorithms Basics(007):Stack-Queue

    Stack-Queue目录:第一部分:创建Stack1,使用array创建stack2,使用linklist实现stack第二部分:创建Queue1,使用array创建queue2,使用linklist创建queue第三部分:Stack-Queue练习题1,使用堆栈实现队列2,使用队列实现堆栈3,最小堆栈4,一个数组实现两个堆栈5,堆栈排序6,反转字符串7,回文(Palindrome)8,有效括号9,简化命令行路径10,解码字符串11,比赛打分12,行星碰撞13,查找下一个较大的元素14,查找下一个较大的元素(2):循环数组15,计算温度升高需要几天16,滑动窗口最大值17,评估算数表达式18,实现双端队列第一部分:创建Stack1,使用array创建stack2,使用linklist实现stack#第一部分:创建Stack,使用到了上篇中的类LinkedList和Node classEmpty(Exception): pass classOutbound(Exception): pass classNode: def__init__(self,value=None,next=No

  • 两行代码统计模型参数量与FLOPs,这个PyTorch小工具值得一试

    你的模型到底有多少参数,每秒的浮点运算到底有多少,这些你都知道吗?近日,GitHub开源了一个小工具,它可以统计PyTorch模型的参数量与每秒浮点运算数(FLOPs)。有了这两种信息,模型大小控制也就更合理了。其实模型的参数量好算,但浮点运算数并不好确定,我们一般也就根据参数量直接估计计算量了。但是像卷积之类的运算,它的参数量比较小,但是运算量非常大,它是一种计算密集型的操作。反观全连接结构,它的参数量非常多,但运算量并没有显得那么大。此外,机器学习还有很多结构没有参数但存在计算,例如和等。因此,PyTorch-OpCounter这种能直接统计FLOPs的工具还是非常有吸引力的。PyTorch-OpCounterGitHub地址:https://github.com/Lyken17/pytorch-OpCounterOpCouterPyTorch-OpCounter的安装和使用都非常简单,并且还能定制化统计规则,因此那些特殊的运算也能自定义地统计进去。我们可以使用pip简单地完成安装:pipinstallthop。不过GitHub上的代码总是最新的,因此也可以从GitHub上的脚本安

  • 无约束最优化问题求解

    无约束最优化问题求解方法的学习笔记神经网络中的学习过程可以形式化为最小化损失函数问题,该损失函数一般是由训练误差和正则项组成L(w)=train\_err(w)+norm(w)损失函数的一阶偏导为\nabla_iL(w)=\frac{df}{dw_i},i=1,2,...,n损失函数二阶偏导可以使用海塞矩阵HessianMatrixH\mathbf{H}H表示,其中每个权重向量iii的元素jjj的二阶偏导数为\mathbf{H}_{i,j}L(w)=\frac{d^2f}{dw_i\cdotdw_j} ​​一阶求解方法有SGDAdamRMSProp等,利用梯度(超平面)的信息求解,计算高效,收敛稍慢,需要超参数。二阶求解方法有牛顿法,拟牛顿法,BFGS,L-BFGS等,用二阶梯度(超曲面)的信息求解,计算复杂,收敛快,不需要超参数。牛顿法用损失函数的二阶偏导数寻找更好的训练方向.记、Li=L(w_i),g_i=\nabla_i,\mathbf{H}_i=\mathbf{H}f(w_i)在w0w_0w​0​​点使用泰勒级数展开式二次逼近损失函数LLL$另一阶导数g=0,有参数www迭代公

  • AWT-Frame

    2、AWT 2.1、AWT 2.2组件和容器 packagegui.awt;​importjava.awt.*;​publicclassTestFrame{  publicstaticvoidmain(String[]args){    //设置窗口名称    Frameframe=newFrame("第一个Frame窗口");    //设置窗口大小    frame.setSize(1000,1000);    //设置位置    frame.setLocation(200,200);    //设置窗口背景颜色    frame.setBackground(newColor(255,255,255));   &nb

  • Chapter 9 (排序)

    1.排序算法://****************************Sort.h******************************************** #ifndefSORT_H #defineSORT_H #include<stdio.h> #include<stdlib.h> #include<stdbool.h> //冒泡排序 voidBubbleSort(intdata[],intlen); //简单选择排序 voidSelectSort(intdata[],intlen); //直接插入排序 voidInsertSort(intdata[],intlen); //希尔排序 voidShellSort(intdata[],intlen); //堆排序 voidHeapSort(intdata[],intlen); //归并排序 voidMergeSort(intdata[],intlen); //快速排序 voidQuickSort(intdata[],intlen); #endif//SORT_H

  • 基于css的3d和动画(2)

    demo地址:http://www.adanghome.com/js_demo/43/===================================================可以利用2d加skew做出伪3d,也就是常说的2.5d视角。也可以用transform3d相关的api做出真的3d。但css3d有些问题不好解决:1)除了立方体,别的形状不好做出来,比如球体、锥体什么的,更别提3d建模。2)阴影效果做不到。3)鼠标事件不好处理,3d和2d的矩阵变化是没法捕获到相关坐标的。好吧,比较简单的效果可以用css3d来处理,复杂的问题还是得交给webgl。。。

  • 面向未来的友好设计:Future Friendly

    一年前翻译了本文的一部分,最近终于翻译完成。虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源。这些概念最早其实是由lukewroblewski,bradfrost等人在同一个设计思想框架下提出的。笔者经“面向未来的友好设计(FutureFriendlyWebDesign)”设计理念联合创始人JasonGrigsby授权,将此设计思想框架首次翻译为中文版本。 能力所限,敬请指正,欢迎传播,转载时请请注明出处。 一、前言 今天,联网的移动设备数量正在疾速增长,人们的上网习惯也在不断改变,移动互联网的浪潮方兴未艾,作为设计师和开发者,需要了解以下几个现状: 设备的碎片化问题凸显。未来将诞生越来越多差异化的可访问Web的设备,人们将通过各种奇葩网络环境来使用它们; 因移动设备间的设计还原能力差异巨大,我们既往千辛万苦沉淀的规范、工作流程、基础框架将无法满足设备间差异化的设计需要; 解决方案总是优于规范而先出来的,在找到跨设备、跨平台的通用解决方案之前,我们只能着手为若干目标设备寻求单

  • vue路由懒加载

    一、懒加载 也叫延迟加载或者按需加载,即在需要的时候进行加载,   二、为什么要使用懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时     简单的说就是:进入首页不用一次加载过多资源造成用时过长   三、非懒加载的路由配置项 四、vue异步组件实现路由懒加载     使用vue的异步组件,可以实现路由的懒加载     {                path:'/home',                name:'home',   

  • Windows下Cmake生成动态库install命令失败、导入库概念

    Windows下Cmake生成动态库install失败、导入库概念 摘要: Windows下cmakeinstall命令安装动态库文件失败 .dll.a和.dll文件的区别 动态库、静态库和导入库 1、Windows下cmakeinstall命令安装动态库文件失败 1.1问题 cmake(V3.10.2)从源文件生成动态库,在Windows下,以MinGWMakefiles(其他未测试)为生成类型,最终会生成libXXX.dll,libXXX.dll.a,libXXX.a类型的库文件。 CMakeLists中install代码如下: add_library(XXXSHARED${SRCS}) add_library(XXXSSTATIC${SRCS}) ... install(TARGETSXXXXXXS #install(TARGETSmyExeXXXXXX #RUNTIMEDESTINATION${CMAKE_SOURCE_DIR}/install/bin LIBRARYDESTINATION${InstallDir}/lib ARCHIVEDESTINATION${I

  • 最新很火的表白小程序源码打包

    下载地址:https://www.lanzous.com/i1dgydc 备用下载:https://pan.baidu.com/s/1V74EZnHWjGxPE-fCRd9b9A 放松一下: 人生如逆旅,我亦是行人,但愿初相见,不负有心人。 加油!

  • Ubuntu14.04下安装DevStack

    下载DevStack gitclonehttps://github.com/openstack-dev/devstack.git复制   更改pip源 #vim~/.pip/pip.conf [global] index-url=http://pypi.douban.com/simple复制   更改devstack/local.conf #Header [[local|localrc]] #Credentials ADMIN_PASSWORD=openstack MYSQL_PASSWORD=$ADMIN_PASSWORD #DATABASE_PASSWORD=$ADMIN_PASSWORD RABBIT_PASSWORD=$ADMIN_PASSWORD SERVICE_PASSWORD=$ADMIN_PASSWORD SERVICE_TOKEN=$ADMIN_PASSWORD #Branches NOVA_BRANCH=stable/icehouse KEYSTONE_BRANCH=stable/icehouse NEUTRON_BRA

  • webpack插件url-loader使用规范

    其实说到性能优化,他的范围太广了,今天我们就只聊一聊通过webpack配置减少http请求数量这个点吧。 简单说下工作中遇到的问题吧,我们做的一个项目中首页用了十多张图片,每张图片都是一个静态资源,所以都会有http请求,为了减少请求,我们可以通过base64编码的方法来展示图片。webpack中有一个包叫做url-loader,他可以将html以及css中的图片打包成base64,但是js中如果有图片url并不能编译成功(后面我会说明),现附上两张图看下普通图片以及base64编码后的图片有啥不同吧。   简单点说,base64就是一串加密的字符串。而且base64编码过的图片是没有http请求的(注意看此图,为什么有的图使用的base64有的却没有,这是有原因的,这个我们稍后解释)。     好吧,现在先回到我们的主角——url-loader,简单看下他的配置参数吧。 { test:/\.(png|jpe?g|gif|svg)(\?.*)?$/, loader:'url-loader', include:[resolve('static'),r

  • 264. Ugly Number II

    思路1 出错代码: classSolution { public: intnthUglyNumber(intn) { if(n==1) { return1; } inti=1; intflag=1; while(1) { i++; if(isUgly(i)) { flag++; } if(flag==n) { break; } } returni; } private: boolisUgly(intn) { vector<int>nums; if(n==3||n==5||n==2) { returntrue; } while(n) { nums.push_back(n%10); n=n/10; } if(nums[0]==5||nums[0]==0) { //可以被5整除 returnisUgly(n/5); } elseif(is3Divisible(nums)) {

  • 进程管理(一)

    在计算机操作系统中,进程是资源分配的基本单位,也是独立运行的基本单位。 程序的顺序执行,主要有以下几个特点。1顺序性,2封闭性,3可再现性   并发程序的特点。 1间断性,2失去封闭性,3不可再现性   程序并发执行的条件,1966年Bernstein给出了程序并发执行的条件。 分别假设有两个集合,读集和写集,分别为R{pi}={a1,a2,a3...,am},W{pi}={b1,b2,b3...bn} 如果两个程序p1p2能满足下述3个条件,他们便可以进行并发且结果具有可再现性。 1,R(p1)∩W(p2)=∅2,R(p2)∩W(p1)=∅3,W(p1)∩W(p2)=∅  前两条保证一个程序在两次读操作之间储存器中的数据不会发生变化,最后一条保证,写操作的结果不会丢失,这是理想状态下。   多道程序环境下,程序的并发执行破坏了程序的封闭性和可再现性。 进程的基本特征: 动态性 并发性 独立性 异步性 进程是一个独立的基本运行单位,也是系统进行资源分配和调度的独立单位。 为了描述和记录进行的运动变化过程,并使之能正确运行,为每个进程配置一个进

  • Scrapy 爬虫完整案例-进阶篇

     Scrapy爬虫完整案例-进阶篇 1.1 进阶篇案例一 案例:爬取豆瓣电影top250(movie.douban.com/top250)的电影数据,并保存在MongoDB中。   案例步骤: 第一步:明确爬虫需要爬取的内容。 我们做爬虫的时候,需要明确需要爬取的内容,豆瓣电影TOP250,我们需要抓取每一部电影的名字,电影的描述信息(包括导演、主演、电影类型等等),电影的评分,以及电影中最经典或者脍炙人口的一句话。 例如:肖申克的救赎   电影的名字:肖申克的救赎。 电影信息(导演:弗兰克·德拉邦特;主演:蒂姆·罗宾斯/摩根·弗里曼/鲍勃·冈顿/威廉姆·赛德勒/克兰西·布朗/更多...;电影类型:剧情/犯罪。) 豆瓣电影评分:9.6。 脍炙人口的一句话:希望让人自由。 第二步:创建爬虫项目。 在dos下切换到目录 D:\scrapy_project   新建一个新的爬虫项目:scrapystartprojectdouban   第三步:创建爬虫。 在dos下切换到目录。 D:\scrapy_project\douban\d

相关推荐

推荐阅读