PlanetScale 快速开始 #

准备工作 #

注册 PlanetScale 账号 #

  1. 访问 PlanetScale 官网
  2. 点击 “Sign up” 按钮
  3. 选择注册方式:
    • 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 #

  1. 进入数据库页面
  2. 点击 “Console” 标签
  3. 在编辑器中输入 SQL
  4. 点击 “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 的快速入门!接下来你可以:

  1. 学习 核心概念 深入理解 PlanetScale
  2. 学习 数据库管理 掌握更多操作
  3. 学习 分支操作 掌握分支工作流
最后更新:2026-03-29