express-mysql-session - Express.js

  • 作成日:
  • 最終更新日:2025/10/11

express-mysql-session とは?

Express のセッションを MySQL に保存するためのストレージです。内部的には MySQL にクエリを投げる仕組みが組み込まれています。

express-sessionと組み合わせて利用します。

  • express-session がセッションの「管理」を行う
  • express-mysql-session がその「保存先」として MySQL を扱う

express-mysql-sessionをインストールするには、以下のコマンドを実行します。

npm install express-mysql-session

express-mysql-session は内部で mysql または mysql2 に依存します。

データベースの作成

認証機能があるアプリの場合、認証やアクセスのたびにセッションDBへ読み書きが発生し、負荷が高くなる可能性が考えられる場合、セッション管理のデータベースは分けて作成します。

テーブルは指定したデータベースにセッション用のテーブルが自動で作成されます。

# データベースを作成
CREATE DATABASE session_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# ユーザーを作成
CREATE USER 'session_user'@'localhost' IDENTIFIED BY 'password';

# ユーザーに権限を付与
GRANT ALL ON session_db.* TO 'session_user'@'localhost';

基本的な利用方法

基本的な利用方法は以下のようにします。

const session = require('express-session');
const MySQLStore = require('express-mysql-session')(session);

const sessionStore = new MySQLStore({
  host: 'localhost',
  port: 3306,
  user: 'session_user',
  password: 'password',
  database: 'session_db'
});

app.use(session({
  key: 'myapp_session_id',
  secret: "secret",
  store: sessionStore,           // MariaDB ストア
  resave: false,                 // 毎回セッションを保存しない
  saveUninitialized: false,      // 未初期化セッションを保存しない
  cookie: {
maxAge: 1000 * 60 * 60,      // 有効期限 1時間
secure: false,               // HTTPSのみならtrue
httpOnly: true               // JSからアクセス不可
  }
}));