Fail2ban fails to activate

I keep getting an error trying to active fail2ban on my webserver and any help is greatly appreciated.

The current fail2ban version is 5.0.1

WP version 6.3
MySQL version: 5.5.68
PHP version: 8.1.22

CREATE TABLE IF NOT EXISTS wpy0_fail2ban_log (
ID BIGINT UNSIGNED auto_increment,
dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
blog_id BIGINT NOT NULL,
event INT UNSIGNED NOT NULL,
ipv6 VARBINARY(16),
username VARCHAR(60),
password TEXT,
ref_id BIGINT UNSIGNED,
iso VARCHAR(2),
plugin INT,
request_method TEXT,
url TEXT,
content_type TEXT,
referer TEXT,
user_agent TEXT,
post LONGTEXT,
headers LONGTEXT,
class_auth BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00010000 = event & 0x00010000) STORED,
class_comment BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00020000 = event & 0x00020000) STORED,
class_xmlrpc BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00040000 = event & 0x00040000) STORED,
class_password BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00080000 = event & 0x00080000) STORED,
class_rest BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00100000 = event & 0x00100000) STORED,
class_spam BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00200000 = event & 0x00200000) STORED,
class_block BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00400000 = event & 0x00400000) STORED,
class_other BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00800000 = event & 0x00800000) STORED,
PRIMARY KEY (ID),
INDEX fail2ban_log_blog_id (blog_id),
INDEX fail2ban_log_password (blog_id,password(32)),
INDEX fail2ban_log_all_class (blog_id,username,iso,event,ipv6,class_auth,class_comment,class_xmlrpc,class_password,class_rest,class_spam,class_block,class_other),
FOREIGN KEY (plugin) REFERENCES wpy0_fail2ban_plugins(ID) ON DELETE CASCADE
);

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘STORED,
class_comment BOOLEAN AS (event <> 0xFFFFFFFF AND 0x00020000 = `e’ at line 19

Thanks

TL;DR: You need at least MySQL 5.7 or MariaDB 10.2.


Despite this being only the second time this has come up, I’ll add a MySQL/MariaDB version check to the activation process in 5.2.1. There will also be a blog post about why it’s needed and why updating MySQL/MariaDB to a current version is no different to upgrading PHP to a current version.

Ahh thanks for the info will upgrade the DB.