Py学习  »  DATABASE

8.9k Star,一款 MySQL 审核与查询审计平台,太实用了!

极客之家 • 5 月前 • 102 次点击  
图片

今天想和大家聊一个特别实用的开源项目——Yearning。如果你或团队经常和MySQL打交道,尤其是在需要规范SQL操作、确保数据安全的环境下,那它很可能就是你在找的那个“利器”。

简介

简单说,Yearning是一个专为MySQL设计的、轻量级的SQL审核平台。它的目标很明确:通过自动化的审核流程、精细的权限管理和各种通知机制,来提升数据库操作的规范性、安全性和整体运维效率。

它不是一个大而全的“航母”级平台,而是聚焦于MySQL的SQL审核,做得相当深入。项目采用Go语言写后端,Vue.js做前端,整体技术栈比较现代,界面也简洁美观。

应用场景

想象一下这些场景:

  • 开发或运维同学需要在生产环境执行SQL,但直接操作风险太高。
  • 需要一套流程来确保SQL语句符合规范,避免低级语法错误或性能问题。
  • 执行了UPDATE或DELETE后,万一出错,能快速回滚。
  • 不同的人对数据库应有不同的操作权限(比如只能查,不能改)。

Yearning就是为解决这些问题而生的。它把SQL执行变成一个可管控、可审计、可追溯的工单流程。所有DDL(建表、改表等)和DML(增删改数据)操作,都需要提交工单,经过审核人批准后才能执行,这就像给数据库操作上了一把“安全锁”。

核心功能

  • 自动化SQL审核与执行: 提交SQL后,平台能自动进行语法和规则检查。它内置了一个SQL解析器,能根据MySQL语法树和自定义的审核规则进行功能性审核。
  • 自动生成回滚语句: 这是一个“救命”功能。当工单中的DDL/DML语句执行后,Yearning会自动为你生成对应的回滚语句,一旦误操作可以快速恢复。
  • 自定义审核工作流与RBAC权限: 你可以根据公司制度配置多级审核流程。同时,它提供基于角色的访问控制(RBAC),能精细地管理每个用户能访问哪些数据源、能进行什么操作。
  • 查询审计与脱敏: 对于查询操作(SELECT),也能进行审计和管控。可以限制查询的数据源和数据库,并对敏感字段(如手机号、身份证)进行匿名化处理,保护数据隐私。
  • AI助手(新特性): 这是一个挺酷的功能。Yearning集成了AI助手,可以提供实时的SQL优化建议,甚至能将你描述的自然语言转换成SQL语句。这对于新手或者想优化查询性能的同学来说非常有用。
  • 多种通知方式: 工单状态变化(如待审核、已执行)时,可以通过邮件、钉钉机器人等方式及时通知相关人员,确保流程顺畅。
  • SQL查询与语法高亮: 内置的SQL查询界面提供了语法高亮和自动补全功能,写起SQL来更顺手。

安装部署

下载 最新发布 并解压。在继续之前,请确保已配置 ./config.toml

手动安装

## 初始化数据库
./Yearning install

## 启动 Yearning
./Yearning run

## 帮助
./Yearning --help

使用 Docker 部署

## 初始化数据库
docker run --rm -it -p8000:8000 -e SECRET_KEY=$SECRET_KEY -e MYSQL_USER=$MYSQL_USER -e MYSQL_ADDR=$MYSQL_ADDR -e MYSQL_PASSWORD=$MYSQL_PASSWORD -e MYSQL_DB=$Yearning_DB -e Y_LANG=zh_CN yeelabs/yearning "/opt/Yearning install"

## 启动 Yearning
docker run -d -it -p8000:8000 -e SECRET_KEY=$SECRET_KEY -e MYSQL_USER=$MYSQL_USER -e MYSQL_ADDR=$MYSQL_ADDR -e MYSQL_PASSWORD=$MYSQL_PASSWORD -e MYSQL_DB=$Yearning_DB -e Y_LANG=zh_CN yeelabs/yearning

界面预览

首页

AI 助手

自动SQL检查器

SQL 语法高亮和自动补全

SQL 审计

查询审计

开源地址

https://github.com/cookieY/Yearning

后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术 职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

图片
加我好友,拉你进群

点下方的“❤支持我们,非常感谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/190728