PlanetScale 快速开始 #
准备工作 #
注册 PlanetScale 账号 #
- 访问 PlanetScale 官网
- 点击 “Sign up” 按钮
- 选择注册方式:
- GitHub 账号(推荐)
- Google 账号
- 邮箱注册
text
┌─────────────────────────────────────────────────────────────┐
│ 注册流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 选择注册方式 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ GitHub │ │ Google │ │ Email │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ 2. 填写基本信息 │
│ - 用户名 │
│ - 组织名称 │
│ │
│ 3. 选择计划 │
│ - Hobby(免费) │
│ - Scaler(付费) │
│ │
│ 4. 验证邮箱(如使用邮箱注册) │
│ │
└─────────────────────────────────────────────────────────────┘
安装 CLI 工具 #
PlanetScale 提供了强大的命令行工具 pscale:
macOS (Homebrew):
bash
brew install planetscale/tap/pscale
Windows (Scoop):
powershell
scoop bucket add planetscale https://github.com/planetscale/scoop-bucket.git
scoop install pscale
Linux:
bash
curl -fsSL https://raw.githubusercontent.com/planetscale/cli/main/install.sh | bash
验证安装:
bash
pscale version
# pscale version 0.200.0 (build date: 2024-01-15T12:00:00Z)
创建数据库 #
通过 Web 控制台创建 #
text
┌─────────────────────────────────────────────────────────────┐
│ 创建数据库步骤 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 登录 PlanetScale 控制台 │
│ https://app.planetscale.com │
│ │
│ 2. 点击 "Create database" │
│ │
│ 3. 填写数据库信息: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Database name: my-first-db │ │
│ │ Region: AWS US East (us-east-1) │ │
│ │ Cluster: Hobby (free) │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 4. 点击 "Create database" │
│ │
│ 5. 等待数据库创建完成(约 1-2 分钟) │
│ │
└─────────────────────────────────────────────────────────────┘
通过 CLI 创建 #
bash
# 登录 PlanetScale
pscale auth login
# 创建数据库
pscale database create my-first-db --region us-east-1
# 查看数据库状态
pscale database show my-first-db
输出示例:
text
NAME REGION STATE CREATED AT
my-first-db us-east-1 ready 2024-01-15 12:00:00
区域选择 #
| 区域代码 | 区域名称 | 说明 |
|---|---|---|
| us-east-1 | AWS US East (N. Virginia) | 美国东部,最常用 |
| us-west-1 | AWS US West (Oregon) | 美国西部 |
| eu-west-1 | AWS EU West (Ireland) | 欧洲西部 |
| ap-southeast-1 | AWS Asia Pacific (Singapore) | 亚太地区 |
| ap-northeast-1 | AWS Asia Pacific (Tokyo) | 日本 |
选择建议:
text
┌─────────────────────────────────────────────────────────────┐
│ 区域选择建议 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 中国大陆用户: │
│ - 推荐:ap-southeast-1 (新加坡) │
│ - 备选:ap-northeast-1 (东京) │
│ │
│ 美国用户: │
│ - 推荐:us-east-1 (弗吉尼亚) │
│ - 备选:us-west-1 (俄勒冈) │
│ │
│ 欧洲用户: │
│ - 推荐:eu-west-1 (爱尔兰) │
│ │
│ 注意:区域一旦选定无法更改 │
│ │
└─────────────────────────────────────────────────────────────┘
连接数据库 #
获取连接信息 #
text
┌─────────────────────────────────────────────────────────────┐
│ 连接方式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 在数据库页面点击 "Connect" │
│ │
│ 2. 选择连接方式: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ ○ Connect with │ │
│ │ - Prisma │ │
│ │ - Node.js │ │
│ │ - Python │ │
│ │ - Go │ │
│ │ - ... │ │
│ │ │ │
│ │ ○ Connection string │ │
│ │ mysql://... │ │
│ │ │ │
│ │ ○ CLI │ │
│ │ pscale shell │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
使用 CLI 连接 #
bash
# 打开 MySQL shell
pscale shell my-first-db main
# 执行 SQL 命令
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| my-first-db |
+--------------------+
mysql> CREATE TABLE users (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(100) NOT NULL,
-> email VARCHAR(255) UNIQUE NOT NULL,
-> created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-> );
mysql> INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
mysql> SELECT * FROM users;
+----+-------+-------------------+---------------------+
| id | name | email | created_at |
+----+-------+-------------------+---------------------+
| 1 | Alice | alice@example.com | 2024-01-15 12:00:00 |
+----+-------+-------------------+---------------------+
使用连接字符串 #
获取连接字符串:
bash
# 创建密码
pscale password create my-first-db main my-password
# 输出示例
# Password created for branch main.
# Connection string: mysql://abc123:pscale_pw_xxx@aws.connect.psdb.cloud/my-first-db?sslaccept=strict
Node.js 连接示例:
javascript
import mysql from 'mysql2/promise';
async function main() {
const connection = await mysql.createConnection(
'mysql://abc123:pscale_pw_xxx@aws.connect.psdb.cloud/my-first-db?sslaccept=strict'
);
const [rows] = await connection.execute('SELECT * FROM users');
console.log(rows);
await connection.end();
}
main();
使用环境变量:
bash
# .env 文件
DATABASE_URL="mysql://abc123:pscale_pw_xxx@aws.connect.psdb.cloud/my-first-db?sslaccept=strict"
javascript
import mysql from 'mysql2/promise';
import 'dotenv/config';
async function main() {
const connection = await mysql.createConnection(process.env.DATABASE_URL);
const [rows] = await connection.execute('SELECT * FROM users');
console.log(rows);
await connection.end();
}
main();
创建数据表 #
基本表操作 #
sql
-- 创建用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建文章表
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT,
author_id INT NOT NULL,
status ENUM('draft', 'published') DEFAULT 'draft',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_author (author_id)
);
-- 插入测试数据
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
INSERT INTO posts (title, content, author_id, status) VALUES
('First Post', 'Hello World!', 1, 'published'),
('Second Post', 'My second post', 1, 'draft'),
('Bob Post', 'Hello from Bob', 2, 'published');
查询数据 #
sql
-- 基本查询
SELECT * FROM users;
-- 条件查询
SELECT * FROM posts WHERE status = 'published';
-- 关联查询
SELECT
posts.title,
users.name AS author,
posts.created_at
FROM posts
JOIN users ON posts.author_id = users.id
WHERE posts.status = 'published';
-- 分组统计
SELECT
users.name,
COUNT(posts.id) AS post_count
FROM users
LEFT JOIN posts ON users.id = posts.author_id
GROUP BY users.id;
数据库分支 #
理解分支 #
text
┌─────────────────────────────────────────────────────────────┐
│ 分支概念 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 创建数据库时自动创建 main 分支(生产分支) │
│ │
│ ┌─────────────┐ │
│ │ main │ ← 生产分支,包含真实数据 │
│ │ (生产) │ │
│ └─────────────┘ │
│ │
│ 可以创建开发分支进行 Schema 变更: │
│ │
│ ┌─────────────┐ │
│ │ main │ │
│ └──────┬──────┘ │
│ │ │
│ │ 创建分支 │
│ ▼ │
│ ┌─────────────┐ │
│ │ develop │ ← 开发分支,Schema 变更测试 │
│ │ (开发) │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
创建开发分支 #
bash
# 创建开发分支
pscale branch create my-first-db develop
# 查看分支列表
pscale branch list my-first-db
# 输出示例
# NAME PARENT READY CREATED AT
# main - true 2024-01-15 12:00:00
# develop main true 2024-01-15 13:00:00
在开发分支进行 Schema 变更 #
bash
# 连接到开发分支
pscale shell my-first-db develop
# 添加新列
mysql> ALTER TABLE users ADD COLUMN phone VARCHAR(20);
# 验证变更
mysql> DESCRIBE users;
+------------+--------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+------------+--------------+------+-----+-------------------+
| id | int | NO | PRI | NULL |
| name | varchar(100) | NO | | NULL |
| email | varchar(255) | NO | UNI | NULL |
| phone | varchar(20) | YES | | NULL |
| created_at | timestamp | YES | | CURRENT_TIMESTAMP |
| updated_at | timestamp | YES | | CURRENT_TIMESTAMP |
+------------+--------------+------+-----+-------------------+
创建部署请求 #
bash
# 创建部署请求,将变更合并到 main
pscale deploy-request create my-first-db develop
# 查看部署请求
pscale deploy-request list my-first-db
# 部署变更
pscale deploy-request deploy my-first-db 1
使用 Web 控制台 #
控制台功能 #
text
┌─────────────────────────────────────────────────────────────┐
│ Web 控制台功能 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Overview(概览) │
│ ├── 数据库状态 │
│ ├── 存储使用量 │
│ └── 读写统计 │
│ │
│ Branches(分支) │
│ ├── 创建/删除分支 │
│ ├── Schema 对比 │
│ └── 数据同步 │
│ │
│ Console(控制台) │
│ ├── 执行 SQL 查询 │
│ └── 查看结果 │
│ │
│ Deploy Requests(部署请求) │
│ ├── 创建部署请求 │
│ ├── 审核变更 │
│ └── 执行部署 │
│ │
│ Settings(设置) │
│ ├── 连接信息 │
│ ├── 密码管理 │
│ └── 集成配置 │
│ │
└─────────────────────────────────────────────────────────────┘
使用 Web Console 执行 SQL #
- 进入数据库页面
- 点击 “Console” 标签
- 在编辑器中输入 SQL
- 点击 “Run” 执行
text
┌─────────────────────────────────────────────────────────────┐
│ Console │
├─────────────────────────────────────────────────────────────┤
│ │
│ SELECT * FROM users LIMIT 10; │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Run │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Results: │
│ ┌────┬───────┬─────────────────────┐ │
│ │ id │ name │ email │ │
│ ├────┼───────┼─────────────────────┤ │
│ │ 1 │ Alice │ alice@example.com │ │
│ │ 2 │ Bob │ bob@example.com │ │
│ └────┴───────┴─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
监控数据库 #
查看指标 #
bash
# 查看数据库指标
pscale database show my-first-db
# 输出示例
NAME REGION STATE STORAGE USED ROWS READ ROWS WRITTEN
my-first-db us-east-1 ready 10 MB 1,234,567 123,456
Web 控制台监控 #
在数据库 Overview 页面可以看到:
- 存储使用量
- 每日读取行数
- 每日写入行数
- 连接数
- 慢查询
清理资源 #
删除数据库 #
bash
# 删除数据库(谨慎操作!)
pscale database delete my-first-db
# 确认删除
# Are you sure you want to delete database my-first-db? [y/N] y
下一步 #
恭喜你完成了 PlanetScale 的快速入门!接下来你可以:
最后更新:2026-03-29