178 lines
4.6 KiB
Markdown
178 lines
4.6 KiB
Markdown
# Navicat 连接 Supabase PostgreSQL 解决方案
|
||
|
||
## 🔍 错误说明
|
||
|
||
**错误信息**: `tenant or user not found`
|
||
|
||
**原因**: Supabase的PostgreSQL连接需要特定的连接参数和认证方式,与普通PostgreSQL略有不同。
|
||
|
||
## 🛠️ 解决方案
|
||
|
||
### 步骤1: 获取正确的连接信息
|
||
|
||
1. 登录 [Supabase Dashboard](https://app.supabase.com/)
|
||
2. 选择您的项目
|
||
3. 点击左侧菜单 `Settings` > `Database`
|
||
4. 在 `Connection info` 部分找到连接信息
|
||
|
||
### 步骤2: Navicat连接配置
|
||
|
||
#### 基本连接设置
|
||
|
||
| 字段 | 值 | 示例 |
|
||
|------|----|----|
|
||
| **连接名** | 自定义名称 | `My Supabase DB` |
|
||
| **主机** | Supabase提供的Host | `db.xxxxxxxxxxxxx.supabase.co` |
|
||
| **端口** | `5432` | `5432` |
|
||
| **数据库** | `postgres` | `postgres` |
|
||
| **用户名** | `postgres` | `postgres` |
|
||
| **密码** | 创建项目时设置的密码 | `your_database_password` |
|
||
|
||
#### 重要配置细节
|
||
|
||
1. **主机地址格式**:
|
||
```
|
||
db.[项目引用ID].supabase.co
|
||
```
|
||
- ⚠️ 不要使用 `https://` 前缀
|
||
- ⚠️ 确保是 `db.` 开头,不是 `api.`
|
||
|
||
2. **端口**: 必须是 `5432`
|
||
|
||
3. **数据库名**: 必须是 `postgres`
|
||
|
||
4. **用户名**: 必须是 `postgres`
|
||
|
||
5. **密码**: 这是您创建Supabase项目时设置的数据库密码
|
||
- ⚠️ 不是Supabase账户密码
|
||
- ⚠️ 不是API Key
|
||
|
||
### 步骤3: SSL配置 (重要)
|
||
|
||
在Navicat的连接设置中:
|
||
|
||
1. 点击 `SSL` 选项卡
|
||
2. 勾选 `使用SSL`
|
||
3. SSL模式选择: `require` 或 `prefer`
|
||
4. 不需要配置证书文件
|
||
|
||
### 步骤4: 高级设置
|
||
|
||
在 `高级` 选项卡中:
|
||
- **连接超时**: 设置为 `30` 秒
|
||
- **服务器版本**: 选择 `PostgreSQL 15` 或更高版本
|
||
|
||
## 🔧 常见问题排查
|
||
|
||
### 问题1: 找不到项目引用ID
|
||
|
||
**解决方案**:
|
||
1. 在Supabase Dashboard中
|
||
2. 进入 `Settings` > `General`
|
||
3. 复制 `Reference ID`
|
||
4. 主机格式: `db.[Reference ID].supabase.co`
|
||
|
||
### 问题2: 密码错误
|
||
|
||
**解决方案**:
|
||
1. 确认使用的是数据库密码,不是账户密码
|
||
2. 如果忘记密码,在 `Settings` > `Database` 中重置
|
||
3. 重置后等待几分钟再尝试连接
|
||
|
||
### 问题3: 网络连接问题
|
||
|
||
**解决方案**:
|
||
1. 检查防火墙设置,确保允许5432端口
|
||
2. 尝试使用VPN或更换网络环境
|
||
3. 检查公司网络是否阻止外部数据库连接
|
||
|
||
### 问题4: SSL连接失败
|
||
|
||
**解决方案**:
|
||
1. 确保启用SSL
|
||
2. 如果SSL连接失败,尝试不同的SSL模式:
|
||
- `require` (推荐)
|
||
- `prefer`
|
||
- `allow`
|
||
|
||
## 📋 完整连接示例
|
||
|
||
### 示例1: 标准连接
|
||
```
|
||
连接名: Supabase Production
|
||
主机: db.abcdefghijklmnop.supabase.co
|
||
端口: 5432
|
||
数据库: postgres
|
||
用户名: postgres
|
||
密码: your_secure_password_123
|
||
SSL: 启用 (require)
|
||
```
|
||
|
||
### 示例2: 连接字符串格式
|
||
```
|
||
postgresql://postgres:your_password@db.abcdefghijklmnop.supabase.co:5432/postgres?sslmode=require
|
||
```
|
||
|
||
## 🔍 验证连接
|
||
|
||
连接成功后,您应该能看到以下数据库结构:
|
||
|
||
```
|
||
postgres (数据库)
|
||
├── auth (schema) - Supabase认证系统
|
||
├── public (schema) - 您的应用数据
|
||
│ ├── ak_contents
|
||
│ ├── ak_topics
|
||
│ ├── ak_comments
|
||
│ └── ... (其他表)
|
||
├── storage (schema) - Supabase存储系统
|
||
└── ... (其他系统schema)
|
||
```
|
||
|
||
## 🚀 连接成功后的操作
|
||
|
||
1. **部署数据库结构**:
|
||
- 在Navicat中打开SQL编辑器
|
||
- 粘贴 `ai_multilingual_news_database.sql` 内容
|
||
- 执行SQL脚本
|
||
|
||
2. **插入演示数据** (可选):
|
||
- 执行 `topics_comments_init_data.sql`
|
||
|
||
3. **验证部署**:
|
||
```sql
|
||
-- 检查表是否创建成功
|
||
SELECT table_name FROM information_schema.tables
|
||
WHERE table_schema = 'public' AND table_name LIKE 'ak_%';
|
||
```
|
||
|
||
## 💡 小贴士
|
||
|
||
1. **保存连接信息**: 成功连接后保存连接配置,避免重复输入
|
||
2. **定期备份**: 使用Navicat的备份功能定期备份数据
|
||
3. **查询优化**: 利用Navicat的查询构建器和执行计划功能
|
||
4. **数据同步**: 可以使用Navicat的数据同步功能在不同环境间同步数据
|
||
|
||
## 🆘 仍然无法连接?
|
||
|
||
如果按照以上步骤仍然无法连接,请检查:
|
||
|
||
1. **Supabase项目状态**: 确保项目处于活跃状态
|
||
2. **账户余额**: 确保Supabase账户没有欠费
|
||
3. **区域限制**: 某些地区可能有网络限制
|
||
4. **工具版本**: 确保Navicat是最新版本
|
||
|
||
### 替代连接工具
|
||
|
||
如果Navicat仍有问题,可以尝试:
|
||
- **pgAdmin 4** (免费)
|
||
- **DBeaver** (免费)
|
||
- **DataGrip** (JetBrains)
|
||
- **Supabase Dashboard** 内置SQL编辑器
|
||
|
||
---
|
||
|
||
**更新时间**: 2025年6月18日
|
||
**适用版本**: Supabase 所有版本
|
||
**工具版本**: Navicat 16+ 推荐
|