mysql
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMySQL Read-Only Query Skill
MySQL 只读查询 Skill
Execute safe, read-only queries against configured MySQL databases.
针对已配置的MySQL数据库执行安全的只读查询。
Requirements
环境要求
- Python 3.8+
- mysql-connector-python:
pip install -r requirements.txt
- Python 3.8+
- mysql-connector-python:
pip install -r requirements.txt
Setup
配置步骤
Create in the skill directory or .
connections.json~/.config/claude/mysql-connections.jsonSecurity: Set file permissions to since it contains credentials:
600bash
chmod 600 connections.jsonjson
{
"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
}
]
}在Skill目录或路径下创建文件。
~/.config/claude/mysql-connections.jsonconnections.json安全提示:由于文件包含凭证信息,请将文件权限设置为:
600bash
chmod 600 connections.jsonjson
{
"databases": [
{
"name": "production",
"description": "主应用数据库 - 包含用户、订单、交易数据",
"host": "db.example.com",
"port": 3306,
"database": "app_prod",
"user": "readonly_user",
"password": "your-password",
"ssl_disabled": false
}
]
}Config Fields
配置字段说明
| Field | Required | Description |
|---|---|---|
| name | Yes | Identifier for the database (case-insensitive) |
| description | Yes | What data this database contains (used for auto-selection) |
| host | Yes | Database hostname |
| port | No | Port number (default: 3306) |
| database | Yes | Database name |
| user | Yes | Username |
| password | Yes | Password |
| ssl_disabled | No | Set to |
| ssl_ca | No | Path to CA certificate file |
| ssl_cert | No | Path to client certificate file |
| ssl_key | No | Path to client private key file |
| 字段 | 是否必填 | 描述 |
|---|---|---|
| name | 是 | 数据库标识符(大小写不敏感) |
| description | 是 | 该数据库包含的数据内容(用于自动选择) |
| host | 是 | 数据库主机名 |
| port | 否 | 端口号(默认:3306) |
| database | 是 | 数据库名称 |
| user | 是 | 用户名 |
| password | 是 | 密码 |
| ssl_disabled | 否 | 设置为 |
| ssl_ca | 否 | CA证书文件路径 |
| ssl_cert | 否 | 客户端证书文件路径 |
| ssl_key | 否 | 客户端私钥文件路径 |
Usage
使用方法
List configured databases
列出已配置的数据库
bash
python3 scripts/query.py --listbash
python3 scripts/query.py --listQuery a database
查询数据库
bash
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"bash
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"List tables
列出表
bash
python3 scripts/query.py --db production --tablesbash
python3 scripts/query.py --db production --tablesShow schema
查看架构
bash
python3 scripts/query.py --db production --schemabash
python3 scripts/query.py --db production --schemaLimit results
限制结果数量
bash
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100bash
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100Database Selection
数据库选择逻辑
Match user intent to database :
description| User asks about | Look for description containing |
|---|---|
| users, accounts | users, accounts, customers |
| orders, sales | orders, transactions, sales |
| analytics, metrics | analytics, metrics, reports |
| logs, events | logs, events, audit |
If unclear, run and ask user which database.
--list根据用户意图匹配数据库的字段:
description| 用户查询内容 | 匹配包含关键词的描述 |
|---|---|
| 用户、账户 | users、accounts、customers |
| 订单、销售 | orders、transactions、sales |
| 分析、指标 | analytics、metrics、reports |
| 日志、事件 | logs、events、audit |
若无法明确匹配,运行命令并询问用户选择哪个数据库。
--listSafety Features
安全特性
- Read-only session: Connection uses MySQL (primary protection)
SET SESSION TRANSACTION READ ONLY - Query validation: Only SELECT, SHOW, DESCRIBE, EXPLAIN, WITH queries allowed
- Single statement: Multiple statements per query rejected
- SSL support: Configurable SSL with CA, client cert, and key support
- Query timeout: 30-second max_execution_time enforced (MySQL 5.7.8+)
- Memory protection: Max 10,000 rows per query to prevent OOM
- Column width cap: 100 char max per column for readable output
- Credential sanitization: Error messages don't leak passwords
- 只读会话:连接使用MySQL的(主要保护机制)
SET SESSION TRANSACTION READ ONLY - 查询验证:仅允许SELECT、SHOW、DESCRIBE、EXPLAIN、WITH类型的查询
- 单语句限制:拒绝一个查询中包含多条语句的请求
- SSL支持:可配置SSL,支持CA证书、客户端证书和密钥
- 查询超时:强制设置30秒的max_execution_time(需MySQL 5.7.8+)
- 内存保护:每个查询最多返回10000行结果,防止内存溢出
- 列宽度限制:每列最多显示100个字符,保证输出可读性
- 凭证脱敏:错误信息不会泄露密码
Troubleshooting
故障排除
| Error | Solution |
|---|---|
| Config not found | Create |
| Authentication failed | Check username/password in config |
| Connection timeout | Verify host/port, check firewall/VPN |
| SSL error | Try |
| Permission warning | Run |
| max_execution_time not supported | Upgrade to MySQL 5.7.8+ or MariaDB 10.1.1+ |
| 错误 | 解决方案 |
|---|---|
| 未找到配置文件 | 在Skill目录下创建 |
| 认证失败 | 检查配置文件中的用户名/密码 |
| 连接超时 | 验证主机/端口,检查防火墙/VPN设置 |
| SSL错误 | 对于本地数据库,尝试设置 |
| 权限警告 | 运行 |
| 不支持max_execution_time | 升级到MySQL 5.7.8+或MariaDB 10.1.1+ |
Exit Codes
退出码
- 0: Success
- 1: Error (config missing, auth failed, invalid query, database error)
- 0:执行成功
- 1:执行错误(配置缺失、认证失败、查询无效、数据库错误)
Workflow
工作流程
- Run to show available databases
--list - Match user intent to database description
- Run or
--tablesto explore structure--schema - Execute query with appropriate LIMIT
- 运行查看可用数据库
--list - 根据用户意图匹配数据库描述
- 运行或
--tables探索数据库结构--schema - 执行查询并设置合适的LIMIT参数