supabase supavisor 使用简单说明

核心是是关于配置以及使用的一些说明

创建租户

  • 通过api 需要jwt token, jwt token payload 应该包含过期时间, 参考如下,role 是一个可选的,但是推荐添加,符合 supabase 的玩法
{
  "iss": "supabase",
  "role": "anon",
  "iat": 1645192824,
  "exp": 9999999999
}
  • 创建租户, 如下,需要租户名称,同时需要指定连接信息,包含db 以及用户还有就是mode(mode 很重要)
curl  -X PUT \
  'http://localhost:4000/api/tenants/dev_tenant' \
  --header 'Accept: */*' \
  --header 'User-Agent: Thunder Client (https://www.thunderclient.com)' \
  --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJhbm9uIiwiaWF0IjoxNjQ1MTkyODI0LCJleHAiOjk5OTk5OTk5OTl9.gntAxv50UrEPGAmL8a03zFMpDLt81QDHF8O5303X9l8' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "tenant": {
    "db_host": "db",
    "db_port": 5432,
    "db_database": "postgres",
    "ip_version": "auto",
    "enforce_ssl": false,
    "require_user": false,
    "auth_query": "SELECT rolname, rolpassword FROM pg_authid WHERE rolname=$1;",
    "users": [
      {
        "db_user": "postgres",
        "db_password": "postgres",
        "pool_size": 20,
        "mode_type": "transaction",
        "is_manager": true
      }
    ]
  }
}'
  • 连接,基于了some_username.some_tenant 格式进行多租户隔离
psql postgresql://postgres.dev_tenant:postgres@localhost:6543/postgres
  • prisma 等工具的集成,一般需要Prepared Statements,可以通过开启NAMED_PREPARED_STATEMENTS_ENABLED ,或者prisma 查询关闭Prepared Statements

参考资料

https://supabase.github.io/supavisor/development/setup/

https://github.com/supabase/supavisor

https://supabase.github.io/supavisor/configuration/pool_modes/

https://supabase.github.io/supavisor/configuration/env/#feature-flags

https://github.com/rongfengliang/supabase_supavisor_learning

posted on 2026-11-04 08:00  荣锋亮  阅读(2)  评论(0)    收藏  举报

导航