summaryrefslogtreecommitdiff
path: root/data/sql/old/db_auth
diff options
context:
space:
mode:
authorKitzunu <24550914+Kitzunu@users.noreply.github.com>2024-01-20 14:19:38 +0100
committerGitHub <noreply@github.com>2024-01-20 14:19:38 +0100
commitea93531bd546867e25979e183dcf1ab25c388605 (patch)
treebc9f53fceeed09cbf99de09dfbf44f46429f703e /data/sql/old/db_auth
parent47a1982c0d3ab7e5e38eb8cb4718aafc8c70f05d (diff)
refactor(DB): Move old archive files to old dir (#18164)
* refactor(DB): Move old archive files to old dir * fix auth and char
Diffstat (limited to 'data/sql/old/db_auth')
-rw-r--r--data/sql/old/db_auth/1.x/2016_07_09_00.sql3
-rw-r--r--data/sql/old/db_auth/1.x/2016_07_09_01.sql1
-rw-r--r--data/sql/old/db_auth/1.x/2016_07_10_00.sql16
-rw-r--r--data/sql/old/db_auth/1.x/2016_08_25_00.sql6
-rw-r--r--data/sql/old/db_auth/1.x/2016_08_25_01.sql13
-rw-r--r--data/sql/old/db_auth/1.x/2016_09_04_00.sql13
-rw-r--r--data/sql/old/db_auth/2.x/2016_11_18_00.sql21
-rw-r--r--data/sql/old/db_auth/2.x/2016_11_19_00.sql32
-rw-r--r--data/sql/old/db_auth/2.x/2017_08_19_00.sql28
-rw-r--r--data/sql/old/db_auth/2.x/2017_08_20_01.sql44
-rw-r--r--data/sql/old/db_auth/2.x/2017_12_05_00.sql35
-rw-r--r--data/sql/old/db_auth/2.x/2018_01_21_00.sql38
-rw-r--r--data/sql/old/db_auth/2.x/2018_09_17_00.sql29
-rw-r--r--data/sql/old/db_auth/2.x/2019_01_05_00.sql31
-rw-r--r--data/sql/old/db_auth/2.x/2019_02_08_00.sql42
-rw-r--r--data/sql/old/db_auth/3.x/2019_02_17_00.sql26
-rw-r--r--data/sql/old/db_auth/3.x/2019_04_13_00.sql28
-rw-r--r--data/sql/old/db_auth/3.x/2020_02_07_00.sql77
-rw-r--r--data/sql/old/db_auth/4.x/2021_01_25_00.sql26
-rw-r--r--data/sql/old/db_auth/4.x/2021_03_21_00.sql52
-rw-r--r--data/sql/old/db_auth/4.x/2021_03_23_00.sql33
-rw-r--r--data/sql/old/db_auth/4.x/2021_05_13_00.sql322
-rw-r--r--data/sql/old/db_auth/4.x/2021_05_26_00.sql60
-rw-r--r--data/sql/old/db_auth/4.x/2021_05_30_00.sql30
-rw-r--r--data/sql/old/db_auth/4.x/2021_06_17_00.sql31
-rw-r--r--data/sql/old/db_auth/4.x/2021_10_14_00.sql52
-rw-r--r--data/sql/old/db_auth/5.x/2021_10_14_01_auth.sql2
-rw-r--r--data/sql/old/db_auth/5.x/2021_11_06_00.sql29
-rw-r--r--data/sql/old/db_auth/6.x/2022_01_23_00.sql30
-rw-r--r--data/sql/old/db_auth/7.x/2022_04_24_00.sql29
-rw-r--r--data/sql/old/db_auth/7.x/2022_04_28_00.sql4
-rw-r--r--data/sql/old/db_auth/8.x/2022_08_21_00.sql3
-rw-r--r--data/sql/old/db_auth/9.x/2023_01_31_00.sql1
-rw-r--r--data/sql/old/db_auth/9.x/2023_02_20_00.sql12
-rw-r--r--data/sql/old/db_auth/9.x/2023_04_23_00.sql18
35 files changed, 1217 insertions, 0 deletions
diff --git a/data/sql/old/db_auth/1.x/2016_07_09_00.sql b/data/sql/old/db_auth/1.x/2016_07_09_00.sql
new file mode 100644
index 0000000000..b6cec06fc4
--- /dev/null
+++ b/data/sql/old/db_auth/1.x/2016_07_09_00.sql
@@ -0,0 +1,3 @@
+CREATE TABLE `auth_db_version` (
+ `2016_07_09_00` BIT(1) DEFAULT NULL
+) ENGINE=MYISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Last applied sql update to DB';
diff --git a/data/sql/old/db_auth/1.x/2016_07_09_01.sql b/data/sql/old/db_auth/1.x/2016_07_09_01.sql
new file mode 100644
index 0000000000..88c5c51d74
--- /dev/null
+++ b/data/sql/old/db_auth/1.x/2016_07_09_01.sql
@@ -0,0 +1 @@
+ALTER TABLE auth_db_version CHANGE COLUMN 2016_07_09_00 2016_07_09_01 bit;
diff --git a/data/sql/old/db_auth/1.x/2016_07_10_00.sql b/data/sql/old/db_auth/1.x/2016_07_10_00.sql
new file mode 100644
index 0000000000..1368ff7e75
--- /dev/null
+++ b/data/sql/old/db_auth/1.x/2016_07_10_00.sql
@@ -0,0 +1,16 @@
+ALTER TABLE auth_db_version CHANGE COLUMN 2016_07_09_01 2016_07_10_00 bit;
+
+DROP TABLE IF EXISTS `autobroadcast`;
+CREATE TABLE `autobroadcast` (
+ `realmid` int(10) NOT NULL,
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `weight` tinyint(3) DEFAULT 1,
+ `text` longtext NOT NULL,
+ PRIMARY KEY (`id`, `realmid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ALTER TABLE `autobroadcast`
+ CHANGE `realmid` `realmid` INT(11) NOT NULL DEFAULT '-1',
+ CHANGE `id` `id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
+ CHANGE `weight` `weight` TINYINT(3) UNSIGNED DEFAULT '1',
+ENGINE=INNODB;
diff --git a/data/sql/old/db_auth/1.x/2016_08_25_00.sql b/data/sql/old/db_auth/1.x/2016_08_25_00.sql
new file mode 100644
index 0000000000..9444ba3adc
--- /dev/null
+++ b/data/sql/old/db_auth/1.x/2016_08_25_00.sql
@@ -0,0 +1,6 @@
+ALTER TABLE auth_db_version CHANGE COLUMN 2016_07_10_00 2016_08_25_00 bit;
+
+--
+-- Do not remove this file when we archive sql under this folder
+-- it is needed for pending sql importer
+--
diff --git a/data/sql/old/db_auth/1.x/2016_08_25_01.sql b/data/sql/old/db_auth/1.x/2016_08_25_01.sql
new file mode 100644
index 0000000000..49b31e9423
--- /dev/null
+++ b/data/sql/old/db_auth/1.x/2016_08_25_01.sql
@@ -0,0 +1,13 @@
+ALTER TABLE auth_db_version CHANGE COLUMN 2016_08_25_00 2016_08_25_01 bit;
+
+RENAME TABLE `auth_db_version` TO `version_db_auth`;
+
+ALTER TABLE `version_db_auth`
+ADD COLUMN `sql_rev` VARCHAR(100) NOT NULL FIRST,
+ADD COLUMN `required_rev` VARCHAR(100) NULL AFTER `sql_rev`,
+ADD PRIMARY KEY (`sql_rev`),
+ENGINE=INNODB;
+
+ALTER TABLE `version_db_auth` ADD CONSTRAINT `required` FOREIGN KEY (`required_rev`) REFERENCES `version_db_auth`(`sql_rev`);
+
+
diff --git a/data/sql/old/db_auth/1.x/2016_09_04_00.sql b/data/sql/old/db_auth/1.x/2016_09_04_00.sql
new file mode 100644
index 0000000000..32cc1df42a
--- /dev/null
+++ b/data/sql/old/db_auth/1.x/2016_09_04_00.sql
@@ -0,0 +1,13 @@
+START TRANSACTION;
+
+ALTER TABLE version_db_auth CHANGE COLUMN 2016_08_25_01 2016_09_04_00 bit;
+
+CREATE TABLE `logs` (
+ `time` int(10) unsigned NOT NULL,
+ `realm` int(10) unsigned NOT NULL,
+ `type` varchar(250) NOT NULL,
+ `level` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `string` text CHARACTER SET latin1
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+COMMIT;
diff --git a/data/sql/old/db_auth/2.x/2016_11_18_00.sql b/data/sql/old/db_auth/2.x/2016_11_18_00.sql
new file mode 100644
index 0000000000..4db79713b5
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2016_11_18_00.sql
@@ -0,0 +1,21 @@
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2016_09_04_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2016_09_04_00 2016_11_18_00 bit;
+
+--
+-- Do not remove this file when we archive sql under this folder
+-- it is needed for pending sql importer
+--
+
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2016_11_19_00.sql b/data/sql/old/db_auth/2.x/2016_11_19_00.sql
new file mode 100644
index 0000000000..ce1003ba62
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2016_11_19_00.sql
@@ -0,0 +1,32 @@
+-- DB update 2016_11_18_00 -> 2016_11_19_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2016_11_18_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2016_11_18_00 2016_11_19_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1478975214169487000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1478975214169487000');
+
+SET SESSION sql_mode = "ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES";
+
+ALTER TABLE `account`
+ ADD `token_key` VARCHAR(100) NOT NULL DEFAULT '' AFTER `s`,
+ ADD `reg_mail` VARCHAR(255) NOT NULL DEFAULT '' AFTER `email`,
+ ADD `last_attempt_ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1' AFTER `last_ip`,
+ ADD `lock_country` VARCHAR(2) NOT NULL DEFAULT '00' AFTER `locked`;
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2017_08_19_00.sql b/data/sql/old/db_auth/2.x/2017_08_19_00.sql
new file mode 100644
index 0000000000..7ec7a62520
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2017_08_19_00.sql
@@ -0,0 +1,28 @@
+-- DB update 2016_11_19_00 -> 2017_08_19_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2016_11_19_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2016_11_19_00 2017_08_19_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1503135763068847900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1503135763068847900');
+
+SET SESSION sql_mode = "ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES";
+
+ALTER TABLE `account` CHANGE `expansion` `expansion` TINYINT(3) UNSIGNED DEFAULT 2 NOT NULL;
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2017_08_20_01.sql b/data/sql/old/db_auth/2.x/2017_08_20_01.sql
new file mode 100644
index 0000000000..12b09a746c
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2017_08_20_01.sql
@@ -0,0 +1,44 @@
+-- DB update 2017_08_19_00 -> 2017_08_20_01
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2017_08_19_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2017_08_19_00 2017_08_20_01 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1498796201292521600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1498796201292521600');
+
+DROP TABLE IF EXISTS `ip2nation`;
+CREATE TABLE `ip2nation` (
+ `ip` int(11) unsigned NOT NULL default '0',
+ `country`char(2) NOT NULL default '',
+ KEY `ip` (`ip`)
+)ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP TABLE IF EXISTS `ip2nationCountries`;
+CREATE TABLE `ip2nationCountries` (
+ `code` varchar(4) NOT NULL default '',
+ `iso_code_2` varchar(2) NOT NULL default '',
+ `iso_code_3` varchar(3) default '',
+ `iso_country` varchar(255) NOT NULL default '',
+ `country` varchar(255) NOT NULL default '',
+ `lat` float NOT NULL default '0',
+ `lon` float NOT NULL default '0',
+ PRIMARY KEY (`code`),
+ KEY `code` (`code`)
+)ENGINE=InnoDB DEFAULT CHARSET=utf8;
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2017_12_05_00.sql b/data/sql/old/db_auth/2.x/2017_12_05_00.sql
new file mode 100644
index 0000000000..6fd5b75ac9
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2017_12_05_00.sql
@@ -0,0 +1,35 @@
+-- DB update 2017_08_20_01 -> 2017_12_05_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2017_08_20_01';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2017_08_20_01 2017_12_05_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1511238042597856200'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1511238042597856200');
+DROP TABLE IF EXISTS `uptime`;
+
+CREATE TABLE `uptime` (
+ `realmid` int(10) unsigned NOT NULL,
+ `starttime` int(10) unsigned NOT NULL DEFAULT '0',
+ `uptime` int(10) unsigned NOT NULL DEFAULT '0',
+ `maxplayers` smallint(5) unsigned NOT NULL DEFAULT '0',
+ `revision` varchar(255) NOT NULL DEFAULT 'AzerothCore',
+ PRIMARY KEY (`realmid`,`starttime`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Uptime system';
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2018_01_21_00.sql b/data/sql/old/db_auth/2.x/2018_01_21_00.sql
new file mode 100644
index 0000000000..b648c9ccd3
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2018_01_21_00.sql
@@ -0,0 +1,38 @@
+-- DB update 2017_12_05_00 -> 2018_01_21_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2017_12_05_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2017_12_05_00 2018_01_21_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1515646234610593200'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1515646234610593200');
+
+DROP TABLE IF EXISTS `account_muted`;
+
+CREATE TABLE `account_muted` (
+ `guid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
+ `mutedate` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+ `mutetime` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+ `mutedby` VARCHAR(50) NOT NULL,
+ `mutereason` VARCHAR(255) NOT NULL,
+ PRIMARY KEY (`guid`, `mutedate`)
+)
+COMMENT='mute List' ENGINE=InnoDB;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2018_09_17_00.sql b/data/sql/old/db_auth/2.x/2018_09_17_00.sql
new file mode 100644
index 0000000000..4e28683b9d
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2018_09_17_00.sql
@@ -0,0 +1,29 @@
+-- DB update 2018_01_21_00 -> 2018_09_17_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2018_01_21_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2018_01_21_00 2018_09_17_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1534268747940576100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1534268747940576100');
+
+ALTER TABLE `account`
+ADD COLUMN `totaltime` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `recruiter`;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2019_01_05_00.sql b/data/sql/old/db_auth/2.x/2019_01_05_00.sql
new file mode 100644
index 0000000000..aab66251b5
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2019_01_05_00.sql
@@ -0,0 +1,31 @@
+-- DB update 2018_09_17_00 -> 2019_01_05_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2018_09_17_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2018_09_17_00 2019_01_05_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1546540718864817294'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1546540718864817294');
+
+ALTER TABLE `account` CHANGE `last_login` `last_login` TIMESTAMP NULL DEFAULT NULL;
+ALTER TABLE `account` CHANGE `email` `email` VARCHAR(255) NOT NULL DEFAULT '';
+
+UPDATE IGNORE `account` SET `last_login`=NULL WHERE `last_login`='0000-00-00 00:00:00';
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/2.x/2019_02_08_00.sql b/data/sql/old/db_auth/2.x/2019_02_08_00.sql
new file mode 100644
index 0000000000..db3a059bf8
--- /dev/null
+++ b/data/sql/old/db_auth/2.x/2019_02_08_00.sql
@@ -0,0 +1,42 @@
+-- DB update 2019_01_05_00 -> 2019_02_08_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2019_01_05_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2019_01_05_00 2019_02_08_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1546018964238773800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1546018964238773800');
+
+CREATE TABLE `logs_ip_actions` (
+`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Unique Identifier',
+`account_id` INT(10) UNSIGNED NOT NULL COMMENT 'Account ID',
+`character_guid` INT(10) UNSIGNED NOT NULL COMMENT 'Character Guid',
+`type` TINYINT(3) UNSIGNED NOT NULL,
+`ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1',
+`systemnote` TEXT NULL COMMENT 'Notes inserted by system',
+`unixtime` INT(10) UNSIGNED NOT NULL COMMENT 'Unixtime',
+`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp',
+`comment` TEXT NULL COMMENT 'Allows users to add a comment',
+PRIMARY KEY (`id`)
+)
+COMMENT='Used to log ips of individual actions'
+COLLATE='utf8_general_ci'
+ENGINE=InnoDB;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/3.x/2019_02_17_00.sql b/data/sql/old/db_auth/3.x/2019_02_17_00.sql
new file mode 100644
index 0000000000..84e61b307a
--- /dev/null
+++ b/data/sql/old/db_auth/3.x/2019_02_17_00.sql
@@ -0,0 +1,26 @@
+-- DB update 2019_02_08_00 -> 2019_02_17_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2019_02_08_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2019_02_08_00 2019_02_17_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = 'xxx'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+-- Placeholder
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/3.x/2019_04_13_00.sql b/data/sql/old/db_auth/3.x/2019_04_13_00.sql
new file mode 100644
index 0000000000..77cc88b0b7
--- /dev/null
+++ b/data/sql/old/db_auth/3.x/2019_04_13_00.sql
@@ -0,0 +1,28 @@
+-- DB update 2019_02_17_00 -> 2019_04_13_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2019_02_17_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2019_02_17_00 2019_04_13_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1554142988374631100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1554142988374631100');
+
+ALTER TABLE `account` CHANGE COLUMN `online` `online` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `last_login`;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/3.x/2020_02_07_00.sql b/data/sql/old/db_auth/3.x/2020_02_07_00.sql
new file mode 100644
index 0000000000..96edb35372
--- /dev/null
+++ b/data/sql/old/db_auth/3.x/2020_02_07_00.sql
@@ -0,0 +1,77 @@
+-- DB update 2019_04_13_00 -> 2020_02_07_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2019_04_13_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2019_04_13_00 2020_02_07_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1579213352894781043'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1579213352894781043');
+
+-- ADD NEW COLUMN
+ALTER TABLE `account_access` ADD COLUMN `comment` VARCHAR(255) DEFAULT '';
+
+-- UPDATE ACCOUNTS
+/*!40000 ALTER TABLE `account_access` DISABLE KEYS */;
+/*!40000 ALTER TABLE `account` DISABLE KEYS */;
+
+-- UPDATE ACCOUNTS test1 test2
+UPDATE `account`
+INNER JOIN `account_access`
+ON `account`.`id` = `account_access`.`id`
+SET `account_access`.`comment` = 'Test account - Console Admin'
+WHERE (`account`.`username` = 'test1' AND `account`.`sha_pass_hash` = '047ce22643f9b0bd6baeb18d51bf1075a4d43fc6') OR
+(`account`.`username` = 'test2' AND `account`.`sha_pass_hash` = '10eb1ff16cf5380147e8281cd8080a210ecb3c53');
+
+-- UPDATE ACCOUNTS test3 test4
+UPDATE `account`
+INNER JOIN `account_access`
+ON `account`.`id` = `account_access`.`id`
+SET `account_access`.`gmlevel` = 3, `account_access`.`comment` = 'Test account - Ingame Admin'
+WHERE (`account`.`username` = 'test3' AND `account`.`sha_pass_hash` = 'e546bbf9ca93ae5291f0b441bb9ea2fa0c466176') OR
+(`account`.`username` = 'test4' AND `account`.`sha_pass_hash` = '61015d83b456a9c6a7defdff07f55265f24097af');
+
+-- UPDATE ACCOUNTS test5 test6
+UPDATE `account`
+INNER JOIN `account_access`
+ON `account`.`id` = `account_access`.`id`
+SET `account_access`.`gmlevel` = 2, `account_access`.`comment` = 'Test account - Major Game Master'
+WHERE (`account`.`username` = 'test5' AND `account`.`sha_pass_hash` = 'dddeac4ffe5f286ec57b7a1ed63bf3a859debe1e') OR
+(`account`.`username` = 'test6' AND `account`.`sha_pass_hash` = 'f1f94cdffd83c8c4182d66689077f92c807ab579');
+
+-- UPDATE ACCOUNTS test7 test8
+UPDATE `account`
+INNER JOIN `account_access`
+ON `account`.`id` = `account_access`.`id`
+SET `account_access`.`gmlevel` = 1, `account_access`.`comment` = 'Test account - Minor Game Master'
+WHERE (`account`.`username` = 'test7' AND `account`.`sha_pass_hash` = '6fcd35c35b127be1d9ca040b2b478eb366506ce2') OR
+(`account`.`username` = 'test8' AND `account`.`sha_pass_hash` = '484332ccb02e284e4e0a04573c3fa417f4745fdf');
+
+-- UPDATE ACCOUNTS test9 test10
+UPDATE `account`
+INNER JOIN `account_access`
+ON `account`.`id` = `account_access`.`id`
+SET `account_access`.`gmlevel` = 0, `account_access`.`comment` = 'Test account - Player'
+WHERE (`account`.`username` = 'test9' AND `account`.`sha_pass_hash` = '4fce15ed251721f02754d5381ae9d0137b6a6a30') OR
+(`account`.`username` = 'test10' AND `account`.`sha_pass_hash` = 'b22d249228e84ab493b39a2bd765bee9b7c0b350');
+
+
+/*!40000 ALTER TABLE `account_access` ENABLE KEYS */;
+/*!40000 ALTER TABLE `account` ENABLE KEYS */;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_01_25_00.sql b/data/sql/old/db_auth/4.x/2021_01_25_00.sql
new file mode 100644
index 0000000000..4af1647779
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_01_25_00.sql
@@ -0,0 +1,26 @@
+-- DB update 2020_02_07_00 -> 2021_01_25_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2020_02_07_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2020_02_07_00 2021_01_25_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = 'xxx'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+-- Placeholder
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_03_21_00.sql b/data/sql/old/db_auth/4.x/2021_03_21_00.sql
new file mode 100644
index 0000000000..fbfb609759
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_03_21_00.sql
@@ -0,0 +1,52 @@
+-- DB update 2021_01_25_00 -> 2021_03_21_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_01_25_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_01_25_00 2021_03_21_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1615629613255169700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1615629613255169700');
+
+-- update `account` structure
+-- sha_pass_hash/s/v kept around for now, for backwards compatibility
+ALTER TABLE `account`
+ DROP COLUMN `sessionkey`,
+ ADD COLUMN `salt` BINARY(32) AFTER `username`,
+ ADD COLUMN `verifier` BINARY(32) AFTER `salt`,
+ ADD COLUMN `session_key` BINARY(40) AFTER `verifier`,
+ MODIFY COLUMN `s` VARCHAR(64) NOT NULL DEFAULT 'dummy value, use `salt` instead',
+ MODIFY COLUMN `v` VARCHAR(64) NOT NULL DEFAULT 'dummy value, use `verifier` instead';
+
+UPDATE `account` SET `salt`=REVERSE(UNHEX(`s`)), `s`=DEFAULT WHERE LENGTH(`s`)=64;
+UPDATE `account` SET `verifier`=REVERSE(UNHEX(`v`)), `v`=DEFAULT WHERE LENGTH(`v`)=64;
+
+ALTER TABLE `account`
+ DROP COLUMN `session_key`,
+ ADD COLUMN `session_key` BINARY(40) DEFAULT NULL AFTER `verifier`;
+
+UPDATE `account` SET `salt`=UNHEX(CONCAT(MD5(RAND()),MD5(RAND()))), `verifier`=UNHEX(CONCAT(MD5(RAND()),MD5(RAND()))) WHERE `salt` IS NULL OR `verifier` IS NULL;
+
+ALTER TABLE `account`
+ DROP COLUMN `s`,
+ DROP COLUMN `v`,
+ DROP COLUMN `sha_pass_hash`,
+ MODIFY COLUMN `salt` BINARY(32) NOT NULL,
+ MODIFY COLUMN `verifier` BINARY(32) NOT NULL;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_03_23_00.sql b/data/sql/old/db_auth/4.x/2021_03_23_00.sql
new file mode 100644
index 0000000000..0d43ec8d00
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_03_23_00.sql
@@ -0,0 +1,33 @@
+-- DB update 2021_03_21_00 -> 2021_03_23_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_03_21_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_03_21_00 2021_03_23_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1609867708436603000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1609867708436603000');
+ALTER TABLE `account_muted`
+CHARSET = 'utf8',
+MODIFY `mutedby` varchar(50) NOT NULL,
+MODIFY `mutereason` varchar(255) NOT NULL;
+ALTER TABLE `logs`
+CHARSET = 'utf8mb4',
+MODIFY `string` text;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_05_13_00.sql b/data/sql/old/db_auth/4.x/2021_05_13_00.sql
new file mode 100644
index 0000000000..1e34c16eef
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_05_13_00.sql
@@ -0,0 +1,322 @@
+-- DB update 2021_03_23_00 -> 2021_05_13_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_03_23_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_03_23_00 2021_05_13_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1620079951672711500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+--
+
+START TRANSACTION; -- we're messing with the accounts table here, let's play it safe
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1620079951672711500');
+
+DROP TABLE IF EXISTS `secret_digest`;
+CREATE TABLE `secret_digest` (
+ `id` INT UNSIGNED NOT NULL,
+ `digest` VARCHAR(100) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB;
+
+-- ============================================== --
+-- BASE32 CONVERSION STARTS HERE --
+-- (there is another banner like this at the end, --
+-- so you know how far down you need to skip) --
+-- ============================================== --
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup1`
+(
+ `c` char(1) not null,
+ `v` tinyint unsigned not null,
+ primary key (`c`)
+)DEFAULT CHARSET=utf8mb4;
+INSERT INTO `_temp_base32_lookup1` (`c`,`v`) VALUES
+('A',00),('B',01),('C',02),('D',03),('E',04),('F',05),('G',06),('H',07),
+('I',08),('J',09),('K',10),('L',11),('M',12),('N',13),('O',14),('P',15),
+('Q',16),('R',17),('S',18),('T',19),('U',20),('V',21),('W',22),('X',23),
+('Y',24),('Z',25),('2',26),('3',27),('4',28),('5',29),('6',30),('7',31);
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup2` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup2` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup3` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup3` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup4` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup4` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup5` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup5` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup6` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup6` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup7` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup7` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_base32_lookup8` LIKE `_temp_base32_lookup1`;
+INSERT INTO `_temp_base32_lookup8` SELECT * FROM `_temp_base32_lookup1`;
+
+CREATE TEMPORARY TABLE `_temp_totp_conversion`
+(
+ `original_key` varchar(100) not null default '',
+ `remaining_key` varchar(100) not null default '',
+ `totp_secret` varbinary(128) default null,
+ primary key(`original_key`),
+ index (`remaining_key`)
+)DEFAULT CHARSET=utf8mb4;
+
+INSERT INTO `_temp_totp_conversion` (`original_key`) SELECT DISTINCT `token_key` FROM `account`;
+UPDATE `_temp_totp_conversion` SET `remaining_key`=TRIM(TRAILING '=' FROM `original_key`),`totp_secret`='' WHERE `original_key`!='';
+
+-- 8 base32 chars = 5 bytes
+-- ...so after 12 iterations we're done
+-- mysql doesn't let us do loops, so we have to do this manually (....mysql)
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 2
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 3
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 4
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 5
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 6
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 7
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 8
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 9
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 10
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 11
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- iteration 12
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+LEFT JOIN `_temp_base32_lookup8` look8 ON look8.`c`=SUBSTR(`remaining_key`,8,1)
+SET `remaining_key`=SUBSTR(`remaining_key`,9),`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 35) | (look2.`v` << 30) | (look3.`v` << 25) | (look4.`v` << 20) | (look5.`v` << 15) | (look6.`v` << 10) | (look7.`v` << 5) | (look8.`v`)),10,16),10,'0')))
+WHERE LENGTH(`remaining_key`) >= 8;
+
+-- ok, now the only things left are trailing partial bytes
+-- if the trailing block had 1 byte , we have xxxxx xxx00 (strlen = 2)
+-- if the trailing block had 2 bytes, we have xxxxx xxxyy yyyyy y0000 (strlen = 4)
+-- if the trailing block had 3 bytes, we have xxxxx xxxyy yyyyy yzzzz zzzz0 (strlen = 5)
+-- if the trailing block had 4 bytes, we have xxxxx xxxyy yyyyy yzzzz zzzzw wwwww ww000 (strlen = 7)
+
+-- 1 byte case
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+SET `remaining_key`='',`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 3) | (look2.`v` >> 2)),10,16),2,'0')))
+WHERE LENGTH(`remaining_key`)=2;
+-- 2 byte case
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+SET `remaining_key`='',`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 11) | (look2.`v` << 6) | (look3.`v` << 1) | (look4.`v` >> 4)),10,16),4,'0')))
+WHERE LENGTH(`remaining_key`)=4;
+-- 3 byte case
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+SET `remaining_key`='',`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 19) | (look2.`v` << 14) | (look3.`v` << 9) | (look4.`v` << 4) | (look5.`v` >> 1)),10,16),6,'0')))
+WHERE LENGTH(`remaining_key`)=5;
+-- 4 byte case
+UPDATE `_temp_totp_conversion`
+LEFT JOIN `_temp_base32_lookup1` look1 ON look1.`c`=SUBSTR(`remaining_key`,1,1)
+LEFT JOIN `_temp_base32_lookup2` look2 ON look2.`c`=SUBSTR(`remaining_key`,2,1)
+LEFT JOIN `_temp_base32_lookup3` look3 ON look3.`c`=SUBSTR(`remaining_key`,3,1)
+LEFT JOIN `_temp_base32_lookup4` look4 ON look4.`c`=SUBSTR(`remaining_key`,4,1)
+LEFT JOIN `_temp_base32_lookup5` look5 ON look5.`c`=SUBSTR(`remaining_key`,5,1)
+LEFT JOIN `_temp_base32_lookup6` look6 ON look6.`c`=SUBSTR(`remaining_key`,6,1)
+LEFT JOIN `_temp_base32_lookup7` look7 ON look7.`c`=SUBSTR(`remaining_key`,7,1)
+SET `remaining_key`='',`totp_secret`=CONCAT(`totp_secret`,
+ UNHEX(LPAD(CONV(((look1.`v` << 27) | (look2.`v` << 22) | (look3.`v` << 17) | (look4.`v` << 12) | (look5.`v` << 7) | (look6.`v` << 2) | (look7.`v` >> 3)),10,16),8,'0')))
+WHERE LENGTH(`remaining_key`)=7;
+
+-- assert that we actually converted everything properly
+SET @mode := @@session.sql_mode;
+SET SESSION sql_mode='STRICT_TRANS_TABLES';
+CREATE TEMPORARY TABLE `_temp_assert_check` (`v` char(1));
+INSERT INTO `_temp_assert_check` SELECT CONV(MAX(LENGTH(`remaining_key`)+1),10,2) FROM `_temp_totp_conversion`;
+SET SESSION sql_mode=@mode;
+
+-- =================================================== --
+-- BASE32 CONVERSION ENDS HERE --
+-- (this is the other banner i promised you, so you --
+-- can stop skipping the unnecessarily complex stuff) --
+-- =================================================== --
+
+ALTER TABLE `account` ADD COLUMN `totp_secret` VARBINARY(128) DEFAULT NULL AFTER `session_key`;
+UPDATE `account` a LEFT JOIN `_temp_totp_conversion` c ON a.`token_key`=c.`original_key` SET a.`totp_secret`=c.`totp_secret`;
+ALTER TABLE `account` DROP COLUMN `token_key`;
+
+COMMIT; -- safety gloves off
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_05_26_00.sql b/data/sql/old/db_auth/4.x/2021_05_26_00.sql
new file mode 100644
index 0000000000..f560ede5ce
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_05_26_00.sql
@@ -0,0 +1,60 @@
+-- DB update 2021_05_13_00 -> 2021_05_26_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_05_13_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_05_13_00 2021_05_26_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1620114805872279900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1620114805872279900');
+
+--
+-- Table structure for table `build_info`
+--
+DROP TABLE IF EXISTS `build_info`;
+CREATE TABLE `build_info` (
+ `build` INT NOT NULL,
+ `majorVersion` INT DEFAULT NULL,
+ `minorVersion` INT DEFAULT NULL,
+ `bugfixVersion` INT DEFAULT NULL,
+ `hotfixVersion` CHAR(3) DEFAULT NULL,
+ `winAuthSeed` VARCHAR(32) DEFAULT NULL,
+ `win64AuthSeed` VARCHAR(32) DEFAULT NULL,
+ `mac64AuthSeed` VARCHAR(32) DEFAULT NULL,
+ `winChecksumSeed` VARCHAR(40) DEFAULT NULL,
+ `macChecksumSeed` VARCHAR(40) DEFAULT NULL,
+ PRIMARY KEY (`build`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+--
+-- Dumping data for table `build_info`
+--
+INSERT INTO `build_info` VALUES
+(5875,1,12,1,NULL,NULL,NULL,NULL,'95EDB27C7823B363CBDDAB56A392E7CB73FCCA20','8D173CC381961EEBABF336F5E6675B101BB513E5'),
+(6005,1,12,2,NULL,NULL,NULL,NULL,NULL,NULL),
+(6141,1,12,3,NULL,NULL,NULL,NULL,NULL,NULL),
+(8606,2,4,3,NULL,NULL,NULL,NULL,'319AFAA3F2559682F9FF658BE01456255F456FB1','D8B0ECFE534BC1131E19BAD1D4C0E813EEE4994F'),
+(9947,3,1,3,NULL,NULL,NULL,NULL,NULL,NULL),
+(10505,3,2,2,'a',NULL,NULL,NULL,NULL,NULL),
+(11159,3,3,0,'a',NULL,NULL,NULL,NULL,NULL),
+(11403,3,3,2,NULL,NULL,NULL,NULL,NULL,NULL),
+(11723,3,3,3,'a',NULL,NULL,NULL,NULL,NULL),
+(12340,3,3,5,'a',NULL,NULL,NULL,'CDCBBD5188315E6B4D19449D492DBCFAF156A347','B706D13FF2F4018839729461E3F8A0E2B5FDC034'),
+(13930,3,3,5,'a',NULL,NULL,NULL,NULL,NULL);
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_05_30_00.sql b/data/sql/old/db_auth/4.x/2021_05_30_00.sql
new file mode 100644
index 0000000000..471b839c27
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_05_30_00.sql
@@ -0,0 +1,30 @@
+-- DB update 2021_05_26_00 -> 2021_05_30_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_05_26_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_05_26_00 2021_05_30_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1621715473238990700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1621715473238990700');
+
+ALTER TABLE `version_db_auth`
+ ADD COLUMN `date` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci' AFTER `required_rev`;
+
+--
+-- END UPDATING QUERIES
+--
+UPDATE version_db_auth SET date = '2021_05_30_00' WHERE sql_rev = '1621715473238990700';
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_06_17_00.sql b/data/sql/old/db_auth/4.x/2021_06_17_00.sql
new file mode 100644
index 0000000000..e48192b65b
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_06_17_00.sql
@@ -0,0 +1,31 @@
+-- DB update 2021_05_30_00 -> 2021_06_17_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_05_30_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_05_30_00 2021_06_17_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1620146306002634000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1620146306002634000');
+
+--
+DROP TABLE IF EXISTS `ip2nation`;
+DROP TABLE IF EXISTS `ip2nationCountries`;
+
+--
+-- END UPDATING QUERIES
+--
+UPDATE version_db_auth SET date = '2021_06_17_00' WHERE sql_rev = '1620146306002634000';
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/4.x/2021_10_14_00.sql b/data/sql/old/db_auth/4.x/2021_10_14_00.sql
new file mode 100644
index 0000000000..fbc902ecbe
--- /dev/null
+++ b/data/sql/old/db_auth/4.x/2021_10_14_00.sql
@@ -0,0 +1,52 @@
+-- DB update 2021_06_17_00 -> 2021_10_14_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_06_17_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_06_17_00 2021_10_14_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1634163668021762900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1634163668021762900');
+
+--
+DELETE FROM `updates` WHERE `name` IN ('2016_08_25_01.sql', '2016_07_09_00.sql', '2019_04_13_00.sql', '2016_09_04_00.sql', '2017_08_19_00.sql', '2016_08_25_00.sql', '2016_07_09_01.sql', '2016_07_10_00.sql', '2016_11_18_00.sql', '2016_11_19_00.sql', '2017_08_20_01.sql', '2017_12_05_00.sql', '2018_01_21_00.sql', '2018_09_17_00.sql', '2019_01_05_00.sql', '2019_02_08_00.sql', '2019_02_17_00.sql', '2020_02_07_00.sql');
+INSERT INTO `updates` (`name`, `hash`, `state`, `timestamp`, `speed`) VALUES
+('2016_08_25_01.sql', 'A5A2BE04C8E8E85CD177B8684DFFEACF71C9CF69', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_07_09_00.sql', 'B692C4D5E96D26616E1E655D99DD27F6AC4FFDA6', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2019_04_13_00.sql', '183C28E079DAB46AD6F7C0617E19346CAD043141', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_09_04_00.sql', '420ACF7160BF5549BC298EB6A1319969789DA140', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2017_08_19_00.sql', 'E4457FFFFC0D3F86750F07CF88F549529E1B27E5', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_08_25_00.sql', '707016C338350676C814D7926DFB6081E57091C3', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_07_09_01.sql', 'DE551E4708FE31AAC60CEF69466BBC5DFAC46F79', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_07_10_00.sql', '0AE2F7FB1E9C1E2BC2870D0EB817F3C87E0A39B3', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_11_18_00.sql', '92D22B3A45466470239402367D94C3791A243EF7', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2016_11_19_00.sql', 'C55E73648F661F40237B03F266F7169D231B3D8D', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2017_08_20_01.sql', 'E6190311E1A12E259C6CD21ACFC8BAA1D3F597DF', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2017_12_05_00.sql', '475860B881DE6E9CAC93AD3B37E7AAA8D63FB1B9', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2018_01_21_00.sql', '570FC5FC653D81B0E498E3EAB6706C9868CE8079', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2018_09_17_00.sql', '31743E771FFA4C92D6B6CF747DE4302814BDF257', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2019_01_05_00.sql', '2449121ABB0D5004BF6941B340F5C294AD95EBE9', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2019_02_08_00.sql', '18FF48FC1B1C238D44198FA1E2D422BAB4C9C338', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2019_02_17_00.sql', '1F4C4A15313A261088E40909DCCAA068EAAAAAAE', 'ARCHIVED', '2021-10-14 04:13:44', 1),
+('2020_02_07_00.sql', '9549BF7354B4FA5A661EC094A2C3AAF665678152', 'ARCHIVED', '2021-10-14 04:13:44', 1);
+
+DELETE FROM `updates_include` WHERE `path`='$/data/sql/archive/db_auth';
+INSERT INTO `updates_include` (`path`, `state`) VALUES ('$/data/sql/archive/db_auth', 'ARCHIVED');
+
+--
+-- END UPDATING QUERIES
+--
+UPDATE version_db_auth SET date = '2021_10_14_00' WHERE sql_rev = '1634163668021762900';
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/5.x/2021_10_14_01_auth.sql b/data/sql/old/db_auth/5.x/2021_10_14_01_auth.sql
new file mode 100644
index 0000000000..f7717444a2
--- /dev/null
+++ b/data/sql/old/db_auth/5.x/2021_10_14_01_auth.sql
@@ -0,0 +1,2 @@
+-- ACDB 335.5-dev auth
+UPDATE `updates` SET `state`='ARCHIVED';
diff --git a/data/sql/old/db_auth/5.x/2021_11_06_00.sql b/data/sql/old/db_auth/5.x/2021_11_06_00.sql
new file mode 100644
index 0000000000..8153d621f2
--- /dev/null
+++ b/data/sql/old/db_auth/5.x/2021_11_06_00.sql
@@ -0,0 +1,29 @@
+-- DB update 2021_10_14_01_auth -> 2021_11_06_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_10_14_01_auth';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_10_14_01_auth 2021_11_06_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1635587640506554000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1635587640506554000');
+
+ALTER TABLE `updates` CHANGE `state` `state` ENUM('RELEASED','CUSTOM','MODULE','ARCHIVED') CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'RELEASED' NOT NULL COMMENT 'defines if an update is released or archived.';
+
+--
+-- END UPDATING QUERIES
+--
+UPDATE version_db_auth SET date = '2021_11_06_00' WHERE sql_rev = '1635587640506554000';
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/6.x/2022_01_23_00.sql b/data/sql/old/db_auth/6.x/2022_01_23_00.sql
new file mode 100644
index 0000000000..eccab56e67
--- /dev/null
+++ b/data/sql/old/db_auth/6.x/2022_01_23_00.sql
@@ -0,0 +1,30 @@
+-- DB update 2021_10_14_00 -> 2022_01_23_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_10_14_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2021_10_14_00 2022_01_23_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1642926441859638400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1642926441859638400');
+
+-- ACDB 335.6-dev auth
+UPDATE `updates` SET `state`='ARCHIVED';
+
+--
+-- END UPDATING QUERIES
+--
+UPDATE version_db_auth SET date = '2022_01_23_00' WHERE sql_rev = '1642926441859638400';
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/7.x/2022_04_24_00.sql b/data/sql/old/db_auth/7.x/2022_04_24_00.sql
new file mode 100644
index 0000000000..afb008c112
--- /dev/null
+++ b/data/sql/old/db_auth/7.x/2022_04_24_00.sql
@@ -0,0 +1,29 @@
+-- DB update 2022_01_23_00 -> 2022_04_24_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2022_01_23_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2022_01_23_00 2022_04_24_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1650806750686513000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+
+INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1650806750686513000');
+
+UPDATE `updates` SET `state`='ARCHIVED';
+
+--
+-- END UPDATING QUERIES
+--
+UPDATE version_db_auth SET date = '2022_04_24_00' WHERE sql_rev = '1650806750686513000';
+COMMIT;
+END //
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/old/db_auth/7.x/2022_04_28_00.sql b/data/sql/old/db_auth/7.x/2022_04_28_00.sql
new file mode 100644
index 0000000000..f4fa48bf0f
--- /dev/null
+++ b/data/sql/old/db_auth/7.x/2022_04_28_00.sql
@@ -0,0 +1,4 @@
+-- DB update 2022_04_24_00 -> 2022_04_28_00
+--
+
+DROP TABLE IF EXISTS `version_db_auth`;
diff --git a/data/sql/old/db_auth/8.x/2022_08_21_00.sql b/data/sql/old/db_auth/8.x/2022_08_21_00.sql
new file mode 100644
index 0000000000..850986a15c
--- /dev/null
+++ b/data/sql/old/db_auth/8.x/2022_08_21_00.sql
@@ -0,0 +1,3 @@
+--
+
+UPDATE `updates` SET `state`='ARCHIVED';
diff --git a/data/sql/old/db_auth/9.x/2023_01_31_00.sql b/data/sql/old/db_auth/9.x/2023_01_31_00.sql
new file mode 100644
index 0000000000..be8a4d21b6
--- /dev/null
+++ b/data/sql/old/db_auth/9.x/2023_01_31_00.sql
@@ -0,0 +1 @@
+UPDATE `updates` SET `state`='ARCHIVED';
diff --git a/data/sql/old/db_auth/9.x/2023_02_20_00.sql b/data/sql/old/db_auth/9.x/2023_02_20_00.sql
new file mode 100644
index 0000000000..5df0d6814a
--- /dev/null
+++ b/data/sql/old/db_auth/9.x/2023_02_20_00.sql
@@ -0,0 +1,12 @@
+-- DB update 2023_01_31_00 -> 2023_02_20_00
+--
+DROP TABLE IF EXISTS `motd`;
+CREATE TABLE `motd` (
+ `realmid` INT NOT NULL,
+ `text` LONGTEXT NULL DEFAULT NULL,
+ PRIMARY KEY (`realmid`)
+) ENGINE=InnoDB;
+
+DELETE FROM `motd` WHERE `realmid`=1;
+INSERT INTO `motd` (`realmid`, `text`) VALUES
+(-1, 'Welcome to an AzerothCore server.');
diff --git a/data/sql/old/db_auth/9.x/2023_04_23_00.sql b/data/sql/old/db_auth/9.x/2023_04_23_00.sql
new file mode 100644
index 0000000000..be6f1ce922
--- /dev/null
+++ b/data/sql/old/db_auth/9.x/2023_04_23_00.sql
@@ -0,0 +1,18 @@
+-- DB update 2023_02_20_00 -> 2023_04_23_00
+-- Update engine, row format, charset and collation
+ALTER TABLE `account` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `account_access` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `account_banned` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `account_muted` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `autobroadcast` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `build_info` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `ip_banned` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `logs` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `logs_ip_actions` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `motd` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `realmcharacters` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `realmlist` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `secret_digest` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `updates` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `updates_include` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';
+ALTER TABLE `uptime` ENGINE InnoDB ROW_FORMAT=DEFAULT, CONVERT TO CHARSET utf8mb4 COLLATE 'utf8mb4_unicode_ci';