Skip to main content

MySQL / MariaDB with mysql2

Install

npm install mysql2

Setup

import mysql from 'mysql2/promise';
import { MySqlUserStore } from './examples/mysql-user-store.example';

const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});

const userStore = new MySqlUserStore(pool);
await userStore.init(); // creates the `users` table automatically
const auth = new AuthConfigurator(config, userStore);

Schema

CREATE TABLE IF NOT EXISTS users (
id VARCHAR(36) PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255),
name VARCHAR(255),
role VARCHAR(50) DEFAULT 'user',
loginProvider VARCHAR(50) DEFAULT 'local',
providerAccountId VARCHAR(255),
refreshToken TEXT,
refreshTokenExpiry DATETIME,
resetToken VARCHAR(255),
resetTokenExpiry DATETIME,
totpSecret VARCHAR(255),
isTotpEnabled TINYINT(1) DEFAULT 0,
magicLinkToken VARCHAR(255),
magicLinkTokenExpiry DATETIME,
smsCode VARCHAR(10),
smsCodeExpiry DATETIME,
isEmailVerified TINYINT(1) DEFAULT 0,
phoneNumber VARCHAR(20),
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP
);