mysql

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

MySQL 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
connections.json
in the skill directory or
~/.config/claude/mysql-connections.json
.
Security: Set file permissions to
600
since it contains credentials:
bash
chmod 600 connections.json
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
    }
  ]
}
在Skill目录或
~/.config/claude/mysql-connections.json
路径下创建
connections.json
文件。
安全提示:由于文件包含凭证信息,请将文件权限设置为
600
bash
chmod 600 connections.json
json
{
  "databases": [
    {
      "name": "production",
      "description": "主应用数据库 - 包含用户、订单、交易数据",
      "host": "db.example.com",
      "port": 3306,
      "database": "app_prod",
      "user": "readonly_user",
      "password": "your-password",
      "ssl_disabled": false
    }
  ]
}

Config Fields

配置字段说明

FieldRequiredDescription
nameYesIdentifier for the database (case-insensitive)
descriptionYesWhat data this database contains (used for auto-selection)
hostYesDatabase hostname
portNoPort number (default: 3306)
databaseYesDatabase name
userYesUsername
passwordYesPassword
ssl_disabledNoSet to
true
to disable SSL (default: false)
ssl_caNoPath to CA certificate file
ssl_certNoPath to client certificate file
ssl_keyNoPath to client private key file
字段是否必填描述
name数据库标识符(大小写不敏感)
description该数据库包含的数据内容(用于自动选择)
host数据库主机名
port端口号(默认:3306)
database数据库名称
user用户名
password密码
ssl_disabled设置为
true
可禁用SSL(默认:false)
ssl_caCA证书文件路径
ssl_cert客户端证书文件路径
ssl_key客户端私钥文件路径

Usage

使用方法

List configured databases

列出已配置的数据库

bash
python3 scripts/query.py --list
bash
python3 scripts/query.py --list

Query 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 --tables
bash
python3 scripts/query.py --db production --tables

Show schema

查看架构

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

Limit results

限制结果数量

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

Database Selection

数据库选择逻辑

Match user intent to database
description
:
User asks aboutLook for description containing
users, accountsusers, accounts, customers
orders, salesorders, transactions, sales
analytics, metricsanalytics, metrics, reports
logs, eventslogs, events, audit
If unclear, run
--list
and ask user which database.
根据用户意图匹配数据库的
description
字段:
用户查询内容匹配包含关键词的描述
用户、账户users、accounts、customers
订单、销售orders、transactions、sales
分析、指标analytics、metrics、reports
日志、事件logs、events、audit
若无法明确匹配,运行
--list
命令并询问用户选择哪个数据库。

Safety Features

安全特性

  • Read-only session: Connection uses MySQL
    SET SESSION TRANSACTION READ ONLY
    (primary protection)
  • 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

故障排除

ErrorSolution
Config not foundCreate
connections.json
in skill directory
Authentication failedCheck username/password in config
Connection timeoutVerify host/port, check firewall/VPN
SSL errorTry
"ssl_disabled": true
for local databases
Permission warningRun
chmod 600 connections.json
max_execution_time not supportedUpgrade to MySQL 5.7.8+ or MariaDB 10.1.1+
错误解决方案
未找到配置文件在Skill目录下创建
connections.json
认证失败检查配置文件中的用户名/密码
连接超时验证主机/端口,检查防火墙/VPN设置
SSL错误对于本地数据库,尝试设置
"ssl_disabled": true
权限警告运行
chmod 600 connections.json
不支持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

工作流程

  1. Run
    --list
    to show available databases
  2. Match user intent to database description
  3. Run
    --tables
    or
    --schema
    to explore structure
  4. Execute query with appropriate LIMIT
  1. 运行
    --list
    查看可用数据库
  2. 根据用户意图匹配数据库描述
  3. 运行
    --tables
    --schema
    探索数据库结构
  4. 执行查询并设置合适的LIMIT参数