一个强大的本地部署SQL审计和查询平台,专为DBA和开发者设计,提供无缝的SQL检测和审计功能。专注于隐私和效率,为MySQL审计提供直观安全的环境。
-
AI智能助手: 我们的AI助手提供实时SQL优化建议,提升SQL性能。同时支持自然语言转SQL功能,用户可以输入自然语言并获得优化的SQL语句。
-
SQL审核: 创建带有审批流程和自动语法检查的SQL审核工单。验证SQL语句的正确性、安全性和合规性。为DDL/DML操作自动生成回滚语句,并提供完整的历史日志以便追溯。
-
查询审计: 审计用户查询,限制数据源和数据库访问,对敏感字段进行匿名化。查询记录被保存以备将来参考。
-
检查规则: 我们的自动语法检查器支持广泛的检查规则,适用于大多数自动检查场景。
-
隐私保护: Yearning是一个本地可部署的开源解决方案,确保您的数据库和SQL语句的安全性。它包含加密机制来保护敏感数据,即使发生未经授权的访问也能确保数据安全。
-
RBAC(基于角色的访问控制): 创建和管理具有特定权限的角色,根据用户角色限制对查询工单、审计功能和其他敏感操作的访问。
Tip
更多详细信息,请访问 Yearning 使用指南
获取定制版本并使用二进制部署以获得最佳性能。本版本包含Juno问题修复和生产环境优化。
版本: v20250917-72d84e6 构建时间: 2025-09-17T04:26:26Z Git提交: 72d84e66453fb9f94d22da4608e4d785374351a8
# 1. 克隆仓库获取部署包
git clone https://github.com/yuezheng2006/Yearning.git
cd Yearning/yearning-deployment-package
# 2. 解压Linux二进制包
tar -xzf yearning-v20250917-72d84e6-linux-amd64.tar.gz
cd yearning-v20250917-72d84e6-linux-amd64
# 3. 创建配置目录和文件
mkdir -p conf
cat > conf/yearning.conf << 'EOF'
[Mysql]
Db = "yearning"
Host = "127.0.0.1"
Port = "3306"
Password = "your_password"
User = "yearning"
[General]
SecretKey = "your_16_char_key_"
RpcAddr = "" # 留空使用内置Juno引擎(推荐)
LogLevel = "info"
Lang = "zh_CN"
[Oidc]
Enable = false
EOF
# 4. 编辑配置文件
vim conf/yearning.conf
# 5. 初始化数据库
./yearning install
# 6. 启动服务
./yearning run --config conf/yearning.conf# 解压macOS二进制包
tar -xzf yearning-v20250917-72d84e6-darwin-arm64.tar.gz
cd yearning-v20250917-72d84e6-darwin-arm64
# 或者使用快速测试脚本
chmod +x quick-mac-test.sh
./quick-mac-test.sh# 克隆仓库获取部署包
git clone https://github.com/yuezheng2006/Yearning.git
cd Yearning/yearning-deployment-package
# 运行自动化部署脚本
chmod +x deploy-production.sh
./deploy-production.sh# 使用生产环境Docker Compose
docker-compose -f docker-compose.production.yml up -d# 1. 构建集成应用(前端+后端)
./build.sh
# 2. 配置数据库
cp conf.toml.template conf.toml
# 编辑conf.toml设置MySQL连接
# 3. 初始化数据库
./Yearning install
# 4. 启动服务
./Yearning run- 操作系统: Linux (CentOS 7+/Ubuntu 18.04+)
- 数据库: MySQL 5.7 (生产环境标准)
- 内存: 最低2GB,推荐4GB+
- 磁盘: 最低10GB可用空间
- 操作系统: macOS (Apple Silicon) 或 Linux
- 数据库: MySQL 5.7+ 或 Docker
- 内存: 最低1GB
[Mysql]
Db = "yearning"
Host = "127.0.0.1" # 生产环境MySQL地址
Port = "3306"
Password = "your_encrypted_password" # 使用AES加密的密码
User = "yearning"
[General]
SecretKey = "your_16_char_key_here" # 必须是16位字符
RpcAddr = "" # 留空使用内置Juno引擎(推荐)
LogLevel = "info" # 生产环境使用info
Lang = "zh_CN"
[Oidc]
Enable = false # 根据需要启用OIDCYearning使用AES加密存储数据库密码,密钥必须是16位字符:
# 使用deploy-production.sh脚本自动生成加密密码
echo "请使用deploy-production.sh脚本自动生成加密密码"-- 创建数据库和用户
CREATE DATABASE yearning CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'yearning'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON yearning.* TO 'yearning'@'%';
FLUSH PRIVILEGES;
-- 如果需要从Docker容器访问
GRANT ALL PRIVILEGES ON yearning.* TO 'yearning'@'172.%.%.%';默认审核规则可能过于严格,建议调整:
-- 连接到Yearning数据库,更新审核规则
UPDATE core_rules
SET audit_role = JSON_SET(
audit_role,
'$.DMLSelect', true, -- 允许SELECT语句
'$.DMLWhere', true, -- 允许WHERE子句
'$.DMLOrder', true, -- 允许ORDER BY
'$.DMLAllowLimitSTMT', true -- 允许LIMIT语句
)
WHERE id = 1;常见审核规则说明:
DMLSelect: 控制是否允许SELECT语句DMLWhere: 控制是否必须有WHERE条件DMLOrder: 控制是否允许ORDER BYMaxAffectRows: 最大影响行数限制
本版本包含完整的内置Juno引擎,无需外部服务:
# 推荐配置:使用内置引擎
RpcAddr = "" # 留空自动使用内置引擎
# 可选:如果需要外部Juno服务
docker run -d \
--name juno \
-p 50001:50001 \
cookiey/juno:latest
# 验证Juno服务
curl http://localhost:50001/health我们的AI助手利用大型语言模型提供SQL优化建议和文本转SQL功能。无论使用默认提示还是自定义提示,AI助手都能通过优化语句和将自然语言输入转换为SQL查询来提升SQL性能。
自动SQL检查器基于预定义规则和语法评估SQL语句。它确保符合特定编码标准、最佳实践和安全要求,提供强大的验证层。
通过SQL语法高亮和自动补全功能提升您的查询编写效率。这些功能有助于直观地区分SQL查询的不同组件(关键字、表名、列名、操作符等),使查询结构更容易阅读和理解。
我们的平台支持对用户工单和查询语句进行审计。此功能允许您跟踪和记录所有查询操作,包括数据源、数据库和敏感字段处理,确保查询操作符合规定并为查询历史提供可追溯性。
如果遇到端口占用,手动指定可用端口:
# 检查端口占用
lsof -i:8000 # 检查8000端口
lsof -i:8080 # 检查8080端口
# 使用其他端口启动(如8082)
./yearning run --port 8082 --config conf/yearning.conf支持多种MySQL连接方式:
# 1. 本地MySQL(需要root密码)
mysql -u root -p
# 2. 远程MySQL(推荐测试环境)
mysql -h <remote_ip> -P <port> -u <user> -p
# 3. Docker MySQL
docker run -d --name mysql-test -e MYSQL_ROOT_PASSWORD=test123 -p 3307:3306 mysql:5.7-- 放宽审核规则
UPDATE core_rules
SET audit_role = JSON_SET(audit_role, '$.DMLSelect', true)
WHERE id = 1;-- 检查用户权限配置
SELECT username, `group` FROM core_graineds WHERE username = 'admin';
SELECT permissions FROM core_role_groups WHERE group_id = '<group_id>';如有疑问,请联系我们:[email protected]
Yearning遵循AGPL许可证。详情请见 LICENSE。
2024 © Henry Yee
使用Yearning体验流畅、安全、高效的SQL审计和优化方法。