关于 mysql
mysql 是用于查询已配置 MySQL 数据库的技能,仅支持只读操作。它可帮助用户检查数据库结构和提取数据,并限制查询类型、结果规模与执行时间。
主要功能
- 01运行 SELECT、SHOW、DESCRIBE、EXPLAIN 和 WITH 查询
- 02列出已配置数据库和数据表
- 03查看数据库结构
- 04强制只读会话并拒绝多条语句
- 05限制查询时长和结果数量
适用场景
- 01从已配置的数据库提取记录
- 02查询前浏览数据表和结构
- 03只读检查分析或运营数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sanjay3290/ ai-skills --skill mysql安装后在 Claude Code 中输入/mysql确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreconnections.example.jsonREADME.mdrequirements.txtscripts/query.py详细介绍
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
数据库选择
根据用户意图匹配数据库 description:
| 用户询问内容 | 查找说明中包含的内容 |
|---|---|
| 用户、账户 | users、accounts、customers |
| 订单、销售 | orders、transactions、sales |
| 分析、指标 | analytics、metrics、reports |
| 日志、事件 | 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 行,以防止内存溢出
- 列宽上限:每列最多 100 个字符,确保输出易读
- 凭据清理:错误消息不会泄露密码
故障排除
| 错误 | 解决方案 |
|---|---|
| 未找到配置 | 在技能目录中创建 connections.json |
| 身份验证失败 | 检查配置中的用户名和密码 |
| 连接超时 | 验证主机和端口,并检查防火墙或 VPN |
| SSL 错误 | 对本地数据库尝试使用 "ssl_disabled": true |
| 权限警告 | 运行 chmod 600 connections.json |
| 不支持 max_execution_time | 升级到 MySQL 5.7.8+ 或 MariaDB 10.1.1+ |
退出代码
- 0:成功
- 1:错误(配置缺失、身份验证失败、查询无效、数据库错误)
工作流
- 运行
--list显示可用数据库 - 根据数据库说明匹配用户意图
- 运行
--tables或--schema探索结构 - 使用适当的 LIMIT 执行查询
评论
支持 Markdown