SQL审核工具Yearning搭建及使用

news2024/11/29 4:51:50

一、背景

实际的业务场景中,我们难免会直接对生产库的数据进行修改。很多朋友都是发sql给运维,然后运维执行。过程不可控,出错几率很大。
而且没有审核,不知道提交的具体是什么sql,极有可能是删库跑路的sql,哈哈哈。
那为了避免这种尴尬呢,就得有审核机制了。而Yearning就是不错的选择。

二、Yearning安装

官方安装文档 https://guide.yearning.io/install.html

2.1 建立yearning库

CREATE DATABASE Yearning DEFAULT CHARACTER SET utf8mb4;

2.2 下载解压 Yearning

去这里下载最新版本 https://github.com/cookieY/Yearning/releases
在这里插入图片描述

wget https://github.com/cookieY/Yearning/releases/download/v3.0.0/Yearning-v3.0.0-linux-amd64.zip

[root@sg yearning]# wget https://github.com/cookieY/Yearning/releases/download/v3.0.0/Yearning-v3.0.0-linux-amd64.zip
--2022-06-16 09:45:11--  https://github.com/cookieY/Yearning/releases/download/v3.0.0/Yearning-v3.0.0-linux-amd64.zip
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://objects.githubusercontent.com/github-production-release-asset-2e65be/107417113/f74f4655-ff07-42c7-90eb-68b4b73e29c4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220616%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220616T014512Z&X-Amz-Expires=300&X-Amz-Signature=2cbe1ead66ea15d220b2f17cb5a9d5bef1acc2efd2e5f2aed389925a98586cc7&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=107417113&response-content-disposition=attachment%3B%20filename%3DYearning-v3.0.0-linux-amd64.zip&response-content-type=application%2Foctet-stream [跟随至新的 URL]
--2022-06-16 09:45:12--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/107417113/f74f4655-ff07-42c7-90eb-68b4b73e29c4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220616%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220616T014512Z&X-Amz-Expires=300&X-Amz-Signature=2cbe1ead66ea15d220b2f17cb5a9d5bef1acc2efd2e5f2aed389925a98586cc7&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=107417113&response-content-disposition=attachment%3B%20filename%3DYearning-v3.0.0-linux-amd64.zip&response-content-type=application%2Foctet-stream
正在解析主机 objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
正在连接 objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:20513606 (20M) [application/octet-stream]
正在保存至: “Yearning-v3.0.0-linux-amd64.zip”

100%[==========================================================================================================================================>] 20,513,606  29.5KB/s 用时 13m 47s

2022-06-16 09:59:00 (24.2 KB/s) - 已保存 “Yearning-v3.0.0-linux-amd64.zip” [20513606/20513606])

解压后:
在这里插入图片描述

2.3 填写配置文件

