mysql について
mysqlは、設定済みのMySQLデータベースに読み取り専用クエリを実行するスキルです。データベース構造の確認やデータ取得に使え、クエリの種類、結果件数、実行時間に上限を設けます。
主な機能
- 01SELECT、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 | いいえ | SSL を無効にするには true に設定します(デフォルト: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 対応:CA、クライアント証明書、鍵をサポートする SSL を設定できます
- クエリのタイムアウト: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 対応