17

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

 4 years ago
source link: https://segmentfault.com/a/1190000022420070
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Yearning简介

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

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

2UVzAbE.jpg!web

项目地址: 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... 。选择你所需要下载的软件包进行下载。

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

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

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

mysql> create database Yearning default character set utf8mb4 collate utf8mb4_unicode_ci;Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Yearning           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

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

[root@CentOS7-1 ~]# ll
total 14036
-rw-------. 1 root root     1320 Apr  8 05:08 anaconda-ks.cfg
-rw-r--r--  1 root root 14349178 Apr 11 09:26 Yearning-2.2.0.linux-amd64.zip

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

[root@CentOS7-1 ~]# cd Yearning-go/
[root@CentOS7-1 Yearning-go]# ll
total 9772
-rw-r--r-- 1 root root     127 Aug  1  2019 conf.toml
drwxr-xr-x 6 root root     116 Apr  6 22:32 dist
-rw-r--r-- 1 root root     620 Jan  8 21:06 docker-compose.yml
-rw-r--r-- 1 root root     597 Aug 21  2019 Dockerfile
-rw-r--r-- 1 root root     177 Aug 23  2019 # README
-rwxr--r-- 1 root root 9985356 Apr  6 22:35 Yearning
-rw-r--r-- 1 root root     283 Jan 15 03:55 yearning.service

修改配置文件

vim conf.toml

[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "3306"
Password = "xxxx"
User = "root"

[General] #数据库加解密key,只可更改一次。
SecretKey = "dbcjqheupqjsuwsm"
SecretKey是token/数据库密码加密/解密的salt。建议所有用户在初次安装Yearning之前将SecretKey更改(不更改将存在安全风险),格式: 大小写字母均可, 长度必须为16位。

特别注意:此key仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息。

初始化

./Yearning -m

BvqIZfV.png!web

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

启动服务

#默认启动
./Yearning -s

#参数启动
./Yearning -s -b "192.168.1.9" -p "8000"

e6RRziI.png!web

使用帮助

[root@CentOS7-1 Yearning-go]# ./Yearning -h
version: Yearning/2.2.0 general author: HenryYee
Usage: Yearning [-m migrate] [-p port] [-s start] [-b web-bind] [-h help] [-c config file]

Options: -s  启动Yearning 
-m  数据初始化(第一次安装时执行) 
-p  端口 
-b  钉钉/邮件推送时显示的平台地址 
-x  表结构修复,升级时可以操作。如出现错误可直接忽略。 
-h  帮助 
-c  配置文件路径 
-k  用户权限变更为权限组(2.1.7以下升级至2.1.7及以上使用) 
-f  初始化Admin用户密码

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

默认密码:admin/Yearning_admin

MNJnu2I.png!web

相关功能模块介绍

1、用户模块

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

6vA7Vf3.png!web

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

UJNfiyM.jpg!web

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

J3Mjyy3.jpg!web

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

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

aYjEf2z.jpg!web

2、审核模块

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

RryAbyU.jpg!web

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

zqiI7fa.jpg!web

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

ABVFFrZ.jpg!web

3、管理管理模块

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

BzUramq.jpg!web

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

VvqA7nz.jpg!web 用户权限:用户权限修改/清空

YbuaA3n.jpg!web

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

iyyQJnV.jpg!web

QVjYFfM.jpg!web

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

RRj6jaI.jpg!web

AutoTask自动执行任务

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

总结

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK