Supabase 是一个基于 PostgreSQL 的开源后端服务框架,封装了用户认证、文件存储、边缘函数等功能,为开发者提供了一套开箱即用的基础设施。它在 GitHub 上拥有极高的关注度,适合快速构建前后端完整应用。
Supabase 主要提供三大部分能力:后端基础设施(数据库、存储、函数)、前端 SDK 接入以及免费云服务。项目完全开源,支持通过源代码或 Docker 镜像进行本地私有化部署,也可直接使用官方云实例。
数据库核心
访问 Supabase 官网注册账号并创建组织与项目。在控制台左侧的 Table Editor 中可创建数据表,编辑记录。SQL Editor 允许直接编写和执行 SQL 语句。
在 Database 菜单下,可管理 Schema、表、函数、触发器、索引等。其中 Extensions(插件)功能强大,例如启用 PostGIS 插件后,PostgreSQL 即可存储地理位置信息,替代部分 GIS 工具。
CREATE TABLE city_map (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
geom GEOMETRY(GEOMETRY, 4326)
);
INSERT INTO city_map (name, geom) VALUES
('人民公园', ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326)),
('护城河', ST_GeomFromText('LINESTRING(-5 5, 15 5)', 4326));
数据库连接
除了网页操作,Supabase 提供远程连接地址。可通过 DBeaver 等客户端工具直连。连接模式分为 Direct Connection(直连,不支持 IPv4)和 Session Pooler(支持 IPv4)。对于无状态服务如 Serverless 函数,推荐使用 Transaction Pooler 模式,由 Supabase 自动维护连接池以降低压力。
Supabase SDK
SDK 允许前端框架(React、Vue 等)直接接入后端。安装 @supabase/supabase-js 后即可使用。
关于 API Key 的安全性:虽然将 Key 暴露在前端看似有风险,但配合 RLS(行级安全策略),即使在前端交互也能保障数据安全。以下是基础的用户注册与登录示例:
const supabase = createClient(supabaseUrl, supabaseKey);
// 注册
await supabase.auth.signUp({ email: '[email protected]', password: 'SecurePassword123!' });
// 登录
const { data, error } = await supabase.auth.signInWithPassword({
email: '[email protected]',
password: 'SecurePassword123!'
});
console.log(data); // 包含 session 和用户信息
RLS 行级安全策略
RLS 是 PostgreSQL 的原生功能,用于约束数据的读写权限。默认情况下,未配置 RLS 的表无法通过 SDK 查询。
以用户信息表为例,需建立外键关联系统用户表,并开启 RLS。策略模板可设定'仅允许用户查看/修改自己的数据'。
-- 启用 RLS
ALTER TABLE user_info ENABLE ROW LEVEL SECURITY;
-- 创建策略:仅允许当前用户读取自己的数据
CREATE POLICY "User can view own data" ON user_info
FOR SELECT USING (auth.uid() = user_id);
前端查询时,SDK 会自动携带 JWT Token。若尝试查询他人数据或插入不符合策略的记录,服务器将返回 403 Forbidden 错误,从而确保数据隔离。
文件存储
Storage 模块支持 S3 协议。创建 Bucket 后可配置 Policy,限制用户上传文件的路径权限。例如,强制用户只能上传到以其 User ID 命名的文件夹内。
// 上传文件
const { data, error } = await supabase.storage
.from('images')
.upload(`public/${userId}/file.jpg`, file);
免费层通常有存储空间限制(如 500MB 数据库,1GB 存储),超出后可考虑本地部署。
边缘函数与实时推送
Edge Function 类似 Cloudflare Worker,支持运行服务端逻辑。RealTime 功能通过 Websocket 监听数据库变更,实现消息推送或弹窗提醒。
MCP 支持
Supabase 支持 MCP(Model Context Protocol),可将数据库能力集成至 AI 工具中,辅助生成代码或分析数据。
本地部署指引
Supabase 采用 Docker Compose 架构,包含约 13 个组件,建议内存至少 4GB。
- 克隆源码并准备目录:
git clone --depth 1 https://github.com/supabase/supabase mkdir supabase-project # Windows 用户需手动复制 docker 目录内容 cp -rf supabase/docker/* supabase-project/ - 配置环境变量:复制
.env.example为.env,修改端口(Windows 建议避开 80/443,如改为 18000)。 - 启动服务:
cd supabase-project docker compose pull docker compose up -d - 访问
localhost:18000,使用默认凭证登录(密码见.env中的this_password_is_insecure_and_should_be_updated)。
本地部署后,SDK 只需替换 URL 和 Key 即可正常工作,且支持所有核心功能。Supabase 采用 Apache 2.0 协议,可自由商用。


