关于 postgres
postgres 是用于对已配置的 PostgreSQL 数据库执行安全只读查询的技能。它还支持查看数据库和结构,并通过查询校验及结果限制约束访问与输出。
主要功能
- 01列出已配置的数据库
- 02查看数据表和数据库结构
- 03允许 SELECT、SHOW、EXPLAIN 和 WITH 查询
- 04拒绝多语句查询并设置超时
- 05限制查询行数并清理凭据错误信息
适用场景
- 01检查已配置数据库中的记录
- 02编写查询前探索数据表
- 03执行有结果限制的只读数据查询
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ w95/ awesome-claude-corporate-skills --skill postgres安装后在 Claude Code 中输入/postgres确认已加载。
详细介绍
PostgreSQL 只读查询技能
对已配置的 PostgreSQL 数据库执行安全的只读查询。
要求
- Python 3.8+
- psycopg2-binary:
pip install -r requirements.txt
设置
在技能目录或 ~/.config/claude/postgres-connections.json 中创建 connections.json。
安全性:由于文件包含凭据,请将文件权限设为 600:
chmod 600 connections.json
{
"databases": [
{
"name": "production",
"description": "Main app database - users, orders, transactions",
"host": "db.example.com",
"port": 5432,
"database": "app_prod",
"user": "readonly_user",
"password": "your-password",
"sslmode": "require"
}
]
}
配置字段
| 字段 | 必填 | 说明 |
|---|---|---|
| name | 是 | 数据库标识符(不区分大小写) |
| description | 是 | 此数据库包含的数据(用于自动选择) |
| host | 是 | 数据库主机名 |
| port | 否 | 端口号(默认值:5432) |
| database | 是 | 数据库名称 |
| user | 是 | 用户名 |
| password | 是 | 密码 |
| sslmode | 否 | SSL 模式:disable、allow、prefer(默认值)、require、verify-ca、verify-full |
用法
列出已配置的数据库
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 并询问用户要使用哪个数据库。
安全功能
- 只读会话:连接使用 PostgreSQL
readonly=True模式(主要保护措施) - 查询验证:仅允许 SELECT、SHOW、EXPLAIN、WITH 查询
- 单条语句:拒绝每个查询包含多条语句的情况
- SSL 支持:可配置 SSL 模式以建立加密连接
- 查询超时:强制设置 30 秒语句超时
- 内存保护:每个查询最多返回 10,000 行,以防止内存耗尽
- 列宽上限:每列最多显示 100 个字符,以便于阅读输出
- 凭据清理:错误消息不会泄露密码
故障排除
| 错误 | 解决方案 |
|---|---|
| 找不到配置 | 在技能目录中创建 connections.json |
| 身份验证失败 | 检查配置中的用户名和密码 |
| 连接超时 | 确认主机和端口,并检查防火墙或 VPN |
| SSL 错误 | 对于本地数据库,尝试使用 "sslmode": "disable" |
| 权限警告 | 运行 chmod 600 connections.json |
退出代码
- 0:成功
- 1:错误(配置缺失、身份验证失败、查询无效、数据库错误)
工作流
- 运行
--list以显示可用数据库 - 根据用户意图匹配数据库说明
- 运行
--tables或--schema以查看结构 - 使用适当的 LIMIT 执行查询
评论
支持 Markdown