Database
Every verified stack backed by MySQL 8.
MySQL 8 via Drizzle ORM and the mysql2 driver.
Why MySQL 8, specifically
note
mysql2's pool multiplexes connections; drizzle-orm/mysql2 wraps it. One module-level pool is right for a serverless/edge app — the runtime and the pool handle concurrency.
note
MySQL has no row-level security: multi-tenant isolation is enforced in application code via the forOrg helper (src/lib/tenant.ts), not by the database. See the tenant-scoping section on SaaS pages.
What MySQL 8 pulls in
bun add drizzle-orm mysql2DATABASE_URLMySQL connection string (mysql://…)120 verified stacks
✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk✓
Next.js 16 (App Router) · Better Auth✓
Next.js 16 (App Router) · Clerk✓
Nuxt 4 · Better Auth✓
Nuxt 4 · Clerk✓
React Router v8 · Better Auth✓
React Router v8 · Clerk