Skip to content
Migrating from NextAuth.js v4? Read our migration guide.

Drizzle ORM Adapter

리소스

설정

설치

npm install drizzle-orm @auth/drizzle-adapter
npm install drizzle-kit --save-dev

환경 변수

AUTH_DRIZZLE_URL=postgres://postgres:postgres@127.0.0.1:5432/db

설정

이 어댑터를 사용하려면 프로젝트에 Drizzle ORM과 Drizzle Kit을 설정해야 합니다. Drizzle은 간단한 빠른 시작 가이드를 제공합니다. 더 자세한 내용은 사용 중인 데이터베이스에 맞는 Drizzle 문서(PostgreSQL, MySQL, SQLite)를 참고하세요. 요약하면, 설정은 다음과 같은 과정으로 진행됩니다.

  1. 아래 예제 중 하나를 기반으로 스키마 파일을 생성합니다.
  2. 프로젝트에 지원되는 데이터베이스 드라이버를 설치합니다. 예를 들어 @libsql/client, mysql2, postgres 등을 사용할 수 있습니다.
  3. drizzle.config.ts 파일을 생성합니다.
  4. 스키마 파일을 기반으로 초기 마이그레이션을 생성합니다. drizzle-kit generate와 같은 커맨드를 사용합니다.
  5. migrate() 함수를 사용하거나 drizzle-kit push와 같은 커맨드로 데이터베이스에 변경 사항을 직접 적용합니다.
  6. 스키마가 기본값과 다를 경우, 어댑터의 두 번째 매개변수로 스키마를 전달합니다.

스키마

어댑터 설정

./auth.ts
import NextAuth from "next-auth"
import { DrizzleAdapter } from "@auth/drizzle-adapter"
import { db } from "./schema.ts"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: DrizzleAdapter(db),
  providers: [],
})

커스텀 스키마 사용하기

여러분이 직접 만든 테이블을 사용하고 싶다면, DrizzleAdapter의 두 번째 인자로 전달할 수 있습니다.

  • sessionsTable은 선택 사항이며, 데이터베이스 세션 전략을 사용할 때만 필요합니다.
  • verificationTokensTable도 선택 사항이며, Magic Link 프로바이더를 사용할 때만 필요합니다.
auth.ts
import NextAuth from "next-auth"
import Google from "next-auth/providers/google"
import { DrizzleAdapter } from "@auth/drizzle-adapter"
import { db, accounts, sessions, users, verificationTokens } from "./schema"
 
export const { handlers, auth } = NextAuth({
  adapter: DrizzleAdapter(db, {
    usersTable: users,
    accountsTable: accounts,
    sessionsTable: sessions,
    verificationTokensTable: verificationTokens,
  }),
  providers: [Google],
})

데이터베이스 마이그레이션

코드에 스키마를 정의했다면, 이제 데이터베이스를 해당 스키마로 마이그레이션해야 합니다. 예시로 migrate.ts 파일은 다음과 같이 작성할 수 있습니다. 더 자세한 정보는 Drizzle의 마이그레이션 퀵 스타트 가이드를 참고하세요.

migrate.ts
import "dotenv/config"
import { migrate } from "drizzle-orm/mysql2/migrator"
import { db, connection } from "./db"
 
// 이미 적용된 마이그레이션은 건너뛰고 데이터베이스에 마이그레이션을 실행합니다.
await migrate(db, { migrationsFolder: "./drizzle" })
 
// 연결을 닫는 것을 잊지 마세요. 그렇지 않으면 스크립트가 멈춥니다.
await connection.end()

Drizzle을 사용하여 마이그레이션을 관리하는 방법에 대한 전체 문서는 Drizzle Kit의 마이그레이션 페이지에서 확인할 수 있습니다.

Auth.js © Balázs Orbán and Team - 2025