mcpField
P
postgres

postgres

github.com/digitalocean-labs数据与数据库3888 次安装6 天前更新
代码仓库

关于 postgres

用于配置 DigitalOcean Managed Postgres 的 Skill,侧重安全隔离与生产部署设置。它为应用开发者提供绑定变量和 Schema 隔离两种路径,并附带设置脚本与维护参考资料。

主要功能

  1. 01数据库绑定变量
  2. 02Schema 级租户隔离
  3. 03自动化设置脚本
  4. 04Schema 与用户审计
  5. 05ORM 和迁移指南

适用场景

  1. 01为单个应用配置数据库
  2. 02在共享集群中隔离租户
  3. 03授予数据库权限
  4. 04生成连接字符串

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill postgres

安装后在 Claude Code 中输入/postgres确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
reference/
bundled-scripts.md
database-migrations.md
doctl-reference.md
orm-configurations.md
path-a-bindable-vars.md
path-b-schema-isolation.md
troubleshooting.md
scripts/
add_client.py
cleanup_client.py
create_schema_user.py
generate_connection_string.py
get_admin_conn.sh
list_schemas_users.py
secure_setup.py
secure_setup.sh
templates/migrations/
alembic.template.py
templates/orm/
drizzle.template.ts
prisma.template.prisma
sqlalchemy.template.py

详细介绍

Postgres 技能

配置 DigitalOcean Managed Postgres 数据库,采用适当的安全隔离和适用于生产环境的默认设置。

快速决策

Need multiple isolated schemas in one database?
├── YES → Path B (Schema Isolation)
└── NO  → Path A (Bindable Variables) ✅ RECOMMENDED

路径 A:可绑定变量(推荐)

适用场景:每个数据库对应一个应用、标准 CRUD 应用。

快速开始
# 1. Create cluster + user via doctl (DO stores password internally)
doctl databases create my-app-db --engine pg --region nyc3 --size db-s-1vcpu-2gb
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-app-db | awk '{print $1}')
doctl databases db create $CLUSTER_ID myappdb
doctl databases user create $CLUSTER_ID myappuser

# 2. Grant permissions (REQUIRED - users have no access by default!)
# Run: scripts/grant_permissions.sql as doadmin

# 3. Reference in app spec
# .do/app.yaml
databases:
  - name: db
    engine: PG
    production: true
    cluster_name: my-app-db
    db_name: myappdb
    db_user: myappuser

services:
  - name: api
    envs:
      - key: DATABASE_URL
        scope: RUN_TIME
        value: ${db.DATABASE_URL}

完整指南:参阅 path-a-bindable-vars.md


路径 B:架构隔离

适用场景:多租户 SaaS、多个应用共享一个集群、需要架构级隔离。

快速开始
# Hands-free setup (requires gh CLI)
./scripts/secure_setup.sh \
  --admin-url "$ADMIN_URL" \
  --app-name myapp \
  --schema myapp \
  --repo owner/repo

密码会直接传递到 GitHub Secrets,绝不会显示。

完整指南:参阅 path-b-schema-isolation.md


可用的可绑定变量

变量示例
${db.DATABASE_URL}postgresql://user:pass@host:25060/db?sslmode=require
${db.HOSTNAME}my-db-do-user-123.db.ondigitalocean.com
${db.PORT}25060
${db.USERNAME}myappuser
${db.PASSWORD}(自动填充)
${db.DATABASE}myappdb
${db.CA_CERT}(证书内容)

脚本

脚本用途
scripts/secure_setup.sh通过 GitHub Secrets 免手动操作完成路径 B 设置
scripts/create_schema_user.py创建隔离的架构和用户
scripts/list_schemas_users.py审核现有架构/用户
scripts/generate_connection_string.py构建连接字符串

参考文件


常见问题(快速修复)

错误修复方法
"permission denied for schema"使用 doadmin 运行权限 SQL
"relation does not exist"检查 search_path,或使用带架构限定的名称
"too many connections"通过 doctl 创建连接池
"SSL connection required"在连接字符串中添加 ?sslmode=require
未填充可绑定变量确认 production: true,且名称完全匹配

完整故障排除指南:参阅 troubleshooting.md


与其他技能集成

  • → designer:将数据库块添加到应用规范中
  • → deployment:使用 DATABASE_URL 密钥的 GitHub Actions 工作流
  • → devcontainers:与生产环境保持一致的本地 Postgres
  • → troubleshooting:用于连接测试的调试容器

评论

支持 Markdown