-- Run once on the supplied users schema. Take a database backup first. ALTER TABLE users ADD COLUMN user_auth_version INT UNSIGNED NOT NULL DEFAULT 0; ALTER TABLE users ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS password_resets ( token_hash CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL PRIMARY KEY, user_serial BIGINT UNSIGNED NOT NULL, expires_at DATETIME NOT NULL, INDEX (user_serial), INDEX (expires_at) ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS auth_attempts ( attempt_key CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL PRIMARY KEY, attempts INT UNSIGNED NOT NULL DEFAULT 0, window_started DATETIME NOT NULL, INDEX (window_started) ) ENGINE=InnoDB;