db-readonly

🗄️ 安全只读的数据库查询专家

🥥45总安装量 19评分人数 13
100% 的用户推荐

基于白名单机制的安全只读查询工具,通过环境变量管理凭据,实现零风险数据探查与报表生成。

A

基本安全,请在特定环境下使用

  • 来自社区或个人来源,建议先隔离验证
  • ✅ 代码无 `eval`/`exec`/`system` 等危险函数,依赖版本锁定且无动态代码加载或网络下载行为
  • ✅ 实施严格的 SQL 白名单过滤(正则匹配 `^(select|with|explain)`),明确阻止 INSERT/UPDATE/DELETE/DROP/ALTER 等一切写操作
  • ✅ 敏感凭据通过环境变量安全读取(PGPASSWORD/MYSQL_PASSWORD 等),无硬编码风险,无静默数据上传或第三方传输
  • ⚠️ 需手动配置数据库连接环境变量(PGHOST/PGUSER 等)方可使用,且依赖系统预装 psql/mysql 客户端工具
  • ✅ 具备完善的输入验证和错误处理机制,环境变量缺失或参数错误时提供清晰报错

使用说明

db-readonly 是一款专为数据安全场景设计的 Skill,旨在为用户提供零风险的数据库查询体验。它通过严格的 SQL 白名单机制和环境变量管理,确保在 PostgreSQL 和 MySQL 数据库上仅能执行只读操作,从根本杜绝误删改数据的风险。

核心用法方面,该 Skill 通过读取标准环境变量(如 PGHOST、PGUSER、PGPASSWORD 或 MYSQL_HOST、MYSQL_USER 等)建立数据库连接,仅接受 SELECT、WITH、EXPLAIN 三类 SQL 语句。用户可通过 scripts/db_readonly.sh 脚本直接执行查询,或将结果导出为 CSV、TSV、JSON 格式便于后续分析。例如执行 scripts/db_readonly.sh postgres "SELECT * FROM users LIMIT 100" --format csv --out /tmp/users.csv 即可完成数据采样与导出。

显著优点体现在其多重安全防护设计上。首先,采用正则表达式严格过滤 SQL 语句,明确阻止 INSERT、UPDATE、DELETE、DROP、ALTER、CREATE、TRUNCATE 等一切写操作,从代码层面强制只读,即使误输入危险命令也会被拦截。其次,敏感凭据完全通过环境变量注入,避免了密码硬编码或命令行参数泄露的风险。此外,脚本实现了完善的错误处理和参数校验,使用 set -euo pipefail 确保健壮性,在环境变量缺失或参数错误时给予清晰提示。

潜在缺点在于功能局限性。该 Skill 仅支持 PostgreSQL 和 MySQL,无法适用于 MongoDB、SQLite 或其他数据库。同时,它依赖系统预装 psql 或 mysql 客户端工具,且需要用户手动配置一系列环境变量,对新手而言有一定配置门槛。此外,作为纯只读工具,它天然无法满足数据写入、Schema 变更等数据库运维需求,遇到此类需求需使用其他工具。

适合的目标群体主要包括:数据库管理员(DBA)进行日常巡检、容量评估和故障排查;数据分析师提取数据样本进行探索性分析(EDA);后端开发者验证数据状态或调试复杂查询语句;以及运维人员生成定期数据报告。任何需要频繁查看生产环境数据但又要严格避免误操作的技术人员都会从中受益。

使用风险主要集中在性能与配置方面。由于工具本身不对查询复杂度做硬性限制,用户若执行缺乏 WHERE 条件或 LIMIT 限制的大表全量查询,可能导致数据库服务器 CPU/IO 资源耗尽、网络传输超时甚至影响生产环境稳定性。建议始终遵循"小步快跑"原则,先通过 COUNT 或 LIMIT 10 探查数据规模。另外,虽然凭据通过环境变量管理,但用户仍需确保 shell 配置文件(如 .bashrc)或启动脚本中的变量设置具有适当的文件权限(如 600),防止本地凭据被其他用户读取。

db-readonly 内容

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