From Fedora Project Wiki

Switch the distribution default version of MySQL from MySQL 8.0 to MySQL 8.4


Summary

MySQL is packages now use the versioned package layout. Currently we have packages mysql8.0 and mysql8.4 which both provides their respective versioned named sub-packages (e.g. mysql8.0-server or mysql8.4-errmsg etc.)

A "distribution default" version is the one, that also provides the unversioned names (e.g. mysql-server or mysql-errmsg etc.)

Currently the "distribution default" version of MySQL is 8.0. Let's switch to 8.4.

Owner

Current status

Detailed Description

The technical implementation is by a ON/OFF macro in the MySQL packages SPECfiles. There can't be two same "distribution default" packages at the same time, since they would create conflicts. So the switch must be done simultaneously.

There are two potential technical problems:

1) MySQL 8.4 no longer supports 32-bit builds. So any packages depending on it will no longer build on i686.

There are two packages that are directly affected: perl-DBD-MySQL, mysql-connector-odbc, but both are part of the MySQL stack and are expected to follow MySQL upstream development.

All of the other packages in the distribution should be already adapted to using MariaDB instead of MySQL.

Please let me know if you know of any other packages.


2) Unknown issues This is the first time such switch is done for the packages that recently adopted the versioned layout after the end of modularity. I may encounter unexpected issues and I will need to solve them on the go.

Feedback

 

Benefit to Fedora

MySQL 8.4 is the latest LTS version of MySQL and the upstream development focus steer to it.

The MySQL 8.4 contains major improvements. The MySQL 8.0 upstream EOL date is April 2026.

Scope

  • Proposal owners:
    • will do switch in the packages mysql8.0 and mysql8.4
    • will check for any issues with the dependent packages
  • Other developers:
    • are expected to cooperate in case of fixes in dependent packages are needed
  • Release engineering: I assume the Mass Rebuild will take place, so I don't need to rebuild the dependent packages myself.
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with the Fedora Strategy: Fedora leads in the Linux distribution development

Upgrade/compatibility impact

DB administrators need to handle the DB upgrade, as usual.
In case the DB admin need more time with the old MySQL 8.0, is still will be available as an alternative in Fedora 43.

! Staying on MySQL 8.0 requires manual downgrade - see "HOW TO TEST" section (4), (5), (6) and follow the instructions !

! MySQL 8.4 does not support 32-bit builds !

How To Test

Scenarios tested by the change owner:

CASE - INSTALLING MYSQL FOR THE FIRST TIME:

1)

 BEFORE:   no MySQL installed
 COMMAND: "dnf install mysql-server"
 RESULT:   now installs 'mysql8.4-server'

2)

 BEFORE:   no MySQL installed
 COMMAND: "dnf install mysql8.0-server"
 RESULT:   installs 'mysql8.0-server'

3)

 BEFORE:   no MySQL installed
 COMMAND: "dnf install mysql8.4-server"
 RESULT:   installs 'mysql8.4-server'

CASE - UPGRADING MYSQL (8.0 / 8.4) TO THE NEW DISTRIBUTION DEFAULT VERSION (8.4)

4)

 BEFORE:    'mysql-server' installed
 OR BEFORE: 'mysql8.0-server' installed
 OR BEFORE: 'mysql8.4-server' installed
 COMMAND:   "dnf update"
 RESULT:     installs 'mysql8.4-server'

COMPATIBILITY CASE - STAYING ON THE MYSQL 8.0

5)

 BEFORE:    'mysql-server' installed
 OR BEFORE: 'mysql8.0-server' installed
 .
 # manual step is required - shut down, disable, or both, the MySQL server, to avoid the automatic DB server data upgrade !!!
 COMMAND:    "systemctl disable --now mysqld"
 .
 COMMAND: dnf update
 RESULT: installs 'mysql8.4-server'
 .
 # manual step is required - remove the newly installed MySQL 8.4 packages and install back the MySQL 8.0 packages
 COMMAND:    "dnf swap mysql-server mysql8.0-server --allowerasing"
 RESULT: 'mysql8.0-server' was installed back
 .
 # manual step is required - restore the original systemd service setup
 #                         - either simply start the MySQL server, or just enable the service, or both - depends on your preference
 COMMAND: "systemctl enable --now mysqld"

TEST OF CONFLICT - PARALLEL INSTALLATION OF MULTIPLE MYSQL VERSIONS IS NOT SUPPORTED

6)

 COMMAND 1:  "dnf install mysql8.0-server"
 COMMAND 2:  "dnf install mysql8.4-server"
 RESULT:      DNF transaction failed gracefully with "conflicting requests"
             "installed package mysql8.0-server-8.0.42-... conflicts with mysql-server-any provided by mysql8.4-server-8.4.5-..."

User Experience

Load of features and enhancements inside of the software itself.

Dependencies

mysql-connector-odbc

perl-DBD-MySQL
  ├── sympa - affected by the drop of i686
  ├── opendmarc - affected by the drop of i686
  └── perl-Crypt-MySQL - affected by the drop of i686

Contingency Plan

  • Contingency mechanism: The change will be reverted.
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? No

Documentation

Release Notes