更新时间:2026-07-30 GMT+08:00
分享

开始使用

  • 有关Supabase详细使用指导请参考Supabase说明文档
  • 该解决方案使用22端口用来远程登录弹性云服务器 ECS,默认对Cloudshell出口IP放开
  • 方案通过 8000 端口提供 Supabase 控制台访问,默认开放0.0.0.0/0全网访问。生产环境基于最小权限原则调整网络策略,仅允许运维网段、后端业务网段访问该端口,收紧访问权限,消除未授权访问风险。
  • 涉及到的Supabase业务端口如下:
    • 8000:访问Supabase服务控制台端口、REST API、Auth API

安全组规则修改

安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。

如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。

  • 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。
  • 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。
  • 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。

Supabase控制台使用

  1. 使用远程ssh登录工具登录到Supabase所在ECS,获取控制台supabase用户登录密码。

    图1 执行sh /opt/supabase/run.sh secrets

    DASHBOARD_PASSWORD为supabase用户密码

    图2 登录supabase控制台,访问地址可通过3.2快速部署章节步骤6获取。

  2. 控制台建表

    图3 控制台建表
    图4 建表详情

    Name:输入表名称,此案例以user_demo为例。

    Columns:定义表字段。

    Data API access:自动生成该表的REST API接口地址。

  3. 表权限配置

    图5 进入Authentication功能模块
    图6 进入到Policies模块
    图7 单击user_demo表后方“Disable RLS”。
    图8 单击“Disable RLS”。

    如果关闭 RLS,所有携带 Publishable key 的请求都能无限制读写整张表,测试演示可用,生产环境严禁关闭。

  4. 获取API Keys

    图9 获取API Keys,表接口调用使用。

通过接口调用实现表的CRUD操作

本案例以shell脚本的方式通过调用表的REST API接口,实现表中数据的CRUD相关操作。

  1. 数据插入,在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表中

  2. 数据查询,在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 检索结果

  3. 数据更新,在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 原有记录被更新

  4. 条件查询,在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 检索结果

  5. 数据删除,在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 数据被删除

相关文档