CentOS 7 kommt von Hause aus mit einer fast antiken MariaDB-Version 5.5.

Diese zu ersetzen ist aber relativ einfach. Dazu installieren wir zunächst das MariaDB-Repository mit wenigen Kommandos:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod 755 mariadb_repo_setup
./mariadb_repo_setup

Bevor wir den Austausch beginnen, machen wir sicherheitshalber ein vollständiges Backup:

mysqldump -Ap > mysqldump_20200610.sql

Nun stoppen wir den Server:

systemctl stop mariadb

Und starten anschließend das Upgrade über yum:

yum update 'mariadb*'

Nach dem Upgrade starten wir MariaDB wieder und verifizieren die neue Version:

# systemctl start mariadb

# mysql -p

MariaDB [(none)]> SELECT VERSION();
+-----------------+
| VERSION()       |
+-----------------+
| 10.4.13-MariaDB |
+-----------------+

Um das Upgrade abzuschließen, lassen wir nun noch mysql_upgrade laufen:

# mysql_upgrade -p
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Upgrading from a version before MariaDB-10.1
Phase 2/7: Installing used storage engines
Checking for tables with unknown storage engine
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
[...]
information_schema
performance_schema
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

Damit auch das neue MariaDB automatisch startet, muss es neu in Systemd eingebunden werden:

# systemctl enable mariadb
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

Fertig!