CLI 工作流

用 CLI 安全查询 PostgreSQL

使用只读角色,以非交互方式运行 psql,并限制查询范围和输出格式。

数据库只读

开始前准备好工具、认证与证据

先安装推荐工具,确认最小权限,再区分兼容性和真实执行记录。

psqlverified
通过显式凭据、输出、事务和写入边界,以非交互方式查询 PostgreSQL。

推荐安装

$ shell
brew install libpq
认证
connection URI, password file, service file, peer authentication
已测试 Agent
暂无 Agent 级执行记录
证据状态
verified · 文档检查 2026-07-10
CLI 独立执行
18.1 · 2 项检查
jqverified
在本地以确定性输出解析、筛选、校验和转换 JSON。

推荐安装

$ shell
brew install jq
认证
基础操作无需认证
已测试 Agent
暂无 Agent 级执行记录
证据状态
verified · 文档检查 2026-07-10
CLI 独立执行
jq-1.7.1-apple · 4 项检查

复制或下载本工作流 Skill

Skill 包含输入输出合同、推荐工具、审批点、回滚和证据边界;保存前仍应按当前环境审查。

query-postgres-SKILL.md
---
name: query-postgres-workflow
description: "使用只读角色,以非交互方式运行 psql,并限制查询范围和输出格式。"
---

# 查询 PostgreSQL

## 适用目标

回答数据库问题,不暴露凭证,也不修改数据。

## 证据边界

- 工具状态分别标注 `docs-verified` 与真实独立执行;二者不能互换。
- 当前注册表没有记录某次工具执行具体由哪个 Agent 完成,因此不能把“兼容 Agent”称为“已测试 Agent”。
- 执行前重新核对目标账户、环境、版本与官方文档。
- 不自动执行 R2、R3 或任何标记为需要确认的步骤;必须在执行前获得明确批准。

## 推荐工具、安装与认证

- **PostgreSQL psql**(证据:`verified`,文档检查:`2026-07-10`,已记录独立测试版本 18.1)
  - 安装:`brew install libpq`
  - 认证:connection URI, password file, service file, peer authentication
  - 最小权限:使用只读数据库角色、TLS,并把数据库与 schema 搜索路径限制在任务范围内。
- **jq**(证据:`verified`,文档检查:`2026-07-10`,已记录独立测试版本 jq-1.7.1-apple)
  - 安装:`brew install jq`
  - 认证:基础操作无需认证
  - 最小权限:无需服务凭据;仍应把文件系统和网络访问限制在任务范围内。

## 输入合同

- 环境中的连接标识
- 只读数据库角色
- 问题与行数上限
- 预期字段

## 输出合同

- 限定范围的查询结果
- 查询文本
- 耗时或错误信息
- 带限制说明的解释

## 安全工作流

1. **安全确认目标** — 使用环境中的连接设置,打印数据库身份但不打印密码。
   - 输入: 连接环境和只读角色
   - 输出: 已确认的主机、数据库与用户
   - 风险: `read-only`
   - 命令: `psql -X -v ON_ERROR_STOP=1 -c "select current_database(), current_user"`
2. **执行有限只读查询** — 把 SELECT 放在只读事务中,并请求可解析格式。
   - 输入: 已审查的 SELECT
   - 输出: CSV 或无对齐文本行
   - 风险: `read-only`
   - 命令: `psql -X --csv -v ON_ERROR_STOP=1 -c "begin read only; select * from example limit 100; commit;"`
3. **报告查询与限制** — 返回查询、行数、输出形状和假设,不回显凭证。
   - 输入: 结果与错误流
   - 输出: 带来源的数据库答案
   - 风险: `read-only`

## 必须先确认

- 任何 INSERT、UPDATE、DELETE、DDL、迁移或有副作用的函数
- 使用 owner 或 superuser 连接
- 导出敏感或大量数据

## 回滚

- 默认使用只读事务,因此无需回滚
- 批准写入时用事务包裹并在 commit 前核对
- 无法事务回退的变更应从经过测试的备份恢复

## 官方来源

- [PostgreSQL psql documentation](https://www.postgresql.org/docs/current/app-psql.html) — 用于核对当前命令、认证、输出和操作边界。

目标、输入与输出

在 Agent 选择命令前,先明确要交付的结果和证据。

目标

回答数据库问题,不暴露凭证,也不修改数据。

所需输入

  • 环境中的连接标识
  • 只读数据库角色
  • 问题与行数上限
  • 预期字段

预期输出

  • 限定范围的查询结果
  • 查询文本
  • 耗时或错误信息
  • 带限制说明的解释

用 CLI 安全查询 PostgreSQL:安全执行步骤

每一步都要在已声明的边界内执行,验证输出后再继续。

步骤 1只读

安全确认目标

使用环境中的连接设置,打印数据库身份但不打印密码。
输入
连接环境和只读角色
输出
已确认的主机、数据库与用户
$ 安全确认目标
psql -X -v ON_ERROR_STOP=1 -c "select current_database(), current_user"
步骤 2只读

执行有限只读查询

把 SELECT 放在只读事务中,并请求可解析格式。
输入
已审查的 SELECT
输出
CSV 或无对齐文本行
$ 执行有限只读查询
psql -X --csv -v ON_ERROR_STOP=1 -c "begin read only; select * from example limit 100; commit;"
步骤 3只读

报告查询与限制

返回查询、行数、输出形状和假设,不回显凭证。
输入
结果与错误流
输出
带来源的数据库答案

审批点与回滚

在列出的决策点停下,并让恢复方法始终紧跟操作。

这些操作需要先确认

  • 任何 INSERT、UPDATE、DELETE、DDL、迁移或有副作用的函数
  • 使用 owner 或 superuser 连接
  • 导出敏感或大量数据

恢复计划

  • 默认使用只读事务,因此无需回滚
  • 批准写入时用事务包裹并在 commit 前核对
  • 无法事务回退的变更应从经过测试的备份恢复

选 CLI、MCP 还是 API?

根据执行位置、身份、输出合同与权限边界选接口。

CLI

适合凭证已妥善管理时执行透明、有限的 SQL 和 CI 诊断。

MCP

Agent 只能看到获批查询工具或 schema 时适用。

API

需要应用授权、行级策略和稳定响应合同时优先使用。

建议方案

直接诊断用只读 psql;面向用户的数据访问应走 API。

官方证据与参考

执行前使用这些官方或上游来源确认当前命令行为。

PostgreSQL psql documentation

用于核对本页涉及的当前命令、认证、输出格式与操作边界。

执行前的常见问题

SELECT 一定安全吗?

不一定;函数可能有副作用,无限制读取也可能很昂贵。应使用只读角色、limit 和超时。

密码应该放在哪里?

使用既有的环境变量或受保护密码文件,不要写进命令或报告。

相关工具与指南

浏览同类指南,选择与你当前任务最接近的下一页。

继续查看与当前任务相关的工具证据、工作流或决策指南。

继续查看与当前任务相关的工具证据、工作流或决策指南。

继续查看与当前任务相关的工具证据、工作流或决策指南。

检查安装、认证、结构化输出、命令风险与官方证据。