自动补全、回滚!介绍一款可视化 sql 诊断利器

Yearning简介

=================

Yearning MYSQL 是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易!

项目地址:https://gitee.com/cookieYe/Ye…

注意:

Yearning 1.x版本需inception提供SQL审核及回滚功能。

Yearning 2.0开始无需依赖Inception,已自己实现了SQL审核/回滚功能

Yearning 功能介绍

================

  • SQL查询
  • 查询工单
  • 导出
  • 自动补全,智能提示
  • 查询语句审计
  • SQL审核
  • 流程化工单
  • SQL语句检测与执行
  • SQL回滚
  • 历史审核记录
  • 推送
  • E-mail工单推送
  • 钉钉webhook机器人工单推送
  • 用户权限及管理
  • 角色划分
  • 基于用户的细粒度权限
  • 注册
  • 其他
  • todoList
  • LDAP登录
  • 动态审核规则配置
  • AutoTask自动执行

Yearning安装

Yearning 不依赖于任何第三方SQL审核工具作为审核引擎,内部已自己实现审核/回滚相关逻辑。

  • 仅依赖Mysql数据库。mysql版本必须5.7及以上版本,创建Yearning库字符集应为UTF8mb4(仅Yearning所需mysql版本)
  • Yearning日志仅输出error级别,没有日志即可认为无运行错误!
  • Yearning 基于1080p分辨率开发仅支持1080p及以上显示器访问

Yearning下载

Yearning-go官方提供二进制下载包,下载地址 https://github.com/cookieY/Ye…。选择你所需要下载的软件包进行下载。

源码安装:你先需要安装一些依赖等,一些相关的安装步骤如下:

