SuperAPI AI 工具集

mysql

数据与分析

查看项目

更新于 10-15 09:27

技能介绍

用途

MySQL 只读查询技能用于对已配置的多个 MySQL 数据库执行安全、只读的查询。典型使用场景包括:查询 MySQL 数据库、探索数据库结构与表、查看表结构等。

主要能力

  • 对多个已配置的 MySQL 数据库执行只读查询。
  • 列出已配置的数据库、列出表、显示表结构。
  • 支持结果行数限制。
  • 根据数据库描述自动匹配用户意图进行数据库选择。

使用方式

环境要求

  • Python 3.8+
  • mysql-connector-python:pip install -r requirements.txt

配置

在技能目录或 ~/.config/claude/mysql-connections.json 创建 connections.json。由于包含凭据,需设置文件权限为 600:

chmod 600 connections.json

配置示例:

{
  "databases": [
    {
      "name": "production",
      "description": "Main app database - users, orders, transactions",
      "host": "db.example.com",
      "port": 3306,
      "database": "app_prod",
      "user": "readonly_user",
      "password": "your-password",
      "ssl_disabled": false
    }
  ]
}

配置字段:

字段 必填 说明
name 是 数据库标识符(不区分大小写)
description 是 该数据库包含的数据说明(用于自动选择)
host 是 数据库主机名
port 否 端口号(默认:3306)
database 是 数据库名
user 是 用户名
password 是 密码
ssl_disabled 否 设为 true 禁用 SSL(默认:false)
ssl_ca 否 CA 证书文件路径
ssl_cert 否 客户端证书文件路径
ssl_key 否 客户端私钥文件路径

命令用法

列出已配置的数据库:

python3 scripts/query.py --list

查询数据库:

python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"

列出表:

python3 scripts/query.py --db production --tables

显示表结构:

python3 scripts/query.py --db production --schema

限制结果:

python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

数据库选择

将用户意图与数据库描述匹配:

用户询问 查找描述包含
users, accounts users, accounts, customers
orders, sales orders, transactions, sales
analytics, metrics analytics, metrics, reports
logs, events logs, events, audit

如果不明确,运行 --list 并询问用户选择哪个数据库。

安全特性

  • 只读会话:连接使用 MySQL SET SESSION TRANSACTION READ ONLY(主要保护)。
  • 查询校验:仅允许 SELECT、SHOW、DESCRIBE、EXPLAIN、WITH 查询。
  • 单语句:拒绝每次查询中的多条语句。
  • SSL 支持:可配置 SSL,支持 CA、客户端证书和密钥。
  • 查询超时:强制 30 秒 max_execution_time(MySQL 5.7.8+)。
  • 内存保护:每次查询最多 10,000 行,防止 OOM。
  • 列宽上限:每列最多 100 字符,保证输出可读。
  • 凭据清理:错误消息不泄露密码。

故障排查

错误 解决方案
Config not found 在技能目录创建 connections.json
Authentication failed 检查配置中的用户名/密码
Connection timeout 验证主机/端口,检查防火墙/VPN
SSL error 对本地数据库尝试 "ssl_disabled": true
Permission warning 运行 chmod 600 connections.json
max_execution_time not supported 升级到 MySQL 5.7.8+ 或 MariaDB 10.1.1+

退出码

  • 0:成功
  • 1:错误(配置缺失、认证失败、无效查询、数据库错误)

工作流程

  1. 运行 --list 显示可用数据库。
  2. 将用户意图与数据库描述匹配。
  3. 运行 --tables 或 --schema 探索结构。
  4. 使用适当的 LIMIT 执行查询。

限制

  • 仅支持只读查询,不允许写入或修改操作。
  • 需要 Python 3.8+ 及 mysql-connector-python。
  • 查询超时依赖 MySQL 5.7.8+ 或 MariaDB 10.1.1+。
  • 每次查询最多返回 10,000 行。
  • 其他未在资料中说明的功能、收费、价格、平台或效果暂未提供。