Adventures in System Administration

Category: MySQL/MariaDB

Articles dealing with the MySQL and MariaDB database servers.

MySQL 9.7 Installation Issues

MySQL 9.7, the latest LTS version, was released on April 21, 2026. It’s too new to be available from the various Linux distribution repositories where MySQL 8.4, the previous LTS version, is the current offering. If you want to use MySQL 9.7, you’ll need to install it from the Oracle repositories. But there are problems. As my testing was done on AlmaLinux, these issues apply to RHEL-based distributions. However, Debian/Ubuntu users should take note and be ready for possible speed bumps.

Oracle didn’t release a new repo package for MySQL 9.7. Instead, they updated the existing MySQL 8.4 repo package to add MySQL 9.7. When you go to the download page for the MySQL Community Server Yum Repository, you’ll find the repo packages are all mysql84-community-release RPMs. There is no mention that the repo package will install MySQL 9.7.

PS-BackupMySQL: MySQL/MariaDB Backup for Windows


Whether on Linux or Windows, it’s imperative that MySQL databases be regularly backed up to prevent data loss. And any data loss is much more likely to be from human error than a system failure. But the installers for MySQL and MariaDB do not touch on database backups beyond installing the mysqldump utility. Information to be found for backing up MySQL databases pertains mostly to Linux, and the plethora of backup scripts available for Linux are generally not suitable on Windows.

To fill this gap, I created the PS-BackupMySQL package. It provides the PowerShell script Backup-MySqlDatabases to back up all user databases and the mysql system database. (Other system databases are dynamically created and do not need to be backed up.) It’s designed to be run interactively or from a Windows scheduled task to back up databases on a regular schedule. And since databases that are backed up may eventually need to be restored, the script Restore-MySqlDatabases is provided to restore databases – one, many, or all – from the backup files. Also included are Create-MySqlBackupUser which simplifies creating a backup user with only those privileges needed to back up the databases and Create-MySqlBackupTask to create a Windows scheduled task to back up the databases.

MySQL Configuration Files

Since I recently posted MariaDB client and sever options files, it’s only fitting that I post options files for MySQL. Since MariaDB and MySQL have diverged since version 5 when MariaDB was a drop-in replacement for MySQL, options files can no longer be shared between the two without modification.

MySQL has many options for both the client and server than can be adjusted (or tuned) to provide better performance. For most, the default settings are fine and never need to be adjusted. A few, however, should be adjusted for optimal performance. This is particular true for the InnoDB storage engine. The option innodb_buffer_pool_size, which sets the size of the in-memory buffer pool, is probably the most important option to boost performance. It can be set up to 80% of the total memory on the server, but the default is very inadequate 128 MB.

Another option is max_allowed_packet which is used by both client and the server. This sets the maximum size for a data packet or generated/intermediate string. It must be large enough to hold the largest record or BLOB. The client default is a very anemic 16 MB. The server default is better but only 64 MB.

MariaDB Configuration Files

MariaDB has many options for both the client and server than can be adjusted (or tuned) to provide better performance. For most, the default settings are fine and never need to be adjusted. A few, however, should be adjusted for optimal performance. This is particular true for the InnoDB storage engine. The option innodb_buffer_pool_size, which sets the size of the in-memory buffer pool, is probably the most important option to boost performance. It can be set up to 80% of the total memory on the server, but the default is very inadequate 128 MB.

Another option is max_allowed_packet which is used by both client and the server. This sets the maximum size for a data packet or generated/intermediate string. It must be large enough to hold the largest record or BLOB. The client default is not too shabby at 1 GB, but the server default is an anemic 16 MB.

The MariaDB packages for Debian and Red Hat based distributions do install options files (also known as defaults files) for both the client and server, but they are largely placeholders, setting very few or no options. And they have no comments about any of the options. This makes it difficult to know which options should be adjusted for best performance. The options are documented on the MariaDB Documentation site, but this means wading through a long list of options trying to find the ones of interest.

Backing Up MySQL and MariaDB Databases

Having regular backups of MySQL and MariaDB databases is vitally important to ensure that data can be recovered in the event of corruption (which could be caused by a system failure or malicious software such as ransomware) or human error (such as when a user accidentally deletes a row, table, or entire database). MySQL and MariaDB provide a utility program to back up the databases – namely mysqldump (which is mariadb-dump for MariaDB 1.5 and higher) – but neither provides a program or script that allows backups to be easily automated. Aptum Technologies (my employer) provides a script allowing customers to back up the databases from a cron job. The original was a very basic script which didn’t have much flexibility. Using this as foundation, I rewrote the backup script and enhanced it over the years to improve its functionality and add features.

The script – backup-mysql – uses mysqldump to create a logical backup of each database. Each database is backed up to a separate file and then compressed using gzip (or pigz on systems with two or more processors). The database backup files are then archived to a tar file. This archive file is not compressed since the individual database backup files are already compressed. And a log file is created with information about the backup operation. Any errors that occur are recorded in the log file.

MariaDB root Authentication

MariaDB 10.4 implemented a lot of changes to how security is done. Much of this is invisible to most users with the exception of root. The root user is now able to use socket authentication through the unix_socket plugin. It means that if you are logged in to a Linux system as root, you can log on to the MariaDB server without using a password. Note in the example below, the -p option (for “password”) is not used yet the log on is successful.

[root@linuxputer ~]# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 408
Server version: 10.11.9-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

And it’s not just that you don’t need to enter a password. Even if a password is provided, it is completely ignored. In this example, a password – which is invalid – is provided, yet the log on is successful.

Copyright © 2026 Charles Rutledge

Powered by WordPress & Theme by Anders Norén