<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">~]# <span class="hljs-string">git <span class="hljs-string">clone <span class="hljs-string">https://github.com/cookieY/Yearning.git
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">~]# <span class="hljs-string">mv <span class="hljs-string">Yearning <span class="hljs-string">/usr/local/yearning
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">~]# <span class="hljs-string">cd <span class="hljs-string">/usr/local/yearning/
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">yearning]# <span class="hljs-string">cd <span class="hljs-string">install/
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">install]# <span class="hljs-string">ll
<span class="hljs-string">total <span class="hljs-number">26728
<span class="hljs-string">-rw-r--r-- <span class="hljs-number">1 <span class="hljs-string">root <span class="hljs-string">root <span class="hljs-number">57763 <span class="hljs-string">Apr <span class="hljs-number">23 <span class="hljs-number">16<span class="hljs-string">:06 <span class="hljs-string">connections.py
<span class="hljs-string">-rw-r--r-- <span class="hljs-number">1 <span class="hljs-string">root <span class="hljs-string">root <span class="hljs-number">16818 <span class="hljs-string">Apr <span class="hljs-number">23 <span class="hljs-number">16<span class="hljs-string">:06 <span class="hljs-string">cursors.py
<span class="hljs-string">-rw-r--r-- <span class="hljs-number">1 <span class="hljs-string">root <span class="hljs-string">root <span class="hljs-number">679 <span class="hljs-string">Apr <span class="hljs-number">23 <span class="hljs-number">16<span class="hljs-string">:06 <span class="hljs-string">docker_start.sh
<span class="hljs-string">-rw-r--r-- <span class="hljs-number">1 <span class="hljs-string">root <span class="hljs-string">root <span class="hljs-number">27270656 <span class="hljs-string">Apr <span class="hljs-number">23 <span class="hljs-number">16<span class="hljs-string">:06 <span class="hljs-string">inception.tar  <span class="hljs-string">-rw-r--r-- <span class="hljs-number">1 <span class="hljs-string">root <span class="hljs-string">root <span class="hljs-number">11762 <span class="hljs-string">Apr <span class="hljs-number">23 <span class="hljs-number">16<span class="hljs-string">:06 <span class="hljs-string">Yearning.sh
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">install]# <span class="hljs-string">tar <span class="hljs-string">xf <span class="hljs-string">inception.tar
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">install]# <span class="hljs-string">cd <span class="hljs-string">inception/bin/
<span class="hljs-string">[root@test&#xA0;<span class="hljs-string">bin]# <span class="hljs-string">ll
<span class="hljs-string">total <span class="hljs-number">12472
<span class="hljs-string">-rw-r--r-- <span class="hljs-number">1 <span class="hljs-number">501 <span class="hljs-string">games <span class="hljs-number">722 <span class="hljs-string">Jan <span class="hljs-number">3 <span class="hljs-number">10<span class="hljs-string">:39 <span class="hljs-string">inc.cnf
<span class="hljs-string">-rwxr-xr-x <span class="hljs-number">1 <span class="hljs-number">501 <span class="hljs-string">games <span class="hljs-number">9016999 <span class="hljs-string">Oct <span class="hljs-number">12 <span class="hljs-number">2017 <span class="hljs-string">Inception
<span class="hljs-string">-rwxr-xr-x <span class="hljs-number">1 <span class="hljs-number">501 <span class="hljs-string">games <span class="hljs-number">3747312 <span class="hljs-string">Oct <span class="hljs-number">12 <span class="hljs-number">2017 <span class="hljs-string">mysql</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

不过现在官方让直接下载.zip包,直接解压即可(所以这里就不建议使用源码安装了),比较方便。

mysql>&#xA0;create database&#xA0;<span class="hljs-type">Yearning&#xA0;<span class="hljs-keyword">default&#xA0;character&#xA0;<span class="hljs-keyword">set&#xA0;utf8mb4 collate utf8mb4_unicode_ci;<span class="hljs-type">Query&#xA0;<span class="hljs-type">OK,&#xA0;<span class="hljs-number">1&#xA0;row affected (<span class="hljs-number">0.00&#xA0;sec)</span></span></span></span></span></span></span>
mysql> show databases;
+--------------------+
<span class="hljs-params">| Database&#xA0; &#xA0;    &#xA0; &#xA0; |
+--------------------+
<span class="hljs-params">| information_schema |
<span class="hljs-params">| Yearning&#xA0; &#xA0;     &#xA0; &#xA0;|
<span class="hljs-params">| mysql&#xA0; &#xA0; &#xA0; &#xA0;      &#xA0;|
<span class="hljs-params">| performance_schema |
<span class="hljs-params">| sys&#xA0; &#xA0; &#xA0; &#xA0;      &#xA0; &#xA0;|
+--------------------+
<span class="hljs-number">5&#xA0;rows&#xA0;<span class="hljs-keyword">in&#xA0;set (<span class="hljs-number">0.<span class="hljs-number">00&#xA0;sec)</span></span></span></span></span></span></span></span></span></span>

只需要提前安装好Mysql数据库,并按前面的要求进行配置即可。

<span class="hljs-string">[root@CentOS7-1 <span class="hljs-string">~]#&#xA0;<span class="hljs-string">ll
<span class="hljs-string">total&#xA0;<span class="hljs-number">14036
<span class="hljs-string">-rw-------. <span class="hljs-number">1&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-number">1320&#xA0;<span class="hljs-string">Apr&#xA0;&#xA0;<span class="hljs-number">8 <span class="hljs-number">05<span class="hljs-string">:08&#xA0;<span class="hljs-string">anaconda-ks.cfg
<span class="hljs-string">-rw-r--r--&#xA0;&#xA0;<span class="hljs-number">1&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-number">14349178&#xA0;<span class="hljs-string">Apr&#xA0;<span class="hljs-number">11 <span class="hljs-number">09<span class="hljs-string">:26&#xA0;<span class="hljs-string">Yearning-2.2.0.linux-amd64.zip</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

上面我们直接从github上下载的最新版本2.2.0:

<span class="hljs-string">[root@CentOS7-1 <span class="hljs-string">~]#&#xA0;<span class="hljs-string">cd&#xA0;<span class="hljs-string">Yearning-go/
<span class="hljs-string">[root@CentOS7-1 <span class="hljs-string">Yearning-go]#&#xA0;<span class="hljs-string">ll
<span class="hljs-string">total&#xA0;<span class="hljs-number">9772
<span class="hljs-string">-rw-r--r--&#xA0;<span class="hljs-number">1&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-number">127&#xA0;<span class="hljs-string">Aug&#xA0;&#xA0;<span class="hljs-number">1&#xA0;&#xA0;<span class="hljs-number">2019&#xA0;<span class="hljs-string">conf.toml
<span class="hljs-string">drwxr-xr-x&#xA0;<span class="hljs-number">6&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-number">116&#xA0;<span class="hljs-string">Apr&#xA0;&#xA0;<span class="hljs-number">6&#xA0;<span class="hljs-number">22<span class="hljs-string">:32&#xA0;<span class="hljs-string">dist
<span class="hljs-string">-rw-r--r--&#xA0;<span class="hljs-number">1&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-number">620&#xA0;<span class="hljs-string">Jan&#xA0;&#xA0;<span class="hljs-number">8&#xA0;<span class="hljs-number">21<span class="hljs-string">:06&#xA0;<span class="hljs-string">docker-compose.yml
<span class="hljs-string">-rw-r--r--&#xA0;<span class="hljs-number">1&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-number">597&#xA0;<span class="hljs-string">Aug&#xA0;<span class="hljs-number">21&#xA0;&#xA0;<span class="hljs-number">2019&#xA0;<span class="hljs-string">Dockerfile
<span class="hljs-string">-rw-r--r--&#xA0;<span class="hljs-number">1&#xA0;<span class="hljs-string">root&#xA0;<span class="hljs-string">root&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-number">177&#xA0;<span class="hljs-string">Aug&#xA0;<span class="hljs-number">23&#xA0;&#xA0;<span class="hljs-number">2019&#xA0;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

修改配置文件

vim conf.toml

[Mysql]
Db =&#xA0;<span class="hljs-string">"Yearning"
Host =&#xA0;<span class="hljs-string">"127.0.0.1"
Port =&#xA0;<span class="hljs-string">"3306"
Password =&#xA0;<span class="hljs-string">"xxxx"
User =&#xA0;<span class="hljs-string">"root"

[General]&#xA0;</span></span></span></span></span>

SecretKey是token/数据库密码加密/解密的salt。建议所有用户在初次安装Yearning之前将SecretKey更改(不更改将存在安全风险),格式: 大小写字母均可, 长度必须为16位。 特别注意:此key仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息。

初始化

./Yearning -m

务必在-s启动前首先执行-m 初始化操作!如要再次初始化,需要把yearning库下所有表删除,否则重复执行无效。

启动服务

使用帮助

<span class="hljs-selector-attr">[root@CentOS7-1 Yearning-go]# ./<span class="hljs-selector-tag">Yearning&#xA0;<span class="hljs-selector-tag">-h
<span class="hljs-selector-tag">version:&#xA0;<span class="hljs-selector-tag">Yearning/<span class="hljs-selector-tag">2<span class="hljs-selector-class">.2<span class="hljs-selector-class">.0&#xA0;<span class="hljs-selector-tag">general&#xA0;<span class="hljs-selector-tag">author:&#xA0;<span class="hljs-selector-tag">HenryYee
<span class="hljs-selector-tag">Usage:&#xA0;<span class="hljs-selector-tag">Yearning&#xA0;<span class="hljs-selector-attr">[-m migrate]&#xA0;<span class="hljs-selector-attr">[-p port]&#xA0;<span class="hljs-selector-attr">[-s start]&#xA0;<span class="hljs-selector-attr">[-b web-bind]&#xA0;<span class="hljs-selector-attr">[-h help]&#xA0;<span class="hljs-selector-attr">[-c config file]

<span class="hljs-selector-tag">Options:&#xA0;<span class="hljs-selector-tag">-s&#xA0;&#xA0;&#x542F;&#x52A8;<span class="hljs-selector-tag">Yearning&#xA0;
<span class="hljs-selector-tag">-m&#xA0;&#xA0;&#x6570;&#x636E;&#x521D;&#x59CB;&#x5316;(&#x7B2C;&#x4E00;&#x6B21;&#x5B89;&#x88C5;&#x65F6;&#x6267;&#x884C;)&#xA0;
<span class="hljs-selector-tag">-p&#xA0;&#xA0;&#x7AEF;&#x53E3;&#xA0;
<span class="hljs-selector-tag">-b&#xA0;&#xA0;&#x9489;&#x9489;/&#x90AE;&#x4EF6;&#x63A8;&#x9001;&#x65F6;&#x663E;&#x793A;&#x7684;&#x5E73;&#x53F0;&#x5730;&#x5740;&#xA0;
<span class="hljs-selector-tag">-x&#xA0;&#xA0;&#x8868;&#x7ED3;&#x6784;&#x4FEE;&#x590D;,&#x5347;&#x7EA7;&#x65F6;&#x53EF;&#x4EE5;&#x64CD;&#x4F5C;&#x3002;&#x5982;&#x51FA;&#x73B0;&#x9519;&#x8BEF;&#x53EF;&#x76F4;&#x63A5;&#x5FFD;&#x7565;&#x3002;&#xA0;
<span class="hljs-selector-tag">-h&#xA0;&#xA0;&#x5E2E;&#x52A9;&#xA0;
<span class="hljs-selector-tag">-c&#xA0;&#xA0;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x8DEF;&#x5F84;&#xA0;
<span class="hljs-selector-tag">-k&#xA0;&#xA0;&#x7528;&#x6237;&#x6743;&#x9650;&#x53D8;&#x66F4;&#x4E3A;&#x6743;&#x9650;&#x7EC4;(<span class="hljs-number">2.1.<span class="hljs-number">7&#x4EE5;&#x4E0B;&#x5347;&#x7EA7;&#x81F3;<span class="hljs-number">2.1.<span class="hljs-number">7&#x53CA;&#x4EE5;&#x4E0A;&#x4F7F;&#x7528;)&#xA0;
<span class="hljs-selector-tag">-f&#xA0;&#xA0;&#x521D;&#x59CB;&#x5316;<span class="hljs-selector-tag">Admin&#x7528;&#x6237;&#x5BC6;&#x7801;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

打开浏览器 http://192.168.1.9:8000

默认密码:admin/Yearning_admin

相关功能模块介绍

1、用户模块

Dashboard:dashboard主要展示Yearning各项数据包括用户数/数据源数/工单数/查询数以及其他图表,个人信息栏内用户可以修改密码/邮箱/真实姓名,同时可以查看该用户权限以及申请权限(申请权限2.1.7版本后作废)。

我的工单:展示用户提交的工单信息,对于执行失败/驳回的工单点击详细信息后可以重新修改sql并提交,对于执行成功的工单可以查看回滚语句并且快速提交SQL。

工单DLL:DDL相关SQL提交审核,查看表结构/索引,SQL语法高亮/自动补全。

DML审核:DML相关SQL提交审核,SQL语法高亮/自动补全。

查询:查询/导出数据 SQL语法高亮/自动补全 快速DML语句提交。

2、审核模块

工单审核:DDL/DML管理员审核并执行。

查询审核:用户的查询审核。

权限审核:用户的权限审核(2.1.7版本以下)

3、管理管理模块

用户管理:创建/修改/删除用户

数据库管理:添加/编辑/删除 数据源

自动补全、回滚!介绍一款可视化 sql 诊断利器用户权限:用户权限修改/清空

功能设置:设置消息推送相关信息 包括钉钉机器人/email,设置LDAP相关信息,全局配置信息,全局配置开关

审核规则:设置SQL检测规则

AutoTask自动执行任务

2.1.4版本新增:用户可通过改功能设置自动执行任务。当提交的dml语句符合相应任务条件。将会自动执行,无需审核人审核。该功能仅限dml语句使用。请慎重使用!

总结

Yearning是一个SQL审核平台,在一定程度上可以解决运维与开发中间的问题,遗憾的是只支持Mysql,感兴趣的可以尝试下!

参考资料:
https://guide.yearning.io/
https://gitee.com/cookieYe/Ye…

Original: https://www.cnblogs.com/youkanyouxiao/p/12731294.html
Author: 民工哥
Title: 自动补全、回滚!介绍一款可视化 sql 诊断利器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591664/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【MySQL】试题 — 31道巩固 SQL 语句的练习题

    1.取得每个部门最高薪水的人员名称先拿出各部门的最高工资,再与(最高工资对应的人员名录表)对接为临时表。 [En] First take out the maximum salar…

    数据库 2023年5月24日
    094
  • FIO磁盘性能测试工具

    FIO磁盘性能测试工具 简介 一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。…

    数据库 2023年6月9日
    080
  • [javaweb]监听器统计网页在线人数

    监听器 1.配置监听器 package com.javaweb.controller; import javax.servlet.ServletContext; import ja…

    数据库 2023年6月16日
    094
  • 基于Vue简易封装的快速构建Echarts组件 — fx67llQuickEcharts

    fx67llQuickEcharts A tool to help you use Echarts quickly! npm 组件说明 这本来是一个测试如何发布Vue组件至npm库…

    数据库 2023年6月11日
    098
  • MySQL实战45讲 15

    15 | 答疑文章(一):日志和索引相关问题 日志相关 binlog(归档日志)和redo log(重做日志)配合崩溃恢复,在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎…

    数据库 2023年5月24日
    0106
  • MySQL实战45讲 14

    14 | count(*)这么慢,我该怎么办? 在开发系统时,您可能经常需要计算表中的行数,例如交易系统中的变动记录总数。 [En] When developing a syste…

    数据库 2023年5月24日
    089
  • 名言小抄(六)

    1.一个人对世界最大的贡献就是让自己快乐起来。 4.人生最好的三个词 久别重逢、失而复得、虚惊一场却没有,和好如初 ,只因和好容易,如初太难。很多东西,一旦打破,就很难圆满。有些故…

    数据库 2023年6月16日
    080
  • ShardingSphere-Proxy 前端协议问题排查方法及案例

    ShardingSphere-Proxy 是 Apache ShardingSphere 的接入端之一,其定位为透明化的数据库代理。ShardingSphere-Proxy 实现了…

    数据库 2023年6月16日
    086
  • [javaweb]jsp,jstl,el表达式的使用

    jsp java server page:java服务器前端页面,和servlet一样,用于动态web开发。 特点: 写jsp页面就像在写html html只给用户提供静态数据,j…

    数据库 2023年6月16日
    083
  • 重构

    参数过长 影响: 方法不易被理解、使用,方法签名容易不稳定,不易维护 解决方法:反复使用提炼方法+内联方法,消除多余参数 ​ 尽量把方法移进相关的类中 ​ 如实体类中的get方法在…

    数据库 2023年6月16日
    0208
  • JVM-虚拟机栈

    运行时数据区-虚拟机栈 JAVA技术交流群:737698533 java虚拟机在执行java程序过程中会把它所管理的内存划分为若干个不同的区域,这些区域各有各的作用,根据java虚…

    数据库 2023年6月16日
    0111
  • 从零开始搭建高可用的k8s集群

    一、环境准备 使用Hyper-V虚拟机功能搭建三台Centos虚拟机系统,配置好静态IP,分别为k8s-node1(192.168.0.8),k8s-node2(192.168.0…

    数据库 2023年6月14日
    087
  • 多商户商城系统功能拆解25讲-平台端分销申请

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    079
  • StoneDB 读、写操作的执行过程

    背景介绍 StoneDB 是一款兼容 MySQL 的开源 HTAP 数据库。StoneDB 的整体架构分为三层,分别是应用层、服务层和存储引擎层。应用层主要负责客户端的连接管理和权…

    数据库 2023年5月24日
    090
  • 2022-08-19 PreparedStatement

    PreparedStatement接口是 Statement的子接口,它表示一条预编译过的SQL语句 什么是SQL注入 SQL注入是利用某些系统没有对用户输入的数据进行充分的检查,…

    数据库 2023年5月24日
    096
  • Java8Stream流

    Stream流呢,以前我也有所了解,像一些面试题中也出现过,Java8的新特性,有一块就是这个Stream操作集合,而且在看一些项目中也使用的比较多。但总感觉自己学的一知半解,所以…

    数据库 2023年6月11日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球