Supabase 是一个开源的后端级服务框架,在强大的 PostgreSQL 数据库基础上,封装了用户认证、文件存储、可视化的运维面板等功能,为开发者提供了一整套开箱即用的后端基础设施。它提供了三大部分的能力:后端、前端与云服务。
数据库核心
访问 Supabase 官网注册登录,创建一个组织并选择免费套餐,然后创建项目(数据库实例)。
在 Table Editor 中可以创建表、编辑字段和记录。左侧 SQL Editor 支持直接编写和执行 SQL 语句。Database 菜单包含 schema、表、函数、触发器、枚举、插件、索引等基础功能。
插件 (Extensions) 现代 Web 开发中,PostgreSQL 搭配插件可以替代许多工具。例如安装 PostGIS 插件后,Postgres 便具备存储地理位置信息的能力。
CREATE TABLE city_map (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
geom GEOMETRY(4326)
);
插入测试数据:
INSERT INTO city_map (name, geom) VALUES
('人民公园', ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 0))', 4326)),
('护城河', ST_GeomFromText('LINESTRING(-5 5, 15 5)', 4326)),
('电话亭', ST_GeomFromText('POINT(12 8)', 4326));
使用插件函数计算面积或距离:
SELECT name, ST_Area(geom) FROM city_map WHERE name = '人民公园';
数据库连接
点击 Connect 按钮获取远程连接地址,可接入任意数据库客户端或后端代码。推荐使用 DBeaver 等工具连接。
连接模式分为三种:
- Direct Connection (直连):不支持 IPv4,适合有 IPv6 环境。
- Session Pooler:支持 IPv4,类似直连。
- Transaction Pooler (事务池):自动维护连接池,适合无状态服务或边缘函数。
Supabase SDK
Supabase SDK 可将前端框架(如 React、Vue)轻松接入后端。以 Vue 为例,初始化工程后安装 SDK:
npm install @supabase/supabase-js
配置客户端:
const supabaseUrl = 'https://your-project.supabase.co'
const supabaseKey = 'your-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)
用户认证
await supabase.auth.signUp({ email: '[email protected]', password: 'password' })
// 登录
const { data, error } = await supabase.auth.signInWithPassword({ email: '[email protected]', password: 'password' })
即使将 API Key 暴露在前端,只要启用 RLS(行级安全策略),数据依然是安全的。
RLS 行级安全策略
RLS 约束哪行数据可以被哪些用户修改或读取。创建业务表 user_info 并关联系统用户表 auth.users。
开启表的 RLS 并配置策略:
ALTER TABLE user_info ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users can view own data" ON user_info
FOR SELECT USING (auth.uid() = user_id);
CREATE POLICY "Users can insert own data" ON user_info
FOR INSERT WITH CHECK (auth.uid() = user_id);
前端查询时,SDK 会自动携带 JWT Token,确保只能访问授权数据。
文件存储
Storage 用于存放文件,适配 S3 标准。创建 Bucket 后可通过 SDK 操作。
配置 Bucket 的 RLS 策略,限制用户只能操作属于自己的文件夹。上传时需指定路径为用户 ID,否则会被拒绝。
边缘函数
Edge Function 类似于 Cloudflare Worker,支持运行服务端逻辑。可通过文档集成到 AI 工具中扩展能力。
实时推送
RealTime 功能监听数据库变化,通过 Websocket 推送通知到客户端。例如订阅消息表变化实现弹窗提醒。
本地部署
Supabase 完全开源,可使用 Docker 自托管。
git clone --depth 1 https://github.com/supabase/supabase
mkdir supabase-project
cp -rf supabase/docker/* supabase-project
cp supabase/docker/.env.example supabase-project/.env
cd supabase-project
docker compose pull
docker compose up -d
启动后访问 localhost:8000(需根据 .env 配置端口),默认账号密码可在文档获取。自托管版本同样支持数据库鉴权、文件存储及 SDK 连接。