cat conf.toml
[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "3306"
Password = "your password"
User = "root"

[General]
#数据库加解密key,只可更改一次。自定义设置后,不要再次修改
SecretKey = "JYkyLDtmqNaXICoV"

2.4 初始化及安装./Yearning install

[root@sg Yearning]# ./Yearning install
是否已将数据库字符集设置为UTF8/UTF8MB4? [yes|no]: yes

(/Users/henryyee/Yearning-go/src/service/migrate.go:33) 
[2022-06-16 10:33:00]  [0.55ms]  INSERT INTO `core_accounts` (`username`,`password`,`department`,`real_name`,`email`,`is_recorder`) VALUES ('admin','pbkdf2_sha256$120000$4ySnzFwzcCuS$I9XWyE0S/bG3KY93tN9fR3R94pvy6UA3psiGT4CAp7I=','DBA','超级管理员','',0)  
[1 rows affected or returned ] 

(/Users/henryyee/Yearning-go/src/service/migrate.go:40) 
[2022-06-16 10:33:00]  [1.07ms]  INSERT INTO `core_global_configurations` (`authorization`,`ldap`,`message`,`other`,`stmt`,`audit_role`,`board`) VALUES ('global','{"url":"","user":"","password":"","type":"(\u0026(objectClass=organizationalPerson)(sAMAccountName=%s))","sc":"","ldaps":false,"map":"","test_user":"","test_password":""}','{"web_hook":"","host":"","port":25,"user":"","password":"","to_user":"","mail":false,"ding":false,"ssl":false,"push_type":false,"key":""}','{"limit":1000,"idc":["Aliyun","AWS"],"query":false,"register":false,"export":false,"ex_query_time":60}',0,'{"DMLAllowLimitSTMT":false,"DMLInsertColumns":false,"DMLMaxInsertRows":10,"DMLWhere":false,"DMLOrder":false,"DMLSelect":false,"DMLInsertMustExplicitly":false,"DDLEnablePrimaryKey":false,"DDLCheckTableComment":false,"DDlCheckColumnComment":false,"DDLCheckColumnNullable":false,"DDLCheckColumnDefault":false,"DDLEnableAcrossDBRename":false,"DDLEnableAutoincrementInit":false,"DDLEnableAutoIncrement":false,"DDLEnableAutoincrementUnsigned":false,"DDLEnableDropTable":false,"DDLEnableDropDatabase":false,"DDLEnableNullIndexName":false,"DDLIndexNameSpec":false,"DDLMaxKeyParts":5,"DDLMaxKey":5,"DDLMaxCharLength":10,"MaxTableNameLen":10,"MaxAffectRows":1000,"MaxDDLAffectRows":0,"SupportCharset":"","SupportCollation":"","CheckIdentifier":false,"MustHaveColumns":"","DDLMultiToCommit":false,"DDLPrimaryKeyMust":false,"DDLAllowColumnType":false,"DDLImplicitTypeConversion":false,"DDLAllowPRINotInt":false,"DDLEnableForeignKey":false,"DDLTablePrefix":"","DDLColumnsMustHaveIndex":"","DDLAllowChangeColumnPosition":false,"DDLCheckFloatDouble":false,"IsOSC":false,"OSCExpr":"","OscSize":0,"AllowCreateView":false,"AllowCrateViewWithSelectStar":false,"AllowCreatePartition":false,"AllowSpecialType":false,"PRIRollBack":false}','')  
[1 rows affected or returned ] 

(/Users/henryyee/Yearning-go/src/service/migrate.go:47) 
[2022-06-16 10:33:00]  [0.35ms]  INSERT INTO `core_graineds` (`username`,`group`) VALUES ('admin','["admin"]')  
[1 rows affected or returned ] 

初始化后的数据库表如下:
在这里插入图片描述

2.5 启动

./Yearning run --push "172.12.1.7" --port "8000"
[root@sg Yearning]# ./Yearning run --push "172.12.1.7" --port "8000"
检查更新.......
数据已更新!

    __  __          
    _ \/ /_________ 
    __  /_  _ \  _ \
    _  / /  __/  __/
    /_/  \___/\___/   yee v0.3.3
-----Easier and Faster-----
Creator: Henry Yee

2.5 访问

浏览器输入:http://你的IP:8000
在这里插入图片描述
默认账号/密码:admin/Yearning_admin
登录后:
在这里插入图片描述
至此,下载安装配置完成。

三、Yearning配置使用

3.1 配置环境

点击“设置”可以自定义环境;也可以设置提醒邮件等。

在这里插入图片描述

3.2 配置数据源

配置数据源之前,得先配置流程
在这里插入图片描述

在这里插入图片描述

3.3 配置权限组

在这里插入图片描述
就是配置拥有DML、DDL、Query权限的数据库列表:以配置只读组为例:
在这里插入图片描述

3.4 新建用户并赋权限

下面是新建一个queryUser的用户,赋予只读组的权限(新建用户后,在右侧权限里设置即可)。
在这里插入图片描述
建一个写用户
在这里插入图片描述

四、Yearning测试

4.1 读用户测试

我们用queryUser登录后,发现可以查询的数据源有1个。
在这里插入图片描述
点击数据源可以查看对应数据库示例中的数据库:
双击数据库打开,可以看到表
右键表,可以查看表数据
在这里插入图片描述
也可以手动写sql查询:
在这里插入图片描述
执行update操作会提示错误信息:
在这里插入图片描述

4.2 写用户测试

使用wirteUser执行一条update语句
首先,需要申请工单:
在这里插入图片描述
写完sql后,需要先右键-SQL检测一下,监测通过后,“提交” 按钮才是可点击的;
在这里插入图片描述
提交后,点击我的工单,查看刚提交的工单信息,发现是待审核状态;
在这里插入图片描述
用admin进行审核:
admin登录后,点击审核下的工单,可以查看已经提交的工单列表。
在这里插入图片描述
点击右侧的 “详情” 按钮:刚进来后,“同意” 按钮也是置灰的,需要先进行SQL检测 通过后,才可以点击同意。

在这里插入图片描述
点击同意后,发现已经转交给执行者admin了
此处说明下,上述我们设置的流程是:提交-审核-执行,故为3个阶段,只是目前审核和执行都是admin罢了。一般是提交人提交—> 专门的管理员(一般是技术组长、领导等)审核------> 数据库管理员/运维具体执行。
在这里插入图片描述
最后,我们执行下,然后查看下改后的状态:
同意执行后,工单变为已完成状态。
在这里插入图片描述
同意执行后,数据已修改:
在这里插入图片描述

END

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

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

相关文章

0基础学习VR全景平台篇第34篇:场景功能-沙盘功能

本期为大家带来蛙色VR平台,场景功能—沙盘功能的操作讲解。 功能位置示意 一、本功能将用在哪里? 沙盘功能,可将区域的平面图、卫星图、手绘图等上传或直接使用高德地图信息,嵌入在VR全景作品中呈现出来; 支持嵌入沙…

【OpenCV】OpenCV4.7.0 + Visual Studio 2019环境配置 + 运行opencv

本文目录 01、OpenCV的下载与安装02、Visual Studio 2019环境配置03、OpenCV接口测试 01、OpenCV的下载与安装 这里贴上网址: https://opencv.org/ 进入会看到主界面,跟着一步一步来下载就好: 当把上面这个下载下来之后,会得到一…

git merge和git rebase有什么区别?

git merge和git rebase有什么区别 git rebase和git merge是在日常开发中常用的用于分支合并的命令,也是非常容易误用的两个命令。本文将通过图文的方式去详解二者之间的区别。 git merge git merge会为本次的合并过程生成一条新的commit,并将该commit…

亚马逊云科技中国峰会带你玩转AIGC全攻略原

充满想象的AIGC时代,企业如何抓住机遇实现双效提升?要说2023年科技圈顶流话题,非AIGC(AI-generated Content,人工智能生成内容)莫属。当前,以GPT模型为代表的AIGC正在持续渗透各行各业&#xff…

LLVM for TVM

田海立CSDN 2023-06-01 本文简明列举LLVM作为target&#xff0c;如何集成到TVM里的。 {cmake/modules/LLVM.cmake} 0. 设置编译选项 -- USE_LLVM build option: - USE_LLVM: ON/OFF/<path to llvm-config> {set in cmake/config.cmake, and copy into build/} 1. 执行…

Linux系统上安装VScode且配置C/C++环境

Linux系统给人的印象一直是命令行的形式&#xff0c;今天终于长了见识&#xff0c;其实Linux系统也可以像Windows系统一样&#xff0c;安装、使用VScode软件 1 进入VScode官网下载VScode Linux安装版2 将下载到电脑上压缩包通过tcp指令传到Linux系统上3 在放置安装包的目录下通…

java实现文档部分预览与全预览功能

这里使用的是kkFileView插件&#xff0c;部署在服务器上&#xff0c;使用其生成预览内容&#xff0c;官网地址是&#xff1a;kkFileView - 在线文件预览 下载地址为&#xff1a;kkFileView 4.1.0 版本发布&#xff0c;开源在线文件预览解决方案 - OSCHINA - 中文开源技术交流社…

ANR日志分析全面解析

一、概述 解决ANR一直是Android 开发者需要掌握的重要技巧&#xff0c;一般从三个方面着手。 开发阶段&#xff1a;通过工具检查各个方法的耗时&#xff0c;卡顿情况&#xff0c;发现一处修改一处。 线上阶段&#xff1a;这个阶段主要依靠监控工具发现ANR并上报&#xff0c;比…

linux(system V标准)进程间通信2

目录&#xff1a; 1.回顾上一节的代码 2.shmat、shmdt的使用 3.共享内存的大小为什么最好设置成4096字节的整数倍呢&#xff1f; 4.操作系统如何管理共享内存的 ----------------------------------------------------------------------------------------------------------…

SpringMVC04:数据处理及跳转

目录 一、跳转方式ModelAndView 二、ServletAPI 三、SpringMVC 四、数据处理&#xff1a;处理提交数据 1、提交的域名称和处理方法的参数名一致 2、提交的域名称和处理方法的参数名不一致 3、提交的是一个对象 五、数据显示到前端 1、通过ModelAndView 2、通过ModelM…

Nginx的使用和有关配置

&#x1f331;Nginx的基础使用和有关配置。 &#x1f4eb;相关软件:链接地址 文章目录 Nginx目录结构Nginx基本运行原理Nginx的基本配置文件 Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件…

dstat 好用的可视化工具

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 dstat 好用的终端工具 安装方法命令详解负载与CPU相关展示第一颗与第四颗cpu使用情况展示每秒的CPU时钟频率…

Elasticsearch:使用 Transformers 和 Elasticsearch 进行语义搜索

语义/矢量搜索是一种强大的技术&#xff0c;可以大大提高搜索结果的准确性和相关性。 与传统的基于关键字的搜索方法不同&#xff0c;语义搜索使用单词的含义和上下文来理解查询背后的意图并提供更准确的结果。 Elasticsearch 是实现语义搜索最流行的工具之一&#xff0c;它是一…

【运筹优化】元启发式算法详解:变邻域搜索算法(Variable Neighborhood Search,VNS)+ 案例讲解代码实现

文章目录 一、介绍二、基本方案三、一些扩展四、在VNS内改变配方4.1 基于变邻域的公式空间搜索4.2 变公式搜索 五、原始对偶VNS六、求解混合整数线性规划的VNS七、连续全局优化的可变邻域搜索八、可变邻域编程(VNP):自动编程的VNS九、Discovery Science十、总结十一、案例讲解&…

如何视频转语音?想知道视频转语音工具怎么用?

在教育、培训等领域中&#xff0c;有时候需要将讲解视频转化为文字来提供给学生反复阅读学习。那么&#xff0c;小伙伴们&#xff0c;你们知道怎样视频转语音吗&#xff1f;其实我们可以借助一些视频转语音的软件帮助我们实现视频转语音操作。这篇文章就给大家分享几个非常好用…

PHP学习笔记第二天

前言 作者简介&#xff1a;不知名白帽&#xff0c;网络安全学习者。 博客主页&#xff1a;不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 网络安全交流社区&#xff1a;https://bbs.csdn.net/forums/angluoanquan 目录 PHP类型比较 和 PHP中比较0、false、null …

基于SSM的酒店管理系统代码数据库文件和LW

框架&#xff1a;SSM 数据库&#xff1a;MySQL 语言&#xff1a;Java 下载链接&#xff1a; https://download.csdn.net/download/yw1990128/87853243 B站演示链接&#xff1a; 基于SSM框架的酒店管理系统_哔哩哔哩_bilibili 1.1 课题研究背景及意义 随着我国改革开放的不…

hutool文件导出

hutool文件导出 需求&#xff1a;管理员设置会议&#xff0c;参加会议会根据管理员设置的会议要求&#xff0c;用户参加会议填写相关数据&#xff0c;并且生成一个动态的excel数据并导出 示例&#xff1a; 每场都可以自定义报名字段 根据需求与前端约定 字段名称&#xff08;n…

通用读写仲裁模块(FPGA实现)

当涉及多个模块向同一个模块进行读写操作、向一个半双工模块请求读写&#xff0c;甚至综合一下&#xff0c;多个模块向一个半双工模块发起读写请求&#xff0c;那就要涉及读写仲裁。因为最近做的项目中涉及的读写仲裁太多了&#xff0c;所以就想还是要写一个通用的读写仲裁模块…

网络协议系统学习

网络为什么要分层&#xff1f; 因为是个复杂的程序就要分层 可以把网络包想象成一个buffer或者一块内存&#xff0c;是有格式的。同时&#xff0c;想象自己是一个处理网络包的程序&#xff0c;而且这个程序可以跑在电脑/服务器/路由器/交换机上&#xff0c;自己有很多网口&am…