DB Readonly

🔍 只读数据库查询 · 安全零误写

通过只读查询安全连接 MySQL/PostgreSQL,用于数据探查、报表生成与故障排查,严格阻断写操作防误删。

收藏
5.6k
安装
2.3k
版本
1.0.0
CLS 安全性认证2026-08-11
点击查看完整报告 >

使用说明

核心用法

db-readonly 是一项数据库只读查询技能,支持 PostgreSQL 与 MySQL 两大主流关系型数据库。用户通过环境变量配置连接信息后,可执行 SELECT、WITH、EXPLAIN 等读操作,结果可导出为 CSV/TSV/JSON 格式。典型场景包括:业务数据抽查、行数统计、Schema 结构查看、慢查询分析等。

显著优点

  • 零误写风险:底层强制拦截 INSERT/UPDATE/DELETE/DROP/ALTER 等一切变更语句,从源头杜绝误操作
  • 双引擎支持:覆盖 PostgreSQL 与 MySQL,满足异构数据库环境需求
  • 灵活导出:支持多种结构化格式输出,便于二次分析与报表制作
  • 开箱即用:仅需配置标准环境变量即可连接,无需复杂认证流程

潜在局限

  • 只读限制:无法执行任何数据修复、DDL 变更或事务控制操作,复杂运维场景需切换其他工具
  • 无图形界面:纯脚本交互,对非技术用户存在学习门槛
  • 环境变量依赖:连接信息需预先注入,动态多实例切换不够灵活

适合人群

  • 数据分析师、BI 工程师:快速探查生产数据样本
  • 后端开发/运维:线上故障排查、慢查询分析
  • 审计合规人员:只读权限下的数据核查与取证

常规风险

  • 连接信息泄露:环境变量中若明文存储密码,需确保运行环境隔离
  • 大数据量查询:无 LIMIT 的聚合或全表扫描可能拖垮生产库,建议始终附加采样限制
  • 敏感数据暴露:查询结果导出文件需妥善管理访问权限

安全解读

核心用法

db-readonly 是一个轻量级的数据库只读查询工具,专为 PostgreSQL 和 MySQL 设计。用户通过环境变量配置数据库连接信息后,使用 ./scripts/db_readonly.sh 脚本执行 SQL 查询。该工具仅支持 SELECTWITHEXPLAIN 三类语句,并可将结果导出为 CSV、TSV 或 JSON 格式。典型使用场景包括:数据探查(如 SELECT * FROM table LIMIT 100)、生成统计报表、排查数据异常等。

显著优点

安全边界清晰:通过白名单机制严格限制 SQL 类型,从设计层面阻断 INSERT、UPDATE、DELETE、DROP、ALTER 等危险操作,从根本上消除误删数据的风险。

零依赖轻量:仅依赖系统标准工具(psql/mysql),无第三方库引入,大幅降低供应链攻击面,部署简单可靠。

凭证管理规范:完全通过环境变量获取数据库连接信息,不硬编码敏感数据,符合云原生安全最佳实践。

输出格式灵活:支持 CSV/TSV/JSON 多种导出格式,便于后续数据处理与报表整合。

潜在缺点或局限性

功能受限:严格的只读设计意味着无法进行任何数据修复操作,遇到需要临时修正数据的场景必须切换其他工具。

SQL 注入风险未完全消除:虽然有关键词过滤,但仍依赖简单字符串匹配而非完整 SQL 解析,理论上存在注释注入等绕过可能。

无查询超时保护:缺少内置的语句执行超时机制,复杂查询可能导致长时间阻塞。

无结果集大小限制:未对大结果集进行流式处理或分页控制,内存占用可能随查询规模增长。

适合的目标群体

  • 数据分析师:需要安全探查生产数据库,提取样本数据进行统计分析
  • 运维工程师:快速排查数据状态、验证备份完整性、生成运行报表
  • 产品经理:自助查询用户行为数据,无需依赖开发排期
  • 安全合规团队:为业务人员提供受控的数据访问通道,替代直接数据库账号

使用风险

环境配置风险:数据库凭证通过环境变量传递,若宿主机环境未妥善隔离(如多用户共享 shell),可能导致凭证泄露。

网络暴露风险:虽然工具本身无外部调用,但数据库连接若配置为公网可访问,仍存在被暴力破解的风险。

误读数据风险:只读权限无法防止读取敏感信息(如用户隐私数据),需配合数据库行级权限或列级加密实施纵深防御。

性能影响:大型 SELECT 查询可能对生产数据库造成性能压力,建议在从库或只读副本上执行。

DB Readonly 内容

references文件夹
scripts文件夹
手动下载zip · 4.0 kB
query-cookbook.mdtext/markdown
请选择文件