开始使用
- 有关Supabase详细使用指导请参考Supabase说明文档
- 该解决方案使用22端口用来远程登录弹性云服务器 ECS,默认对Cloudshell出口IP放开
- 方案通过 8000 端口提供 Supabase 控制台访问,默认开放0.0.0.0/0全网访问。生产环境基于最小权限原则调整网络策略,仅允许运维网段、后端业务网段访问该端口,收紧访问权限,消除未授权访问风险。
- 涉及到的Supabase业务端口如下:
- 8000:访问Supabase服务控制台端口、REST API、Auth API
安全组规则修改
安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。
如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。
Supabase控制台使用
- 使用远程ssh登录工具登录到Supabase所在ECS,获取控制台supabase用户登录密码。 图1 执行sh /opt/supabase/run.sh secrets

DASHBOARD_PASSWORD为supabase用户密码
图2 登录supabase控制台,访问地址可通过3.2快速部署章节步骤6获取。
- 控制台建表 图3 控制台建表
图4 建表详情
Name:输入表名称,此案例以user_demo为例。
Columns:定义表字段。
Data API access:自动生成该表的REST API接口地址。
- 表权限配置 图5 进入Authentication功能模块
图6 进入到Policies模块
图7 单击user_demo表后方“Disable RLS”。
图8 单击“Disable RLS”。
如果关闭 RLS,所有携带 Publishable key 的请求都能无限制读写整张表,测试演示可用,生产环境严禁关闭。
- 获取API Keys 图9 获取API Keys,表接口调用使用。
通过接口调用实现表的CRUD操作
本案例以shell脚本的方式通过调用表的REST API接口,实现表中数据的CRUD相关操作。
- 数据插入,在Supabase所在ECS上输入如下命令:向 user_demo 数据表插入一条 {name: 张三,age:22} 的记录
curl --connect-timeout 5 -m 10 -s -X POST "http://127.0.0.1:8000/rest/v1/user_demo" -H "apikey: sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Authorization: Bearer sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Content-Type: application/json" -H "Prefer: return=representation" -d '{"name":"张三","age":22}'参数详解:
REST API请求地址:http://127.0.0.1:8000/rest/v1/user_demo
apikey项目公开 Publishable key:Supabase控制台使用章节步骤4获取API Keys获取
Authorization:同“apikey”一致
图10 执行完上述命令后返回Supabase控制台可看到数据成功写入user_demo表中
- 数据查询,在Supabase所在ECS上输入如下命令:获取user_demo表全部数据
curl --connect-timeout 5 -m 10 -s -X GET "http://127.0.0.1:8000/rest/v1/user_demo" -H "apikey: sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Authorization: Bearer sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Content-Type: application/json"
图11 检索结果
- 数据更新,在Supabase所在ECS上输入如下命令:更新id=1的数据为{"name":"李四","age":25}
curl --connect-timeout 5 -m 10 -s -X PATCH "http://127.0.0.1:8000/rest/v1/user_demo?id=eq.1" -H "apikey: sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Authorization: Bearer sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Content-Type: application/json" -H "Prefer: return=representation" -d '{"name":"李四","age":25}'图12 原有记录被更新
- 条件查询,在Supabase所在ECS上输入如下命令:检索age=25的数据
curl --connect-timeout 5 -m 10 -s -X GET "http://127.0.0.1:8000/rest/v1/user_demo?age=eq.25" -H "apikey: sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Authorization: Bearer sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Content-Type: application/json"
图13 检索结果
- 数据删除,在Supabase所在ECS上输入如下命令:删除id=1的数据
curl --connect-timeout 5 -m 10 -s -X DELETE "http://127.0.0.1:8000/rest/v1/user_demo?id=eq.1" -H "apikey: sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Authorization: Bearer sb_publishable_ynNx8elhsQ8CU10ZIWow3v_ST-gnDbJ" -H "Content-Type: application/json"
图14 数据被删除