Yearning简介
=================
Yearning MYSQL 是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易!
注意:
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 <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 <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 <span class="hljs-string">~]# <span class="hljs-string">cd <span class="hljs-string">/usr/local/yearning/
<span class="hljs-string">[root@test <span class="hljs-string">yearning]# <span class="hljs-string">cd <span class="hljs-string">install/
<span class="hljs-string">[root@test <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 <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 <span class="hljs-string">install]# <span class="hljs-string">cd <span class="hljs-string">inception/bin/
<span class="hljs-string">[root@test <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> create database <span class="hljs-type">Yearning <span class="hljs-keyword">default character <span class="hljs-keyword">set utf8mb4 collate utf8mb4_unicode_ci;<span class="hljs-type">Query <span class="hljs-type">OK, <span class="hljs-number">1 row affected (<span class="hljs-number">0.00 sec)</span></span></span></span></span></span></span>
mysql> show databases;
+--------------------+
<span class="hljs-params">| Database        |
+--------------------+
<span class="hljs-params">| information_schema |
<span class="hljs-params">| Yearning       |
<span class="hljs-params">| mysql         |
<span class="hljs-params">| performance_schema |
<span class="hljs-params">| sys           |
+--------------------+
<span class="hljs-number">5 rows <span class="hljs-keyword">in set (<span class="hljs-number">0.<span class="hljs-number">00 sec)</span></span></span></span></span></span></span></span></span></span>
只需要提前安装好Mysql数据库,并按前面的要求进行配置即可。
<span class="hljs-string">[root@CentOS7-1 <span class="hljs-string">~]# <span class="hljs-string">ll
<span class="hljs-string">total <span class="hljs-number">14036
<span class="hljs-string">-rw-------. <span class="hljs-number">1 <span class="hljs-string">root <span class="hljs-string">root     <span class="hljs-number">1320 <span class="hljs-string">Apr  <span class="hljs-number">8 <span class="hljs-number">05<span class="hljs-string">:08 <span class="hljs-string">anaconda-ks.cfg
<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">14349178 <span class="hljs-string">Apr <span class="hljs-number">11 <span class="hljs-number">09<span class="hljs-string">:26 <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">~]# <span class="hljs-string">cd <span class="hljs-string">Yearning-go/
<span class="hljs-string">[root@CentOS7-1 <span class="hljs-string">Yearning-go]# <span class="hljs-string">ll
<span class="hljs-string">total <span class="hljs-number">9772
<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">127 <span class="hljs-string">Aug  <span class="hljs-number">1  <span class="hljs-number">2019 <span class="hljs-string">conf.toml
<span class="hljs-string">drwxr-xr-x <span class="hljs-number">6 <span class="hljs-string">root <span class="hljs-string">root     <span class="hljs-number">116 <span class="hljs-string">Apr  <span class="hljs-number">6 <span class="hljs-number">22<span class="hljs-string">:32 <span class="hljs-string">dist
<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">620 <span class="hljs-string">Jan  <span class="hljs-number">8 <span class="hljs-number">21<span class="hljs-string">:06 <span class="hljs-string">docker-compose.yml
<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">597 <span class="hljs-string">Aug <span class="hljs-number">21  <span class="hljs-number">2019 <span class="hljs-string">Dockerfile
<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">177 <span class="hljs-string">Aug <span class="hljs-number">23  <span class="hljs-number">2019 </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 = <span class="hljs-string">"Yearning"
Host = <span class="hljs-string">"127.0.0.1"
Port = <span class="hljs-string">"3306"
Password = <span class="hljs-string">"xxxx"
User = <span class="hljs-string">"root"
[General] </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 <span class="hljs-selector-tag">-h
<span class="hljs-selector-tag">version: <span class="hljs-selector-tag">Yearning/<span class="hljs-selector-tag">2<span class="hljs-selector-class">.2<span class="hljs-selector-class">.0 <span class="hljs-selector-tag">general <span class="hljs-selector-tag">author: <span class="hljs-selector-tag">HenryYee
<span class="hljs-selector-tag">Usage: <span class="hljs-selector-tag">Yearning <span class="hljs-selector-attr">[-m migrate] <span class="hljs-selector-attr">[-p port] <span class="hljs-selector-attr">[-s start] <span class="hljs-selector-attr">[-b web-bind] <span class="hljs-selector-attr">[-h help] <span class="hljs-selector-attr">[-c config file]
<span class="hljs-selector-tag">Options: <span class="hljs-selector-tag">-s  启动<span class="hljs-selector-tag">Yearning 
<span class="hljs-selector-tag">-m  数据初始化(第一次安装时执行) 
<span class="hljs-selector-tag">-p  端口 
<span class="hljs-selector-tag">-b  钉钉/邮件推送时显示的平台地址 
<span class="hljs-selector-tag">-x  表结构修复,升级时可以操作。如出现错误可直接忽略。 
<span class="hljs-selector-tag">-h  帮助 
<span class="hljs-selector-tag">-c  配置文件路径 
<span class="hljs-selector-tag">-k  用户权限变更为权限组(<span class="hljs-number">2.1.<span class="hljs-number">7以下升级至<span class="hljs-number">2.1.<span class="hljs-number">7及以上使用) 
<span class="hljs-selector-tag">-f  初始化<span class="hljs-selector-tag">Admin用户密码</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、管理管理模块
用户管理:创建/修改/删除用户
数据库管理:添加/编辑/删除 数据源
用户权限:用户权限修改/清空功能设置:设置消息推送相关信息 包括钉钉机器人/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/
转载文章受原作者版权保护。转载请注明原作者出处!