A Quick Guide to Using the MySQL Yum Repository

Abstract

The MySQL Yum repository provides RPM packages for installing the MySQL server, client, and other components on Linux platforms. The packages also upgrade and replace any third-party MySQL packages installed from the Linux distros' native software repositories, if replacements for them are available from MySQL.

The MySQL Yum repository supports the following Linux distributions:

  • EL6 (8.0), EL7, EL8, and EL9-based platforms (for example, the corresponding versions of Oracle Linux, Red Hat Enterprise Linux, and CentOS)

  • Fedora 38 and 39

    Note

    MySQL Server 8.0 and 8.1 are supported, while MySQL Server 5.7 (as of v5.7.30) is not.

Note

Not all versions of MySQL are supported on all these Linux distributions. See Selecting a Release Series on how to determine if your Linux distribution supports a particular version.

This is a quick guide to using the MySQL Yum repository. For more information, see Further Readings.

For legal information, see the Legal Notices.

For help with using MySQL, please visit the MySQL Forums, where you can discuss your issues with other MySQL users.

Document generated on: 2024-03-18 (revision: 78098)


Table of Contents


Steps for a Fresh Installation of MySQL

Note

The following instructions assume that MySQL is not already installed on your system using a third-party-distributed RPM package; if that is not the case, follow the instructions given in Replacing a Native Third-Party Distribution of MySQL.

  1. Adding the MySQL Yum Repository

    First, add the MySQL Yum repository to your system's repository list. Follow these steps:

    1. Go to the download page for MySQL Yum repository configuration files at https://dev.mysql.com/downloads/repo/yum/.

      Although this is not required for each update, it does update MySQL repository information to include the current information. For example, mysql80-community-release-el8-7.noarch.rpm is the first Yum EL8 configuration file that adds the innovation release track that begins with MySQL 8.1.

    2. Select and download the release package for your platform.

    3. Install the downloaded release package with the following command, replacing platform-and-version-specific-package-name with the name of the downloaded package:

      $> sudo yum localinstall platform-and-version-specific-package-name.rpm

      For example, for version n of the package for EL8-based systems, the command is:

      $> sudo yum localinstall mysql80-community-release-el8-n.noarch.rpm

    Note

    Once the release package is installed on your system, any system-wide update by the yum update command (or dnf upgrade for dnf-enabled systems) will automatically upgrade MySQL packages on your system and also replace any native third-party packages, if Yum finds replacements for them in the MySQL Yum repository. See Upgrading MySQL with the MySQL Yum Repository and Replacing a Native Third-Party Distribution of MySQL for details.

  2. Selecting a Release Series

    When using the MySQL Yum repository, the latest bugfix or LTS release of MySQL is selected for installation by default. If this is what you want, you can skip to the next step, Installing MySQL with Yum.

    Within the MySQL Yum repository (https://repo.mysql.com/yum/), different release series of the MySQL Community Server are hosted in different subrepositories. The subrepository for the latest bugfix series (currently MySQL 8.0) is enabled by default, and the subrepositories for all other series (for example, the Innovation mysql-innovation-community track) are disabled by default. Use this command to see all the subrepositories in the MySQL Yum repository, and see which of them are enabled or disabled (for dnf-enabled systems, replace yum in the command with dnf):

    $> yum repolist all | grep mysql

    The latest bugfix or LTS series is installed by default. To install from a different series, such as the innovation track, disable the bugfix series subrepository and enable the innovation track subrepository before executing installation commands. If your platform supports the yum-config-manager or dnf config-manager command, the following example disables the the 8.0 series subrepository for both Server and Tools, and enables the innovation track for each. For platforms that are not dnf-enabled:

    $> sudo yum-config-manager --disable mysql80-community
    $> sudo yum-config-manager --disable mysql-tools-community
    
    $> sudo yum-config-manager --enable mysql-innovation-community
    $> sudo yum-config-manager --enable mysql-tools-innovation-community

    For dnf-enabled platforms:

    $> sudo dnf config-manager --disable mysql80-community
    $> sudo dnf config-manager --disable mysql-tools-community
    
    $> sudo dnf config-manager --enable mysql-tools-innovation-community
    $> sudo dnf config-manager --enable mysql-innovation-community

    Besides using yum-config-manager or the dnf config-manager command, you can also select a series by editing the /etc/yum.repos.d/mysql-community.repo file. This is a typical entry for a release series' subrepository in the file:

    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/8/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
           file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

    Find the entry for the subrepository you want to configure, and edit the enabled option. Specify enabled=0 to disable or enabled=1 to enable a subrepository. For example, to install from the MySQL innovation track, make sure you have enabled=0 for the other subrepository entries, and have enabled=1 for the mysql-innovation-community entry:

    [mysql-innovation-community]
    name=MySQL Innovation Release Community Server
    baseurl=http://repo.mysql.com/yum/mysql-innovation-community/el/8/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022

    You should only enable subrepository for one release series at any time.

    Verify that the correct subrepositories have been enabled and disabled by running the following command and checking its output (for dnf-enabled systems, replace yum in the command with dnf):

    $> yum repolist enabled | grep mysql
  3. Disabling the Default MySQL Module

    (EL8 systems only) EL8-based systems such as RHEL8 and Oracle Linux 8 include a MySQL module that is enabled by default. Unless this module is disabled, it masks packages provided by MySQL repositories. To disable the included module and make the MySQL repository packages visible, use the following command (for dnf-enabled systems, replace yum in the command with dnf):

    $> sudo yum module disable mysql
  4. Installing MySQL

    Install MySQL by the following command (for dnf-enabled systems, replace yum in the command with dnf):

    $> sudo yum install mysql-community-server

    This installs the package for the MySQL server, as well as other required packages.

  5. Starting the MySQL Server

    Start the MySQL server with the following command:

    $> systemctl start mysqld

    You can check the status of the MySQL server with the following command:

    $> systemctl status mysqld

    If the operating system is systemd enabled, standard systemctl (or alternatively, service with the arguments reversed) commands such as stop, start, status, and restart should be used to manage the MySQL server service. The mysqld service is enabled by default, and it starts at system reboot. See Managing MySQL Server with systemd for additional information.

    MySQL Server Initialization (as of MySQL 5.7): At the initial start up of the server, the following happens, given that the data directory of the server is empty:

    • The server is initialized.

    • An SSL certificate and key files are generated in the data directory.

    • The validate_password plugin is installed and enabled.

    • A superuser account 'root'@'localhost' is created. A password for the superuser is set and stored in the error log file. To reveal it, use the following command:

      $> sudo grep 'temporary password' /var/log/mysqld.log

      Change the root password as soon as possible by logging in with the generated, temporary password and set a custom password for the superuser account:

      $> mysql -uroot -p
      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
    Note

    MySQL's validate_password plugin is installed by default. This will require that passwords contain at least one uppercase letter, one lowercase letter, one digit, and one special character, and that the total password length is at least 8 characters.

Note

For EL7-based platforms: See Compatibility Information for EL7-based platforms.

Installing Additional MySQL Products and Components

You can use Yum to install and manage individual components of MySQL. Some of these components are hosted in subrepositories of the MySQL Yum repository. Use the following command to list the packages for all the MySQL components available for your platform from all subrepositories in the MySQL Yum repository (for dnf-enabled systems, replace yum in the command with dnf):

$> yum --disablerepo=\* --enablerepo='mysql*-community*' list available

Install any packages of your choice with the following command, replacing package-name with name of the package (for dnf-enabled systems, replace yum in the command with dnf):

$> sudo yum install package-name

For example, to install MySQL Workbench on Fedora:

$> sudo dnf install mysql-workbench-community

Upgrading MySQL with the MySQL Yum Repository

Note
  • Before performing any update to MySQL, follow carefully the instructions in Upgrading MySQL. Among other instructions discussed there, it is especially important to back up your database before the update.

Use the MySQL Yum repository to perform an in-place update (that is, replacing the old version and then running the new version using the old data files) for your MySQL installation by following these steps (they assume you have installed MySQL with the MySQL Yum repository or with an RPM package directly downloaded from MySQL Developer Zone's MySQL Download page; if that is not the case, following the instructions in Replacing a Native Third-Party Distribution of MySQL instead):

  1. Selecting a Target Series

    By default, the MySQL Yum repository updates MySQL to the latest version in the release series you have chosen during installation (see Selecting a Release Series for details), which means, for example, a 5.7.x installation will not be updated to a 8.0.x release automatically. To update to another release series, you need to first disable the subrepository for the series that has been selected (by default, or by yourself) and enable the subrepository for your target series. To do that, see the general instructions given in Selecting a Release Series for editing the subrepository entries in the /etc/yum.repos.d/mysql-community.repo file. For upgrading from MySQL 5.7 to 8.0, perform the reverse of the steps illustrated in Selecting a Release Series, disabling the subrepository for the MySQL 5.7 series and enabling that for the MySQL 8.0 series.

    As a general rule, to upgrade from one release series to another, go to the next series rather than skipping a series. For example, if you are currently running MySQL 5.6 and wish to upgrade to 8.0, upgrade to MySQL 5.7 first before upgrading to 8.0.

    Important
  2. Upgrading MySQL

    Note

    The GnuPG build key used to sign MySQL downloadable packages was updated with the MySQL 8.0.28 release. To avoid key verification errors when upgrading to MySQL 8.0.28 or higher, import the new GnuPG key:

    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

    Upgrade MySQL and its components by the following command, for platforms that are not dnf-enabled:

    $> sudo yum update mysql-server

    For dnf-enabled systems:

    $> sudo dnf --refresh upgrade mysql-server

    Alternatively, you can update MySQL by telling Yum to update everything on your system, which might take considerably more time. For platforms that are not dnf-enabled:

    $> sudo yum update

    For dnf-enabled systems:

    $> sudo dnf upgrade
  3. Restarting MySQL

    The MySQL server always restarts after an update by Yum. Prior to MySQL 8.0.16, run mysql_upgrade after the server restarts to check and possibly resolve any incompatibilities between the old data and the upgraded software. mysql_upgrade also performs other functions; see mysql_upgrade — Deprecated; Performs No Tasks and Exits with Status 0 for details. As of MySQL 8.0.16, this step is not required, as the server performs all tasks previously handled by mysql_upgrade.

You can also update only a specific component. Use the following command to list all the installed packages for the MySQL components (for dnf-enabled systems, replace yum in the command with dnf):

$> sudo yum list installed | grep "^mysql"

After identifying the package name of the component of your choice, update the package with the following command, replacing package-name with the name of the package. For platforms that are not dnf-enabled:

$> sudo yum update package-name

For dnf-enabled systems:

$> sudo dnf upgrade package-name

Replacing a Native Third-Party Distribution of MySQL

To replace third-party distributions of MySQL that were installed from the supported Linux platforms' native software repositories with the latest bug release (from the MySQL 8.0 series currently) from the MySQL Yum repository, follow these steps:

  1. Backing Up Your Database

    To avoid loss of data, always back up your database before trying to replace your MySQL installation using the MySQL Yum repository. See Backup and Recovery on how to back up your database.

  2. Adding the MySQL Yum Repository

    Add the MySQL Yum repository to your system's repository list by following the instructions given in Adding the MySQL Yum Repository.

  3. Replacing the Native Third-Party Distribution by a Yum Update or a DNF Upgrade

    By design, the MySQL Yum repository will replace your native, third-party MySQL with the latest bugfix release (from the MySQL 8.0 series currently) from the MySQL Yum repository when you perform a yum update command (or dnf upgrade for dnf-enabled systems) on the system, or a yum update mysql-server (or dnf upgrade mysql-server for dnf-enabled systems).

After updating MySQL using the Yum repository, applications compiled with older versions of the shared client libraries should continue to work. However, if you want to recompile applications and dynamically link them with the updated libraries, see Upgrading the Shared Client Libraries for some special considerations.

Notes

Installing MySQL NDB Cluster Using the Yum Repository

Notes
  • The following instructions assume that neither the MySQL server nor MySQL NDB Cluster has already been installed on your system; if that is not the case, remove the MySQL server or MySQL NDB Cluster, including all its executables, libraries, configuration files, and data directories, before you continue. However there is no need to remove the release package you might have used to enable the MySQL Yum repository on your system.

  • The NDB Cluster SQL node package has a dependency on the Perl Class::MethodMaker module. Yum can take care of this dependency if the EPEL (Extra Packages for Enterprise Linux) repository has been enabled on your system; see the instructions here for how to enable the EPEL repository.

  • The MySQL Yum repository supports installation of MySQL NDB Cluster for release 7.5.6 and later, and for the EL7 and EL8 platforms. For other methods of installing NDB Cluster, see Installation of NDB Cluster on Linux, Installation of NDB Cluster on Linux, or Installation of NDB Cluster on Linux, depending on the release series that you are using.

  1. Adding the MySQL Yum Repository for MySQL NDB Cluster

    Follow the steps in Adding the MySQL Yum Repository to add the MySQL Yum repository to your system's repository list. If you have already performed the step before, make sure you have the most up-to-date version of the release package by running the following command, for platforms that are not dnf-enabled:

    $> sudo yum update mysql80-community-release

    For dnf-enabled systems:

    $> sudo dnf --refresh upgrade mysql80-community-release
  2. Selecting the MySQL NDB Cluster Subrepository

    Within the MySQL Yum repository (https://repo.mysql.com/yum/), the MySQL Community Server and MySQL NDB Cluster are hosted in different subrepositories. By default, the subrepository for the latest bugfix series of the MySQL server is enabled and the subrepository for MySQL NDB Cluster is disabled. To install NDB Cluster, disable the subrepository for the MySQL server and enable the subrepository for NDB Cluster. If your platform supports the yum-config-manager or dnf config-manager command, you can do that by issuing, for example, the following commands, which disable the subrepository for the MySQL 8.0 series and enable the one for the MySQL NDB Cluster 8.0 for platforms that are not dnf-enabled:

    $> sudo yum-config-manager --disable mysql80-community
    $> sudo yum-config-manager --enable mysql-cluster-8.0-community

    For dnf-enabled platforms:

    $> sudo dnf config-manager --disable mysql80-community
    $> sudo dnf config-manager --enable mysql-cluster-8.0-community

    To install MySQL NDB Cluster innovation series instead of MySQL NDB Cluster 8.0, enable mysql-cluster-innovation-community instead of mysql-cluster-8.0-community.

    Besides using yum-config-manager or the dnf config-manager command, you can also select a subrepository by editing manually the /etc/yum.repos.d/mysql-community.repo file. This is a sample entry for the MySQL 8.0 subrepository in the file:

    Note

    The baseurl value in the /etc/yum.repos.d/mysql-community.repo file may differ slightly by platform.

    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/8/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
           file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

    To install NDB Cluster 8.0, you must disable the MySQL 8.0 subrepository by making enabled=0 for the above subrepository entry and enable the NDB Cluster 8.0 subrepository by making enabled=1 for its entry:

    [mysql-cluster-8.0-community]
    name=MySQL Cluster 8.0 Community
    baseurl=http://repo.mysql.com/yum/mysql-cluster-8.0-community/el/8/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
           file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

    After saving the changes to the file, verify that the correct subrepositories have been enabled by running the following command (for dnf-enabled systems, replace yum in the command with dnf):

    $> yum repolist enabled | grep mysql
    !mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community               18
    !mysql-connectors-community/x86_64  MySQL Connectors Community                31
    !mysql-tools-community/x86_64       MySQL Tools Community                     33

    The subrepository for NDB Cluster 8.0 (Community edition) has now been enabled. Also in the list are a number of other subrepositories of the MySQL Yum repository that have been enabled by default.

  3. Installing MySQL NDB Cluster

    For a minimal installation of MySQL NDB Cluster, follow these steps (for dnf-enabled systems, replace yum in the commands with dnf):

    • Install the components for SQL nodes:

      $> sudo yum install mysql-cluster-community-server

      After the installation is completed, start and initialize the SQL node by following the steps given in Starting the MySQL Server.

      If you choose to initialize the data directory manually using the mysqld --initialize command (see Initializing the Data Directory for details), a root password is going to be generated and stored in the SQL node's error log; see MySQL Server Initialization for how to find the password, and for a few things you need to know about it.

    • Install the executables for management nodes:

      $> sudo yum install mysql-cluster-community-management-server
    • Install the executables for data nodes:

      $> sudo yum install mysql-cluster-community-data-node
  4. Configuring and Starting MySQL NDB Cluster

    See Initial Configuration of NDB Cluster on how to configure MySQL NDB Cluster and Initial Startup of NDB Cluster on how to start it for the first time.

Note

For EL7-based platforms: See Compatibility Information for EL7-based platforms.

Installing Additional MySQL NDB Cluster Products and Components

You can use Yum to install individual components and additional products of MySQL NDB Cluster from the MySQL Yum repository. To do that, assuming you already have the MySQL Yum repository on your system's repository list (if not, follow Step 1 and 2 of Installing MySQL NDB Cluster Using the Yum Repository), follow the same steps given in Installing Additional MySQL Products and Components.

Note

Known issue: Currently, not all components required for running the MySQL NDB Cluster test suite are installed automatically when you install the test suite package (mysql-cluster-community-test). Install the following packages with yum install (or dnf install for dnf-enabled systems) before you run the test suite:

  • mysql-cluster-community-auto-installer

  • mysql-cluster-community-management-server

  • mysql-cluster-community-data-node

  • mysql-cluster-community-memcached

  • mysql-cluster-community-java

  • mysql-cluster-community-ndbclient-devel

Platform Specific Notes

ARM Support

ARM 64-bit (aarch64) is supported on Oracle Linux 7 and requires the Oracle Linux 7 Software Collections Repository (ol7_software_collections). For example, to install the server:

$> yum-config-manager --enable ol7_software_collections
$> yum install mysql-community-server
Note

ARM 64-bit (aarch64) is supported on Oracle Linux 7 as of MySQL 8.0.12.

Known Limitation

The 8.0.12 release requires you to adjust the libstdc++7 path by executing ln -s /opt/oracle/oracle-armtoolset-1/root/usr/lib64 /usr/lib64/gcc7 after executing the yum install step.

Further Readings

More information on the MySQL Yum repository can be found at the following sections in the MySQL server's reference manual:

Legal Notices

Copyright © 1997, 2024, Oracle and/or its affiliates.

License Restrictions

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software, software documentation, data (as defined in the Federal Acquisition Regulation), or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable:

U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed, or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software," "commercial computer software documentation," or "limited rights data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction, duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle programs (including any operating system, integrated software, any programs embedded, installed, or activated on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract. The terms governing the U.S. Government's use of Oracle cloud services are defined by the applicable contract for such services. No other rights are granted to the U.S. Government.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Trademark Notice

Oracle, Java, MySQL, and NetSuite are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Inside are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Epyc, and the AMD logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information about content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable agreement between you and Oracle.

Use of This Documentation

This documentation is NOT distributed under a GPL license. Use of this documentation is subject to the following terms:

You may create a printed copy of this documentation solely for your own personal use. Conversion to other formats is allowed as long as the actual content is not altered or edited in any way. You shall not publish or distribute this documentation in any form or on any media, except if you distribute the documentation in a manner similar to how Oracle disseminates it (that is, electronically for download on a Web site with the software) or on a CD-ROM or similar medium, provided however that the documentation is disseminated together with the software on the same medium. Any other use, such as any dissemination of printed copies or use of this documentation, in whole or in part, in another publication, requires the prior written consent from an authorized representative of Oracle. Oracle and/or its affiliates reserve any and all rights to this documentation not expressly granted above.

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support for Accessibility

Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.