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
- Name: Michal Schorm
- Email: mschorm@redhat.com
Current status
- Targeted release: Fedora Linux 43
- Last updated: 2025-07-16
- Announced
- Discussion thread
- FESCo issue: #3420
- Tracker bug: #2376117
- Release notes tracker: #237
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
andmysql8.4
- will check for any issues with the dependent packages
- will do switch in the 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
- https://dev.mysql.com/doc/relnotes/mysql/8.1/en/
- https://dev.mysql.com/doc/relnotes/mysql/8.2/en/
- https://dev.mysql.com/doc/relnotes/mysql/8.3/en/
- https://dev.mysql.com/doc/relnotes/mysql/8.4/en/