在团队协作开发中,数据库权限管理和SQL审核是保障数据安全、避免误操作的重要手段。开源工具 Yearning 作为一款轻量级的MySQL SQL审核平台,提供了多级审核、权限控制、操作审计等功能,适合中小型团队使用。本文将详细介绍:
Yearning 是一款开源的 MySQL SQL审核与权限管理平台,由 Go 语言编写,具有以下特点:
对比项 | Yearning | Archery | SQLE |
|---|---|---|---|
部署难度 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
中文支持 | 完善 | 完善 | 部分 |
权限管理 | 行列级 | 库表级 | 企业级 |
适用场景 | 中小团队 | 中大型 | 企业级 |
wget https://github.com/cookieY/Yearning/releases/download/v3.0.0/Yearning-go.tar.gz
tar -xzvf Yearning-go.tar.gz
cd Yearning-- 在MySQL中创建Yearning所需的数据库
CREATE DATABASE yearning CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON yearning.* TO 'yearning'@'%' IDENTIFIED BY 'your_password';编辑 conf.toml:
[mysql]
host = "127.0.0.1"
port = 3306
user = "yearning"
password = "your_password"
db = "yearning"
[General]
SecretKey = "abcd012345678efg"
Hours = 4
QueryClient = true
QueryPort = 3307
LogLevel = "info" # debug,info,warn,error
Lang = "zh_CN" # en_US,zh_CN./Yearning install # 初始化表结构
./Yearning run # 启动服务访问 http://your-server-ip:8000,默认账号:admin,密码:Yearning_admin。
如果首次部署希望默认中文,编辑 conf.toml:
[global]
language = "zh" # zh-中文, en-英文重启服务生效:
./Yearning restart如果是Docker部署,启动时指定语言:
docker run -d \
-e LANGUAGE="zh" \
-p 8000:8000 \
--name yearning \
container_name/yearning在 「审核规则」 页面中,可以自定义SQL规范:
-- 示例:禁止无WHERE条件的UPDATE/DELETE
{
"rule_name": "no_where_update",
"desc": "禁止不带WHERE的UPDATE/DELETE",
"level": "error",
"type": "DML",
"pattern": "(UPDATE|DELETE)(?!.*WHERE).*"
}开发人员在Web界面提交SQL:
-- 示例:创建用户表
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;DBA会在 「工单审核」 中收到通知并审批。
Yearning支持:
角色 | 权限范围 |
|---|---|
admin | 所有功能 |
dev | 提交/查询工单 |
dba | 审核/执行工单 |
通过 「权限管理」 页面,可以精确控制用户能访问的库表:
-- 示例:仅允许dev角色访问test_开头的库
GRANT SELECT ON `test_%`.* TO 'dev'@'%';Yearning 是一款适合中小团队的 MySQL SQL审核与权限管理工具,通过本文你可以:
GitHub地址:https://github.com/cookieY/Yearning 官方文档:https://guide.yearning.io