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
浙公网安备 33010602011771号