跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScriptNode.jsSaaSAI大前端

Supabase 实战指南:从云服务到本地部署及行级安全策略

Supabase 基于 PostgreSQL 提供开箱即用的后端服务,涵盖用户认证、文件存储及边缘函数。其核心功能,包括通过 SDK 在前端直接操作数据库的安全性原理(RLS 行级安全策略),以及利用 Docker 进行本地自托管的完整流程。内容涉及 PostGIS 插件使用、连接池模式选择、存储桶权限配置等实战细节,适合希望快速构建全栈应用或需要私有化部署的开发者参考。

草莓泡芙发布于 2026/3/23更新于 2026/6/1220 浏览
Supabase 实战指南:从云服务到本地部署及行级安全策略

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。

  1. 克隆源码并准备目录:
    git clone --depth 1 https://github.com/supabase/supabase
    mkdir supabase-project
    # Windows 用户需手动复制 docker 目录内容
    cp -rf supabase/docker/* supabase-project/
    
  2. 配置环境变量:复制 .env.example 为 .env,修改端口(Windows 建议避开 80/443,如改为 18000)。
  3. 启动服务:
    cd supabase-project
    docker compose pull
    docker compose up -d
    
  4. 访问 localhost:18000,使用默认凭证登录(密码见 .env 中的 this_password_is_insecure_and_should_be_updated)。

本地部署后,SDK 只需替换 URL 和 Key 即可正常工作,且支持所有核心功能。Supabase 采用 Apache 2.0 协议,可自由商用。

目录

  1. 数据库核心
  2. 数据库连接
  3. Supabase SDK
  4. RLS 行级安全策略
  5. 文件存储
  6. 边缘函数与实时推送
  7. MCP 支持
  8. 本地部署指引
  9. Windows 用户需手动复制 docker 目录内容
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 一人一周重构开源官网:Qoder + Skills 实战
  • OpenClaw 2026.3.7 更新:支持 GPT-5.4 与记忆热插拔
  • Vue 社区新动态:AI Elements Vue 获尤雨溪关注,填补 AI UI 空白
  • AI 编程工具深度对比:Trae、Cursor、Copilot 与 Windsurf
  • OpenClaw 发布新版本支持 GPT-5.4 与记忆热插拔
  • GitNexus 代码库知识图谱技术方案分析
  • 基于 Trae Solo 与大模型构建智能菜单识别应用
  • MoltBot 接入钉钉 Stream 流式接口配置指南
  • OpenClaw:开源AI智能体框架的技术架构与部署实践
  • GitHub Agent HQ 实战:Copilot Pro 接入与代码库全生命周期管理
  • Mac M 系列芯片安装 Kali Linux 虚拟机指南
  • Python 中的 5 种数据容器:列表、元组、字符串、集合和字典
  • OpenClaw 完整安装与配置:Minimax/DeepSeek 模型及飞书机器人接入
  • Java 版本选型:JDK 特性对比与实战建议
  • VibeThinker-1.5B 快速部署:3 分钟搭建编程助手
  • 用 Rust 构建 Git 提交历史可视化工具
  • 动态规划基础:状态表示与转移方程解析
  • 滑动窗口算法入门:LeetCode 经典例题解析
  • IPTV 播放源检测指南:故障排查与智能监测开源方案
  • Spring AI 工具回调开发实战:文件操作、联网搜索与 PDF 生成

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online