arrow-left

All pages
gitbookPowered by GitBook
triangle-exclamation
Couldn't generate the PDF for 257 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Server Management

Effectively managing your MariaDB Server is key to ensuring its reliability, performance, and security. This section serves as your central hub for all aspects of MariaDB Server management.

General Deployment Instructions

Find general instructions for installing and upgrading MariaDB Server deployments. This section offers fundamental guidance applicable across various installation methods and environments.

Deployment

Learn to install and upgrade MariaDB Server. This section provides detailed instructions and best practices for setting up new instances and seamlessly upgrading existing ones to newer versions.

Deployment includes installing, configuring, upgrading, downgrading, migration from other DBMSs, and automated deployment options. Here's an overview of what you can find in this section.

General Deployment Instructions

  • Best practices

  • Deployment methods

  • Customer download token

  • Single-node installation

  • MariaDB ID

  • Installing binary packages (executables)

  • Option files

  • Environment variables

  • Upgrade guides

  • Upgrade paths

  • Automation systems overview

  • Ansible

Deployment Methods

Overview of different deployment architectures (single-node, primary/replica) & methods, including manual installation via repositories or tarballs, and automated deployment with tools like Ansible.

Method
Typical use case
Multi-node installation (primary/replica)
  • Installation with ColumnStore

  • Upgrade paths

  • Installing from source
  • Installing system tables

  • Troubleshooting installation issues

  • Advanced configuration options
    Puppet
  • Containers

  • Kubernetes

  • Vagrant

  • Installing Enterprise Server
    Installing Community Server
    Configuring MariaDB
    Upgrading MariaDB
    Automated Deployment & Administration

    Installing Enterprise Server

    MariaDB Enterprise Server 11.8

    Upgrade guide for MariaDB Enterprise Server 11.8, highlighting significant performance improvements in transactional throughput, new vector search optimizations, and enhanced observability features.

    MariaDB Enterprise Server 11.4

    Instructions for upgrading to MariaDB Enterprise Server 11.4, which introduces new data types like UUID and INET4, advanced JSON functions, and non-blocking online schema changes.

    MariaDB Enterprise Server 10.6

    Upgrade documentation for MariaDB Enterprise Server 10.6, featuring Atomic DDL support, JSON_TABLE function, improved Oracle compatibility modes, and the removal of older storage engines.

    MariaDB Enterprise Server 10.5

    A collection of upgrade guides for older, end-of-life versions of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    Archived Upgrade Guides (Unmaintained/EOL ES Versions)

    A collection of upgrade guides for older, end-of-life versions of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    MariaDB Enterprise Server 10.4

    A collection of upgrade guides for older, end-of-life versions of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    MariaDB Enterprise Server 10.3

    A collection of upgrade guides for older, end-of-life versions of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    Installing Community Server

    Learn how to install MariaDB Server on various platforms. This section provides detailed guides and considerations for setting up your database environment, from simple installations to complex deploy

    MariaDB Binary Packages

    Provides details on using MariaDB binary packages (tarballs, RPMs, DEBs) for installation, including repository configuration scripts.

    Installing MariaDB RPM Files

    Install and manage MariaDB Server using RPM packages. This section provides detailed instructions for deploying and upgrading MariaDB on RPM-based Linux distributions.

    Troubleshooting Installation Issues

    A guide to diagnosing and resolving common installation and connection problems, such as socket errors, permission denied messages, and configuration conflicts.

    Installation Issues on Debian and Ubuntu

    A collection of troubleshooting articles specific to Debian and Ubuntu deployments, covering upgrade failures, repository conflicts, and migration issues.

    Use OS package manager to deploy standard OS packages from a compressed tar archive without repository configuration

    Use OS package manager to deploy standard OS packages from MariaDB's repository

    Available deployment methods are component-specific.

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Binary Tarball

    Use in-house infrastructure and tooling to deploy pre-compiled MariaDB binaries from a compressed tar archive

    Docker

    Use Docker and the MariaDB Enterprise Docker Registry to deploy in a container

    Local Repository Mirror

    Use OS package manager to deploy standard OS packages from local mirror of MariaDB's repository

    Why Source RPMs (SRPMs) Aren't Packaged For Some Platforms

    Explains the limitations in providing Source RPMs (SRPMs) for certain platforms due to CMake version requirements and build system dependencies.

    MariaDB source RPMs (SRPMs) are not packaged on all platforms for which MariaDB RPMs are packaged.

    The reason is that MariaDB's build process relies heavily on for a lot of things. In this specific case, MariaDB's build process relies on to build RPMs. The specific package generator that it uses to build RPMs is called .

    Support for source RPMs in became usable with MariaDB's build system starting from around . This means that we do not produce source RPMs on platforms where the installed version is older than that.

    See also .

    This page is licensed: CC BY-SA / Gnu FDL

    Installing MariaDB Windows ZIP Packages

    Instructions for manually installing MariaDB on Windows from a ZIP archive, useful for portable installations or advanced configuration needs.

    Users need to run , without parameters to create a data directory, e.g

    Then you can start server like this

    If you like to customize the server instance (data directory, install as service etc), please refer to

    This page is licensed: CC BY-SA / Gnu FDL

    Compiling MariaDB From Source

    Instructions for compiling MariaDB Server from source code using CMake, including obtaining the source and installing dependencies.

    Legacy Guides

    This section holds building-MariaDB-from-source instructions for building old versions of MariaDB. Recent instructions are in the Compiling MariaDB From Source: The Master Guide page.

    Installing System Tables

    Explains the necessity of initializing system tables (using mariadb-install-db) after installation and troubleshooting startup issues related to missing tables.

    Configuring MariaDB

    Learn how to configure MariaDB Server. This section covers essential configuration options, system variables, and best practices for tuning your database for optimal performance and security.

    C:\zip_unpack\directory> bin\mariadb-install-db.exe
    C:\zip_unpack\directory> bin\mariadbd.exe --console
    mariadb-install-db.exe
    mariadb-install-db.exe documentation
    Package Tarball
    Repository
    cmakearrow-up-right
    CMake CPack Package Generatorsarrow-up-right
    CPackRPMarrow-up-right
    CPackRPMarrow-up-right
    cmake 3.10arrow-up-right
    cmakearrow-up-right
    Building MariaDB from a Source RPM

    Best Practices

    A guide outlining essential recommendations for stable MariaDB deployments, covering backup strategies, change management, security controls, and pre-production testing.

    These best practices warrant consideration, but are not expected to apply to every business or in every situation. Recommendations here are not mandatory.

    hashtag
    General Recommendations

    We recommend that you:

    • Understand business requirements before deployment.

    • Adapt deployment practices to align to business requirements.

    • Consider to what extent deployed systems should integrate with existing business systems and practices.

    hashtag
    Backups

    Addition, removal, and change of database systems are types of production changes. Before undertaking any production changes:

    • Perform a backup of existing data and database configurations.

    • Establish a plan for data restoration for use in reverting a change.

    • Perform a test to confirm your backup is complete and viable.

    hashtag
    Irreversible Changes

    Installation of new database servers, change of server configuration, migrations, upgrades, and downgrades can produce irreversible changes which may require you to restore from the last good backup.

    Changes to data format on disk, including from upgrades and downgrades, are generally irreversible. A fault during the upgrade or downgrade process may corrupt data. Confirm you have a recent, full, complete, and tested backup before any upgrade or downgrade operation.

    When are in use, downgrade operations will generally require migration of data between servers or restore from a backup made pre-upgrade.

    hashtag
    Full and Complete Backup

    Before proceeding with an upgrade, perform a full and complete backup. Confirm successful completion of the backup operation and test the backup.

    Business requirements may require you to retain backups made to support upgrade and downgrade operations.

    Additional information regarding backing up and restoring MariaDB database products can be found in "".

    hashtag
    Change Management

    hashtag
    Change Management, Automation, Orchestration

    Server configuration changes should be done through change management. Accurate records of the time of change and reason for change can enable faster issue diagnosis.

    Automation can enable repeatability of change deployment, and can aid Pre-Production and Post-Production testing.

    Automation or orchestration can enable repeatability of server deployment, including system provisioning.

    hashtag
    Production Controls

    hashtag
    Dedicated Servers

    Database servers exist to run database server software. Database servers should not also run web server software, act as a file server, or run other workloads.

    Understand workload and data isolation requirements before server deployment. Isolation requirements are often defined through business requirements, including:

    • Data and application security requirements that trigger isolation of one workload from other workloads.

    • Separation of Development and Testing environments from Production environments.

    hashtag
    Production Controls

    Understand control requirements before server deployment, including records of control implementation needed to support audits.

    Control requirements typically follow data:

    • Both production and non-production systems may require production-level controls based on the presence of data subject to control.

    • Database servers, backup servers, and other systems may require production-level controls based on the presence of data subject to control.

    hashtag
    Testing

    Servers should be validated before exposure to production workloads and production data.

    It may be appropriate to prevent access to an unconfigured server until configured and validated. Load balancer configuration, firewall rules, or database server configuration are often used to prevent unintended traffic to new servers.

    Details assessed during Pre-Production validation can include:

    • Server capacity, including performance of disk systems

    • Server security configuration and hardening

    • Tuning for initial data load vs production workloads

    • Alignment to business requirements

    hashtag
    Updates

    MariaDB Product Notifications allow you to keep aware of new releases, including security fixes. Customers can manage MariaDB Product Notifications through the .

    Additionally, MariaDB Enterprise Server follows an enterprise lifecycle, that provides a .

    hashtag
    Obtaining Support

    MariaDB Corporation provides commercial support and services for MariaDB database products.

    New customers can for more information.

    Existing MariaDB Subscription customers can access technical support via the as detailed in .

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Checking MariaDB RPM Package Signatures

    Instructions on how to verify the integrity of MariaDB RPM packages using GPG signatures, including importing the public key and running `rpm --checksig`.

    MariaDB RPM packages since are signed.

    For MariaDB Community Server, see the MariaDB Community Server RPM / Source Keys section of the GPG page for details on how to import the key used by those repositories.

    For MariaDB Enterprise Server, see the MariaDB Enterprise GPG Keys section of the GPG page for details on how to import the key used by those repositories.

    To check the signature you first need to import the public part of the key like so:

    gpg --keyserver hkp://pgp.mit.edu --recv-keys 1BB943DB

    Next you need to let pgp know about the key like so:

    You can check to see if the key was imported with:

    Once the key is imported, you can check the signature of the MariaDB RPM files by running the something like the following in your download directory:

    The output of the above will look something like this (make sure gpg shows up on each OK line):

    hashtag
    See Also

    This page is licensed: CC BY-SA / Gnu FDL

    Troubleshooting MariaDB Installs on RHEL / CentOS

    Solutions for common installation issues on RHEL and CentOS, such as conflicts with existing MySQL installations and handling configuration file backups (.rpmsave).

    The following article is about different issues people have encountered when installing MariaDB on RHEL / CentOS.

    It is highly recommended to install with yum where possible.

    In RHEL/ CentOS it is also possible to install a RPMarrow-up-right or a tar ball. The RPM is the preferred version, except if you want to install many versions of MariaDB or install MariaDB in a non standard location.

    hashtag
    Replacing MySQL

    If you removed an MySQL RPM to install MariaDB, note that the MySQL RPM on uninstall renames /etc/my.cnf to /etc/my.cnf.rpmsave.

    After installing MariaDB you should do the following to restore your configuration options:

    hashtag
    Unsupported configuration options

    If you are using any of the following options in your /etc/my.cnf or other my.cnf file you should remove them. This is also true for MySQL 5.1 or newer:

    hashtag
    See also

    This page is licensed: CC BY-SA / Gnu FDL

    Error: symbol mysql_get_server_name, version libmysqlclient_16 not defined

    Troubleshooting guide for a specific linker error involving `mysql_get_server_name` and `libmysqlclient_16`, typically occurring due to library version mismatches.

    If you see the error message:

    symbol mysql_get_server_name, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference

    ...then you are probably trying to use the mysql command-line client from MariaDB with libmysqlclient.so from MySQL.

    The symbol mysql_get_server_name() is something present in the MariaDB source tree and not in the MySQL tree.

    If you have both the MariaDB client package and the MySQL client packages installed this error will happen if your system finds the MySQL version oflibmysqlclient.so first.

    To figure out which library is being linked in dynamically (for instance, the wrong one) use the 'ldd' tool.

    or

    For example:

    You can then use your package manager's tools to find out which package the library belongs to.

    On CentOS the command to find out which package installed a specific file is:

    On Debian-based systems, the command is:

    Here's an example of locating the library and finding out which package it belongs to on an Ubuntu system:

    The above shows that the mysql command-line client is using the library /usr/lib/libmysqlclient.so.16 and that library is part of the libmariadbclient16 Ubuntu package. Unsurprisingly, the mysql command-line client works perfectly on this system.

    If the answer that came back had been something other than a MariaDB package, then it is likely there would have been issues with running the MariaDB mysql client application.

    If the library that the system tries to use is not from a MariaDB package, the remedy is to remove the offending package (and possibly install or re-install the correct package) so that the correct library can be used.

    This page is licensed: CC BY-SA / Gnu FDL

    Installing on an Old Linux Version

    Guidance for dealing with glibc or shared library errors when attempting to install modern MariaDB binaries on older Linux distributions.

    This article lists some typical errors that may happen when you try to use an incompatible MariaDB binary on a linux system:

    The following example errors are from trying to install MariaDB built for SuSE 11.x on a SuSE 9.0 server:

    > scripts/mysql_install_db
    ./bin/my_print_defaults: /lib/i686/libc.so.6: 
      version `GLIBC_2.4' not found (required by ./bin/my_print_defaults)

    and

    > ./bin/mysqld --skip-grant &
    ./bin/mysqld: error while loading shared libraries: libwrap.so.0:
    cannot open shared object file: No such file or directory

    If you see either of the above errors, the binary MariaDB package you installed is not compatible with your system.

    The options you have are:

    • Find another MariaDB package or tar from the that matches your system.

    • Alternatively, and .

    This page is licensed: CC BY-SA / Gnu FDL

    Installing MariaDB on macOS (PKG)

    How to install MariaDB Server on macOS. This is possible using Homebrew.

    MariaDB Server does not currently provide a .pkg installer for macOS. For information about how to install MariaDB Server on macOS using Homebrew, see Installing MariaDB Server on macOS Using Homebrew.

    This page is licensed: CC BY-SA / Gnu FDL

    Installation issues on Windows

    Common installation problems on Windows, such as issues with User Account Control (UAC) or unsupported Windows versions, and their solutions.

    hashtag
    Unsupported Versions of Windows

    Recent versions of MariaDB may not install on unsupported Windows versions. See to find the final supported versions.

    hashtag
    Systems with User Account Control

    Running mysql_install_db.exe from a standard command prompt might cause the error:

    To get rid of it, use the elevated command prompt, for example on Windows 7 start it via 'Run as administrator' option.

    This page is licensed: CC BY-SA / Gnu FDL

    Building MariaDB on Gentoo

    Instructions for building MariaDB on Gentoo Linux using the `emerge` command.

    MariaDB is in Gentoo, so the steps to build it are:

    1. Synchronize your tree with\

      emerge --sync
    2. Build MariaDB using\

      emerge mariadb

    This page is licensed: CC BY-SA / Gnu FDL

    Building MariaDB on Solaris and OpenSolaris

    Notes and configuration tips for building MariaDB on Solaris and OpenSolaris platforms, including buildbot setup.

    The following two articles should help you get your Solaris machine prepared to build MariaDB (just ignore the parts about installing buildbot):

    • Buildbot Setup for Solaris Sparc

    • Buildbot Setup for Solaris x86

    hashtag
    Notes

    • The BUILD dir contains various scripts for compiling MariaDB on Solaris. The BUILD/compile-solaris-amd64 and BUILD/compile-solaris-amd64-debug are probably the most useful.

    • The scripts do not play nice with non-bash shells such as the Korn Shell (ksh). So if your /bin/sh is pointing at ksh or ksh93, you'll want to change it so that it points at bash.

    This page is licensed: CC BY-SA / Gnu FDL

    Creating the MariaDB Source Tarball

    Explains how to generate a source tarball from the MariaDB build environment using `automake` and `make dist`.

    How to create a source tar.gz file.

    First Setup your build environment.

    Then use automake/configure/make to generate the tar file:

    BUILD/autorun.sh
    ./configure --with-plugin-xtradb
    make dist

    This creates a source file with a name like mysql-5.3.2-MariaDB-beta.tar.gz

    See also the generic build instructions.

    This page is licensed: CC BY-SA / Gnu FDL

    Compiling with the InnoDB Plugin from Oracle

    Historical guide on compiling older MariaDB versions with the original Oracle InnoDB plugin instead of XtraDB.

    MariaDB uses InnoDB as the default storage engine.

    If you want to use Oracle's InnoDB plugin, then you need to compile MariaDB andnot specify --without-plugin-innodb_plugin when configuring. For example, a simple ./configure without any options will do.

    When the InnoDB plugin is compiled, the innodb_plugin test suite will test the InnoDB plugin in addition to xtradb:

    ./mysql-test-run --suite=innodb_plugin

    To use the innodb_plugin instead of xtradb you can do (for ):

    hashtag
    See Also

    This page is licensed: CC BY-SA / Gnu FDL

    MariaDB ID Sign Up

    Information on creating a free MariaDB ID account to access software downloads, including binary packages and repositories.

    A MariaDB ID is a free account that provides:

    • Customer access to MariaDB database product downloads

    hashtag
    Create A MariaDB ID

    You can register for a MariaDB ID with a social login or a traditional email/password.

    MariaDB for DirectAdmin Using RPMs

    Specific instructions for installing MariaDB RPMs on servers running the DirectAdmin control panel, including necessary configuration edits to prevent conflicts.

    If you are using DirectAdmin and you encounter any issues with , then the directions below may help. The process is very straightforward.

    circle-info

    Installing with YUM is preferable to installing the MariaDB RPM packages manually, so only do this if you are having issues such as: Starting httpd:

    Or:

    Installation Issues with PHP5

    Addresses compatibility issues between MariaDB and older PHP5 client libraries, specifically regarding header and library version mismatches.

    PHP5 may give an error if used with the old connect method:

    This is because the library wrongly checks and expects that the client library must be the exact same version as PHP was compiled with. You would get the same error if you tried to upgrade just the MySQL client library without upgrading PHP at the same time.

    Ways to fix this issue:

    1. Switch to using the in PHP (Recommended solution).

    apt-upgrade Fails, But the Database is Running

    Solutions for when `apt-get upgrade` hangs or fails because the MariaDB service takes too long to start, triggering a timeout in the init script.

    After running apt-upgrade mariadb, it's possible that apt shows a fail in trying to start the server, but in fact the database is up and running, which then provokes apt to remain in a non finished state.

    For example:

    This situation could occur if the timeout for the init script was too short. For example, see , a situation where the timeout was 30 seconds, but the server was taking 48 seconds to start.

    To overcome this, the timeout needs to be increased. This can be achieved as follows:

    Cross-compiling MariaDB

    Instructions for cross-compiling MariaDB for different architectures, including using Buildroot and CMake toolchain files.

    hashtag
    Buildroot

    is a way to cross compile MariaDB and other packages into a root filesystem. In the menuconfig you need to enable "Enable C++ Support" first under "Toolchain". After C++ is enabled MariaDB is an option under "Target Packages" ->"Libraries" -> "Databases" -> "mysql support" -> "mysql variant" -> "mariadb". Also enable the "mariadb server" below the "mysql support" option.

    Installing System Tables on Unix

    Instructions for running the `mariadb-install-db` script on Unix-like systems to initialize the MariaDB data directory and system tables.

    mariadb-install-db initializes the MariaDB data directory and creates the in the database, if they do not exist. MariaDB uses these tables to manage , , and . It also uses them to provide the data for the command in the client.

    works by starting MariaDB Server's mysqld process in mode and sending commands to create the and their content.

    There is a version specifically for Windows, .

    To invoke mariadb-install-db

    Building RPM Packages From Source

    Explains how to generate RPM packages from the MariaDB source code using CMake with the `-DRPM` flag.

    To generate RPM packages from the build, supply the -DRPM=xxx flag to CMake, where the value xxx is the name of the distribution you're building for. For example, centos7 or rocky8 or fedora39 or sles15.

    What these do are controlled in the following CMake files:

    • cmake/cpack_rpm.cmake

    Creating the MariaDB Binary Tarball

    How to generate a binary tarball from compiled source using `make package`, enabling portable distribution.

    How to generate binary tar.gz files.

    • .

    • with your preferred options/plugins.

    If the binaries are already built, you can generate a binary tarball with

    Building MariaDB on Fedora

    Instructions for building MariaDB on Fedora, using `dnf builddep` to install dependencies and CMake to configure the build.

    In the event that you are using the Linux-based operating system Fedora or any of its derivatives and would like to compile MariaDB from source code, you can do so using the MariaDB build in the official repositories.

    hashtag
    Installing Build Dependencies

    MariaDB requires a number of packages to compile from source. Fortunately, you can use the package in the Fedora repository to retrieve most of the relevant build dependencies through DNF.

    Running DNF in this way pulls the build dependencies for the release of MariaDB compiled by your version of Fedora. These may not be all the dependencies you need to build the particular version of MariaDB you want to use, but it will retrieve most of them.

    Specifying Which Plugins to Build

    Explains how to use CMake options like `PLUGIN_xxx` to control which plugins are built statically, dynamically, or not at all during compilation.

    By default all plugins are enabled and built as dynamic .so (or .dll) modules. If a plugin does not support dynamic builds, it is not built at all.

    Use PLUGIN_xxx cmake variables. They can be set on the command line with -DPLUGIN_xxx=value or in the cmake gui. Supported values are

    Value
    Effect

    Building MariaDB on Ubuntu

    Step-by-step guide for compiling MariaDB on Ubuntu, covering build dependencies installation and using source repositories.

    In the event that you are using the Linux-based operating system Ubuntu or any of its derivatives and would like to compile MariaDB from source code, you can do so using the MariaDB source repository for the release that interests you.

    Before you begin, install the software-properties-common, devscripts and equivs packages.

    hashtag

    Creating a Debian Repository

    Instructions on how to create a custom Debian repository for MariaDB packages using `dpkg-scanpackages`.

    Below are instructions for creating your own Debian repository. The instructions are based on

    hashtag
    Using the Debian repository you just created

    One needs to add a new file to the /etc/apt/sources.list.d/ directory. For instance a new file called mariadb.list

    Building MariaDB From Source Using musl-based GNU/Linux

    Guide for compiling MariaDB on Alpine Linux or other musl-based systems, noting limitations like TokuDB support.

    hashtag
    Instructions on compiling MariaDB on musl-based operating systems (Alpine)

    The instructions on this page will help you compile from source. Links to more complete instructions for specific platforms can be found on the page.

    Building MariaDB from a Source RPM

    Instructions for building MariaDB binaries from a source RPM package using tools like `rpmbuild`, `yum`, or `dnf`.

    For some distributions you can build MariaDB from a source RPM. (See also ).

    You can build it as follows:

    hashtag
    using dnf

    On RHEL8 you might need to start with:

    gpg --export --armour 1BB943DB > mariadb-signing-key.asc
    sudo rpm --import mariadb-signing-key.asc
    rpm -qa gpg-pubkey*

    Register for a MariaDB ID account.arrow-up-right

    Create a MariaDB IDarrow-up-right using one of the following Single sign-on methods:

    • Sign up using your Google Account

    • Sign up using your GitHub Account

    • Sign up using your LinkedIn Account

    Or use your email address:

    • Enter your email address and press next.

    • Click the reset button. A password link will appear in your email.

    • Once you set a new password, the MariaDB account page will appear.

    hashtag
    Obtaining Support

    MariaDB Corporation provides commercial support and services for MariaDB database products.

    To contact us with questions, or if you need assistance:

    • If you are able to login to your MariaDB ID, open a support casearrow-up-right

    • If you do not have a MariaDB ID or are unable to login, contact usarrow-up-right

    • MariaDB Customer Portalarrow-up-right

    \

    spinner
    spinner
    spinner
    spinner
    spinner
    spinner
    download pagearrow-up-right
    download the source
    build it
    spinner
    spinner

    NO

    the plugin will be not compiled at all

    STATIC

    the plugin will be compiled statically, if supported. Otherwise it will be not compiled.

    DYNAMIC

    the plugin will be compiled dynamically, if supported. Otherwise it will be not compiled. This is the default behavior.

    AUTO

    the plugin will be compiled statically, if supported. Otherwise it will be compiled dynamically.

    YES

    same as AUTO, but if plugin prerequisites (for example, specific libraries) are missing, it will not be skipped, it will abort cmake with an error.

    Note that unlike autotools, cmake tries to configure and build incrementally. You can modify one configuration option and cmake will only rebuild the part of the tree affected by it. For example, when you do cmake -DWITH_EMBEDDED_SERVER=1 in the already-built tree, it will make libmysqld to be built, but no other configuration options will be changed or reset to their default values.

    In particular this means that if you have run, for examplecmake -DPLUGIN_OQGRAPH=NO and later you want to restore the default behavior (with OQGraph being built) in the same build tree, you would need to runcmake -DPLUGIN_OQGRAPH=DYNAMIC

    Alternatively, you might simply delete the CMakeCache.txt file — this is the file where cmake stores current build configuration — and rebuild everything from scratch.

    This page is licensed: CC BY-SA / Gnu FDL

    spinner
    Installing with yum (recommended)
    Installing MariaDB RPM Files
    Checking MariaDB RPM Package Signatures
    spinner
    ldd $(which mysql) | grep mysql
    ldd /path/to/the/binary | grep mysql
    spinner
    On systems where systemd is not enabled/supported: The timeout can be increased by setting MYSQLD_STARTUP_TIMEOUT either directly in the script or via the command line. The init script also sources /etc/default/mariadb, so it can also be used to set MYSQLD_STARTUP_TIMEOUT to persistently change the startup timeout.
  • On systems that support systemd: The startup timeout can be increased by setting TimeoutStartSec systemd option.

  • This page is licensed: CC BY-SA / Gnu FDL

    MDEV-9382arrow-up-right
    spinner
    hashtag
    RPM Installation

    To install the RPMs, there is a quick and easy guide to Installing MariaDB with the RPM Tool. Follow the instructions there.

    hashtag
    Necessary Edits

    We do not want DirectAdmin's custombuild to remove/overwrite our MariaDB installation whenever an update is performed. To rectify this, disable automatic MySQL installation.

    Edit /usr/local/directadmin/custombuild/options.conf and replace mysql_inst=yes with mysql_inst=no

    circle-exclamation

    When MariaDB is installed manually (i.e. not using YUM), updates are not automatic. You will need to update the RPMs yourself.

    This page is licensed: CC BY-SA / Gnu FDL

    Installing MariaDB with YUM
    spinner
    Run with a lower error reporting levelarrow-up-right:
    1. Recompile PHP with the MariaDB client libraries.

    2. Use your original MySQL client library with the MariaDB.

    This page is licensed: CC BY-SA / Gnu FDL

    'mysql_connect(): Headers and client library minor version mismatch. Headers:50156 Library:50206'
    mysqlnd driverarrow-up-right
    $err_level = error_reporting(0);
    $conn = mysql_connect('params');
    error_reporting($err_level);
    spinner
    hashtag
    Details

    To cross-compile with cmake you will need a toolchain file. See, for example, herearrow-up-right. Besides cmake specific variables it should have, at least

    with appropriate values for your target architecture. Normally these MariaDB configuration settings are detected by running a small test program, and it cannot be done when cross-compiling.

    Note that during the build few helper tools are compiled and then immediately used to generate more source files for this very build. When cross-compiling these tools naturally should be built for the host architecture, not for the target architecture. Do it like this (assuming you're in the mariadb source tree):

    Now the helpers are built and you can cross-compile:

    Here you invoke cmake, specifying the path to your toolchain file and the path to the import_executables.cmake that you have just built on the previous step. Of course, you can also specify any other cmake parameters that could be necessary for this build, for example, enable or disable specific storage engines.

    See also msg02911.htmlarrow-up-right

    This page is licensed: CC BY-SA / Gnu FDL

    Buildrootarrow-up-right
    spinner
    , use the following syntax:

    For the options supported by mariadb-install-db, see mariadb-install-db: Options.

    For the option groups read by mariadb-install-db, see mariadb-install-db: Option Groups.

    See mariadb-install-db: Installing System Tables for information on the installation process.

    See mariadb-install-db: Troubleshooting Issues for information on how to troubleshoot the installation process.

    hashtag
    See Also

    • mariadb-install-db

    • The Windows version of mariadb-install-db: mysql_install_db.exe

    This page is licensed: CC BY-SA / Gnu FDL

    system tables
    mysql
    privileges
    roles
    plugins
    help
    mariadb
    mariadb-install-db
    --bootstrap
    system tables
    mysql_install_db.exe
    spinner

    cmake/build_configurations/mysql_release.cmake

  • cmake/mariadb_connector_c.cmake

  • To build the packages you should execute:

    hashtag
    See Also

    • About the MariaDB RPM Files

    • Building MariaDB on CentOS

    • Installing MariaDB RPM Files

    • MariaDB RPM Packages

    This page is licensed: CC BY-SA / Gnu FDL

    spinner

    You'll also need to install Git to retrieve the source repository:

    hashtag
    Building MariaDB

    Once you have the base dependencies installed, you can retrieve the source code and start building MariaDB. The source code is available on GitHub. Use the --branch option to specify the particular version of MariaDB you want to build.

    With the source repository cloned onto your system, you can start building MariaDB. Change into the new mariadb-server/ directory and run CMake to prepare the build.

    Once CMake readies the relevant Makefile for your system, use Make to build MariaDB.

    This page is licensed: CC BY-SA / Gnu FDL

    # dnf builddep mariadb-server
    spinner
    Installing Build Dependencies

    MariaDB requires a number of packages to compile from source. Fortunately, you can use the MariaDB repositories to retrieve the necessary code for the version you want. Use the Repository Configurationarrow-up-right tool to determine how to set up the MariaDB repository for your release of Ubuntu, the version of MariaDB that you want to install, and the mirror that you want to use.

    First add the authentication key for the repository, then add the repository.

    Once the repository is set up, you can use apt-get to retrieve the build dependencies. MariaDB packages supplied by Ubuntu and packages supplied by the MariaDB repository have the same base name of mariadb-server. You need to specify the specific version you want to retrieve.

    hashtag
    Building MariaDB

    Once you have the base dependencies installed, you can retrieve the source code and start building MariaDB. The source code is available on GitHub. Use the --branch option to specify the particular version of MariaDB you want to build.

    The source code includes scripts to install the remaining build dependencies. For Ubuntu, they're located in the debian/ directory. Navigate into the repository and run the autobake-deb.sh script. Then use

    hashtag
    Further Dependencies

    In the event that there are still build dependencies that are not satisfied, use mk-build-deps to generate a build dependency deb to use in installing the remaining packages.

    Then, call the autobake-deb.sh script again to build MariaDB.

    hashtag
    After Building

    After building the packages, it is a good idea to put them in a repository. See the Creating a Debian Repository page for instructions.

    This page is licensed: CC BY-SA / Gnu FDL

    spinner
    after which one can run

    and collect bugs :-).

    apt-get install will spray output of scripts and servers all over /var/log. It is also possible to set DEBIAN_SCRIPT_DEBUG=1 to get some (not all) of it to stdout.

    hashtag
    Cleaning up after failed installation

    Run

    to see what is installed, and then

    until the former produces empty output. Note: after some failures, /etc/mysql and /var/lib/mysql are not cleaned and still need to be removed manually.

    This page is licensed: CC BY-SA / Gnu FDL

    # sergey's MariaDB repository
    #
    deb file:///home/psergey/testrepo binary/
    deb-src file:///home/psergey/testrepo source/
    repository-howto.en.htmlarrow-up-right
    spinner
    Then, on all
    dnf
    distributions:

    hashtag
    using yum

    hashtag
    using zypper

    Or (to avoid building as root):

    This page is licensed: CC BY-SA / Gnu FDL

    sudo dnf config-manager --set-enabled codeready-builder-beta-for-rhel-8-x86_64-rpms
    Why Source RPMs (SRPMs) Aren't Packaged For Some Platforms
    spinner
    mv /etc/my.cnf.rpmsave /etc/my.cnf
    skip-bdb
    me@mybox:~$ ldd $(which mysql)|grep mysql
            libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0xb74df000)
    rpm -qf /path/to/file
    dpkg -S /path/to/file
    me@mybox:~$ ldd $(which mysql)|grep mysql
    	libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0xb75f8000)
    me@mybox:~$ dpkg -S /usr/lib/libmysqlclient.so.16
    libmariadbclient16: /usr/lib/libmysqlclient.so.16
    # apt-get upgrade
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Calculating upgrade... Done
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    2 not fully installed or removed.
    After this operation, 0 B of additional disk space will be used.
    Do you want to continue? [Y/n]
    Setting up mariadb-server-10.1 (10.1.10+maria-1~trusty) ...
     * Stopping MariaDB database server mysqld
       ...done.
     * Starting MariaDB database server mysqld
       ...fail!
    invoke-rc.d: initscript mysql, action "start" failed.
    dpkg: error processing package mariadb-server-10.1 (--configure):
     subprocess installed post-installation script returned error exit status 1
    dpkg: dependency problems prevent configuration of mariadb-server:
     mariadb-server depends on mariadb-server-10.1 (= 10.1.10+maria-1~trusty); however:
      Package mariadb-server-10.1 is not configured yet.
     
    dpkg: error processing package mariadb-server (--configure):
     dependency problems - leaving unconfigured
    No apport report written because the error message indicates its a followup error from a previous failure.
    Errors were encountered while processing:
     mariadb-server-10.1
     mariadb-server
    E: Sub-process /usr/bin/dpkg returned an error code (1)
      httpd:
        Syntax error on line 18 of /etc/httpd/conf/httpd.conf:
        Syntax error on line 1 of /etc/httpd/conf/extra/httpd-phpmodules.conf:
          Cannot load /usr/lib/apache/libphp5.so into server:
            libmysqlclient.so.18: cannot open shared object file: No such file or directory
    Starting httpd:
      httpd:
        Syntax error on line 18 of /etc/httpd/conf/httpd.conf:
        Syntax error on line 1 of /etc/httpd/conf/extra/httpd-phpmodules.conf:
          Cannot load /usr/lib/apache/libphp5.so into server:
            /usr/lib/apache/libphp5.so: undefined symbol: client_errors
    sudo sed -i 's/^mysql_inst=yes/mysql_inst=no/' /usr/local/directadmin/custombuild/options.conf
    SET(STACK_DIRECTION -1)
      SET(HAVE_IB_GCC_ATOMIC_BUILTINS 1)
    $ mkdir host
    $ cd host
    $ cmake ..
    $ make import_executables
    $ cd ..
    $ mkdir target
    $ cd target
    $ cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain/file.cmake -DIMPORT_EXECUTABLES=../host/import_executables.cmake
    $ make
    mariadb-install-db --user=mysql
    $ umask 0022
    $ cmake --build . --target package
    # dnf install git
    $ git clone --branch 10.3 https://github.com/MariaDB/server.git mariadb-server
    $ mkdir mariadb-build
    $ cd mariadb-build
    $ cmake -DRPM=fedora ../mariadb-server
    $ make package
    $ sudo apt-get install software-properties-common \
          devscripts \
          equivs
    $ sudo apt-key adv --recv-keys \
          --keyserver hkp://keyserver.ubuntu.com:80 \
          0xF1656F24C74CD1D8
    $ sudo add-apt-repository --update --yes --enable-source \
           'deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu '$(lsb_release -sc)' main'
    $ sudo apt-get build-dep mariadb-10.3
    $ git clone --branch 10.3 https://github.com/MariaDB/server.git
    $ cd server/
    $ ./debian/autobake-deb.sh
    $ mk-build-deps debian/control
    $ apt-get install ./mariadb-*build-deps_*.deb
    $ ./debian/autobake-deb.sh
    REPO_DIR={pick some location}
    mkdir $REPO_DIR
    mkdir $REPO_DIR/binary
    mkdir $REPO_DIR/source
    cp *.deb *.ddeb $REPO_DIR/binary
    cd $REPO_DIR
    dpkg-scanpackages binary  /dev/null | gzip -9c > binary/Packages.gz
    dpkg-scansources  source  /dev/null | gzip -9c > source/Sources.gz
    apt-get update  # Let apt learn about the new repository
    apt-get install mariadb-server
    dpkg --get-selections | grep mariadb
    dpkg --get-selections | grep mysql
    dpkg --purge <packages>
    sudo dnf install rpm-build perl-generators
        dnf download --source MariaDB
        sudo dnf builddep MariaDB-*.src.rpm
        rpmbuild --rebuild MariaDB-*.src.rpm
    sudo yum install rpm-build yum-utils
        yumdownloader --source MariaDB
        sudo yum-builddep MariaDB-*.src.rpm
        rpmbuild --rebuild MariaDB-*.src.rpm
    sudo zypper in rpm-build
        sudo zypper si MariaDB
        sudo rpmbuild -bb /usr/src/packages/SPECS/MariaDB.spec
    sudo zypper in rpm-build
        sudo zypper si -d MariaDB
        zypper --pkg-cache-dir=`pwd` si --download-only MariaDB
        rpmbuild --rebuild mariadb/srpms/MariaDB-*.src.rpm
    Prior to , the following steps were required:
    • Use make_binary_distribution to generate a binary tar file:

    This creates a source file with a name like mariadb-5.3.2-MariaDB-beta-linux-x86_64.tar.gz in your current directory.

    The other option is to use the bakery scripts. In this case you don't have to compile MariaDB source first.

    This page is licensed: CC BY-SA / Gnu FDL

    make package
    Setup your build environmentarrow-up-right
    Build binariesarrow-up-right
    cd mariadb-source
    ./scripts/make_binary_distribution
    spinner
    First,
    .
  • Next, prepare your system to be able to compile the source.

  • hashtag
    Using cmake

    and above is compiled using cmake. You can configure your build simply by running cmake using special option, i.e.

    To build and install MariaDB after running cmake use

    Note that building with MariaDB this way will disable tokuDB, till tokuDB becomes fully supported on musl.

    This page is licensed: CC BY-SA / Gnu FDL

    MariaDB
    source
    get a copy of the MariaDB source
    spinner
    rpm --checksig $(find . -name '*.rpm')
    Installing MariaDB RPM Files
    Troubleshooting MariaDB Installs on RedHat/CentOS
    spinner
    FATAL ERROR: OpenSCManager failed
    spinner
    mysqld --ignore-builtin-innodb --plugin-load=innodb=ha_innodb.so \
    --plugin_dir=/usr/local/mysql/lib/mysql/plugin
    replacing-builtin-innodb.htmlarrow-up-right
    spinner
    System-Versioned temporal data tables
    Recovery
    MariaDB Customer Portalarrow-up-right
    contact MariaDB Corporationarrow-up-right
    MariaDB Customer Portalarrow-up-right
    MariaDB Subscription Services Policyarrow-up-right
    spinner

    MariaDB Installation via RPMs on CentOS 7

    A detailed walkthrough for installing a specific legacy version of MariaDB (10.1.21) on CentOS 7 using individual RPM packages, including dependency resolution.

    This guide provides the detailed steps for installing MariaDB 10.1.21 via individual RPM packages on CentOS 7. The process involves installing dependencies, then the main packages, and resolving potential conflicts as they appear.

    The RPMs needed for the installation are available from the MariaDB website. The required packages for this guide are:

    hashtag
    Step-by-Step Installation

    1. Install Basic Dependencies

    First, use yum to install some general system packages that may be required.

    2. Install MariaDB RPM Packages

    Next, install the downloaded RPMs in sequence. Make sure to run these commands as a user with sufficient privileges (e.g., using sudo).

    circle-exclamation

    During this process, you may encounter errors related to dependencies or conflicts. The sections below describe these common issues and their solutions.

    hashtag
    Troubleshooting Common Installation Errors and Warnings

    Error 1: Package Conflict with mariadb-libs

    While installing mariadb-common, you may encounter a conflict with an existing package.

    You must find and remove the conflicting mariadb-libs package.

    After removing it, you can run the rpm -ivh MariaDB-10.1.21-centos7-x86_64-common.rpm command again.

    Error 2: Failed Dependency for Galera

    While installing the Galera package, the installation may fail due to a missing library.

    The required dependency libboost_program_options can be installed using yum.

    After installing boost-devel, you can run the rpm -ivh galera... command again.

    Warning: GPG Key NOKEY

    You may also see a warning about a missing GPG key during the installation.

    This warning can be resolved by importing the official MariaDB GPG key.

    hashtag
    Post-Installation

    After all RPMs are successfully installed, the final step is to secure the server. This involves setting the root password, removing test databases, and disallowing remote root login.


    This page is licensed: CC BY-SA / Gnu FDL

    Deploy with Package Tarballs

    Explains the benefits and use cases for deploying MariaDB using package tarballs (containing RPMs or DEBs) for offline or custom installations.

    MariaDB Corporation provides package tarballs for some MariaDB database products.

    Package tarballs provide multiple benefits:

    • Package tarballs are compressed tar archives that contain software packages.

    • Software packages can be installed using the operating system's package manager without relying on a remote repository.

    • RPM (.rpm) files are distributed for CentOS, Red Hat Enterprise Linux (RHEL), and SUSE Linux Enterprise Server (SLES).

    • DEB (.deb) files are distributed for Debian and Ubuntu.

    If you want to deploy MariaDB database products without using a package tarball, are available. Available deployment methods are component-specific.

    hashtag
    Use Cases

    MariaDB database products can be deployed with package tarballs to support use cases, such as:

    • Transfer the package tarball to an air-gapped network for installation without an internet connection

    • Install software using a package manager without configuring a package repository

    • Automatically install missing dependencies using a package manager

    hashtag
    Compatibility

    The following MariaDB database products can be deployed using package tarballs:

    • MariaDB Community Server 10.5

    • MariaDB Community Server 10.6

    • MariaDB Enterprise Server 10.5

    • MariaDB Enterprise Server 10.6

    hashtag
    Download a Package Tarball

    MariaDB Corporation provides package tarballs (.debs.tar, .rpms.tar) to support customers who leverage in-house package repositories to distribute software to their servers. Secure any such repository to prevent outside access.

    MariaDB Corporation provides multiple interfaces to download package tarballs.

    1. Visit the MariaDB Downloads page.

    2. Complete customer login.

    3. Select the desired version and operating system.

    hashtag
    Installation From Package Tarball

    Once downloaded and extracted, you can:

    • Install .rpm packages (RHEL, CentOS, and SLES): rpm -i

    • Install .deb packages (Debian, Ubuntu): dpkg -i

    • Install from the simple package repositories included in the tarball. Missing dependencies will be resolved when using the apt, yum

    Installation loads software to the system. This software requires configuration before the database server is ready for use.

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Building MariaDB on Debian

    Step-by-step guide for compiling MariaDB on Debian, including installing build dependencies via `apt-get` and using `autobake-deb.sh`.

    In the event that you are using the Linux-based operating system Debian or any of its direct derivatives and would like to compile MariaDB from source code, you can do so using the MariaDB source repository for the release that interests you. For Ubuntu and its derivatives, see Building on Ubuntu.

    Before you begin, install the software-properties-common and devscripts packages:

    hashtag
    Installing Build Dependencies

    MariaDB requires a number of packages to compile from source. Fortunately, you can use the MariaDB repositories to retrieve the necessary code for the version you want. Use the tool to determine how to set up the MariaDB repository for your release of Debian, the version of MariaDB that you want to install, and the mirror that you want to use.

    First add the authentication key for the repository, then add the repository.

    The second command added text to the /etc/apt/sources.list file. One of these lines is the repository containing binary packages for MariaDB, the other contains the source packages. The line for the source packages is commented out by default. This can be scripted:

    Alternately, open the file using your preferred text editor and uncomment the source repository.

    Once the repository is set up, you can use apt-get to retrieve the build dependencies. MariaDB packages supplied by Ubuntu and packages supplied by the MariaDB repository have the same base name of mariadb-server. You need to specify the specific version you want to retrieve.

    hashtag
    Building MariaDB

    Once you have the base dependencies installed, you can retrieve the source code and start building MariaDB. The source code is available on GitHub. Use the --branch option to specify the particular version of MariaDB you want to build.

    The source code includes scripts to install the remaining build dependencies. For Ubuntu, they're located in the debian/ directory. Navigate into the repository and run the autobake-deb.sh script. Then use

    hashtag
    After Building

    After building the packages, it is a good idea to put them in a repository. See the page for instructions.

    This page is licensed: CC BY-SA / Gnu FDL

    Compiling MariaDB with Vanilla XtraDB

    A guide for compiling older versions of MariaDB (specifically 5.3) with the original XtraDB engine from Percona Server, useful for testing purposes.

    Sometimes, one needs to have MariaDB compiled with Vanilla XtraDB. This page describes the process to do this. The process is rather crude, as my goal was just a once-off compile for testing (that is, not packaging or shipping) purposes.

    The process is applicable to and XtraDB from Percona Server 5.1.61.

    wget http://s.petrunia.net/scratch/make-vanilla-xtradb-work-with-mariadb.diff
    
    bzr branch /path/to/mariadb-5.3 5.3-vanilla-xtradb-r3
    
    cd 5.3-vanilla-xtradb-r3/storage/
    tar czf innodb_plugin.tgz innodb_plugin/
    rm -rf innodb_plugin
    tar czf xtradb.tgz xtradb/
    rm -rf xtradb
    cd ../../
    
    tar zxvf ~/Percona-Server-5.1.61.tar.gz
    cp -r Percona-Server-5.1.61/storage/innodb_plugin 5.3-vanilla-xtradb-r3/storage/
    patch -p1 -d 5.3-vanilla-xtradb-r3/storage/innodb_plugin/ < make-vanilla-xtradb-work-with-mariadb.diff
    
    cd 5.3-vanilla-xtradb-r3/
    
    BUILD/autorun.sh
    ./configure --with-plugin-innodb_plugin
    make

    This page is licensed: CC BY-SA / Gnu FDL

    spinner

    Customer Download Token

    Instructions on how to retrieve and use a Customer Download Token to access MariaDB Enterprise Server packages and binaries.

    MariaDB Corporation customers can use a Customer Download Token to download MariaDB database products using command-line tools or automation. This page provides instructions on how to retrieve and use the Customer Download Token.

    Alternatively, customers can download MariaDB database products using a web browser from the without a Customer Download Token if they are logged in with their MariaDB ID.

    hashtag
    Retrieve Customer Download Token

    MariaDB Corporation customers can retrieve their Customer Download Token through the MariaDB Customer Portal.

    GPG

    Information about the GPG keys used to sign MariaDB packages and repositories, including how to import them for verification.

    The MariaDB project signs their MariaDB packages for Debian, Ubuntu, Fedora, and Red Hat. This page documents information about the keys that we use and have used.

    hashtag
    MariaDB Community Server Debian / Ubuntu key

    Our MariaDB Community Server repositories for Debian "Sid" and the Ubuntu 16.04 and beyond "Xenial" use the following GPG signing key. As detailed in , APT 1.2.7 (and later) prefers SHA2 GPG keys and now prints warnings when a repository is signed using a SHA1 key like our previous GPG key. We have created a SHA2 key for use with these.

    Information about this key:

    Deploy with Local Package Repository Mirrors

    Learn how to create and maintain local mirrors of MariaDB package repositories for secure or air-gapped deployments.

    MariaDB Corporation provides package repositories, including the MariaDB Enterprise Repository and the MariaDB Community Repository, that can be used to install MariaDB products using the operating system's package manager. Local mirrors of the package repositories can be used for local deployments.

    Local package repository mirrors provide multiple benefits:

    • MariaDB Corporation's official package repositories are the source for the local mirror.

    • Tools provided by the operating system are used to create and maintain the local mirror.

    Installing System Tables on Windows

    Details the use of `mariadb-install-db.exe` on Windows to create new database instances, set the root password, and register Windows services.

    The mariadb-install-db.exe utility is the Windows equivalent of .

    hashtag
    Functionality

    The functionality of mariadb-install-db.exe is comparable with the shell script mariadb-install-db used on Unix, however it has been extended with both Windows specific functionality (creating a Windows service) and to generally useful functionality. For example, it can set the 'root' user password during database creation. It also creates the

    MariaDB 5.5.33 Debian and Ubuntu Installation Issues

    Specific instructions for resolving dependency breakage that occurred with the release of MariaDB 5.5.33 on Debian and Ubuntu systems.

    circle-exclamation

    This page is obsolete. The information is old, outdated, or otherwise currently incorrect. We are keeping the page for historical reasons only. Do not rely on the information in this article.

    Shortly after the release we became aware of some installation issues with the Debian and Ubuntu repositories. These issues were fixed in , but due to how apt works, steps need to be taken to solve the broken dependencies before upgrading.

    We know of three scenarios when dependencies were broken. The steps to fix each of them are pretty much the same, only the list of broken dependencies and hence the list of packages to take care of them differs. The basic idea is to downgrade those certain packages to 5.5.32 temporarily before upgrading them to 5.5.33a.

    cd $PACKAGING_WORK
    bakery/preheat.sh
    cd bakery_{number}
    bakery/tarbake51.sh last:1 $MARIA_WORK
    bakery/autobake51-bintar.sh mariadb-{version_num}-maria-beta-ourdelta{number}.tar.gz
    cmake . -DWITHOUT_TOKUDB=1
    make
    sudo make install
    me@desktop:~$ rpm --checksig $(find . -name '*.rpm')
    ./kvm-rpm-centos5-amd64/rpms/MariaDB-test-5.1.55-98.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
    ./kvm-rpm-centos5-amd64/rpms/MariaDB-server-5.1.55-98.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
    ./kvm-rpm-centos5-amd64/rpms/MariaDB-client-5.1.55-98.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
    ./kvm-rpm-centos5-amd64/rpms/MariaDB-shared-5.1.55-98.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
    ./kvm-rpm-centos5-amd64/rpms/MariaDB-devel-5.1.55-98.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
    ./kvm-rpm-centos5-amd64/rpms/MariaDB-debuginfo-5.1.55-98.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
    ./kvm-rpm-centos5-amd64/srpms/MariaDB-5.1.55-98.el5.src.rpm: (sha1) dsa sha1 md5 gpg OK
    jemalloc-3.6.0-1.el7.x86_64.rpm
    MariaDB-10.1.21-centos7-x86_64-client.rpm
    MariaDB-10.1.21-centos7-x86_64-compat.rpm
    galera-25.3.19-1.rhel7.el7.centos.x86_64.rpm
    jemalloc-devel-3.6.0-1.el7.x86_64.rpm
    MariaDB-10.1.21-centos7-x86_64-common.rpm
    MariaDB-10.1.21-centos7-x86_64-server.rpm
    $ sudo apt-get install -y software-properties-common \
          devscripts

    MariaDB Enterprise Server 11.4

  • MariaDB MaxScale 22.08

  • Click the Download button.

    Package tarballs can be downloaded using command-line tools or automation from the MariaDB Download interface with the Customer Download Token.

    For additional information, see "Download Binary Files".

    , or
    zypper
    package manager. See the
    README file
    enclosed in the package tarball for more information.
  • Test packages before placement in an internal package repository for distribution to your servers. Secure this repository from outside access.

  • alternative deployment methods
    spinner

    Compiling MariaDB with Extra Modules/Options

    Compile MariaDB Server with extra modules and options. This section details how to customize your build from source, enabling specific features or optimizations for your deployment.

    Repository Configurationarrow-up-right
    Creating a Debian Repository
    spinner
    yum install rsync nmap lsof perl-DBI nmap-ncat
    rpm -ivh jemalloc-3.6.0-1.el7.x86_64.rpm
    rpm -ivh jemalloc-devel-3.6.0-1.el7.x86_64.rpm
    rpm -ivh MariaDB-10.1.21-centos7-x86_64-common.rpm
    rpm -ivh MariaDB-10.1.21-centos7-x86_64-compat.rpm
    rpm -ivh MariaDB-10.1.21-centos7-x86_64-client.rpm
    rpm -ivh galera-25.3.19-1.rhel7.el7.centos.x86_64.rpm
    rpm -ivh MariaDB-10.1.21-centos7-x86_64-server.rpm
    # rpm -ivh MariaDB-10.1.21-centos7-x86_64-common.rpm 
    
    warning: MariaDB-10.1.21-centos7-x86_64-common.rpm: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
    error: Failed dependencies:
    	mariadb-libs < 1:10.1.21-1.el7.centos conflicts with MariaDB-common-10.1.21-1.el7.centos.x86_64
    # Search for the installed package
    rpm -qa | grep mariadb-libs
    # Expected output: mariadb-libs-5.5.52-1.el7.x86_64
    
    # Remove the conflicting package (use the exact name from the command above)
    rpm -ev --nodeps mariadb-libs-5.5.52-1.el7.x86_64
    # rpm -ivh galera-25.3.19-1.rhel7.el7.centos.x86_64.rpm 
    
    error: Failed dependencies:
    	libboost_program_options.so.1.53.0()(64bit) is needed by galera-25.3.19-1.rhel7.el7.centos.x86_64
    yum install boost-devel.x86_64
    warning: galera-25.3.19-1.rhel7.el7.centos.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
    rpm --import http://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    # First, start the newly installed MariaDB service
    systemctl start mariadb
    
    # Now, run the security script and follow the prompts
    mysql_secure_installation
    $ sudo apt-key adv --recv-keys \
          --keyserver hkp://keyserver.ubuntu.com:80 \
          0xF1656F24C74CD1D8
    $ sudo add-apt-repository 'deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.3/debian stretch main'
    sed -e '/^# deb-src.*mariadb/s/^# //' -i /etc/apt/sources.list
    $ sudo vim /etc/apt/sources.list
    ...
    deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.3/debian stretch main
    deb-src [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.3/debian stretch main
    $ sudo apt-get update
    $ sudo apt-get build-dep -y mariadb-server-10.3
    $ git clone --branch 10.3 https://github.com/MariaDB/server.git
    $ export DEB_BUILD_OPTIONS=parallel=$(nproc)
    $ cd server/
    $ ./debian/autobake-deb.sh
    circle-exclamation

    MariaDB Corporation's Customer Download Tokens are customer-specific. Protect the token as you would any security credential.

    To retrieve the Customer Download Token for your account:

    1. Navigate to the Customer Download Token at the MariaDB Customer Portalarrow-up-right.

    2. Log in using your MariaDB ID.

    3. Copy the Customer Download Token.

    hashtag
    Use the Customer Download Token

    MariaDB Corporation customers can use their Customer Download Token for multiple operations.

    Choose the procedure for your desired operation and substitute your Customer Download Token for CUSTOMER_DOWNLOAD_TOKEN:

    Operation
    Use Case

    Install MariaDB database products using package managers on CentOS / RHEL (YUM), Debian / Ubuntu (APT), and SLES (ZYpp)

    Download binary files using command-line tools or automation

    Deploy using Docker

    hashtag
    Configure MariaDB Enterprise Repository

    MariaDB Corporation provides the MariaDB Enterprise Repository to install MariaDB database products using package managers on CentOS / RHEL (YUM), Debian / Ubuntu (APT), and SLES (ZYpp).

    The MariaDB Enterprise Repository is configured using the mariadb_es_repo_setup script, which requires the Customer Download Token to be provided via the --token option.

    For additional information, see "MariaDB Package Repository Setup and Usage".

    hashtag
    Download Binary Files

    MariaDB Corporation provides an interface to download binary files using command-line tools or automation.

    Binary files can be downloaded using command-line tools or automation from the MariaDB Download interface with the Customer Download Token. The URL is in the following format:

    Download a binary file using the following procedure:

    1. In your web browser, visit the MariaDB Download interface for the specific MariaDB database product:

      • MariaDB Enterprise Server

      • MariaDB MaxScale

      • MariaDB Xpand

    2. In your web browser, navigate to the binary file that you would like to download and copy the URL. For example, to download a binary tarball of MariaDB Enterprise Server 10.6.20-16 for RHEL 8 on x86_64, the URL is:\

      FILE_ID is an internal identifier that is different for each file.

    3. Extract the FILE path from the copied URL. For example, to download the file mentioned above, the FILE path is:\

    4. Use your Customer Download Token and the FILE path to construct your customer-specific URL to download the file using command-line tools or automation.For example, to download the file mentioned above, the customer-specific URL is:\

    5. Use your customer-specific URL to download the file using command-line tools or automation:For example, to download the file mentioned above using wget:

    or using curl:

    hashtag
    Log in to MariaDB Enterprise Docker Registry

    Docker is an open platform for developing, shipping, and running applications that allows you to separate your applications from your infrastructure. MariaDB Corporation provides the MariaDB Enterprise Docker Registry.

    The MariaDB Enterprise Docker Registry provides Docker images for MariaDB Enterprise Server. The Docker images for MariaDB Enterprise Server are currently beta maturity, so they are not currently recommended for production.

    For additional information, see "Deploy MariaDB Enterprise Server with Docker".

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    MariaDB Enterprise Download pagearrow-up-right
    spinner
  • The short Key ID is: 0xC74CD1D8

  • The long Key ID is: 0xF1656F24C74CD1D8

  • The full fingerprint of the key is: 177F 4010 FE56 CA33 3630 0305 F165 6F24 C74C D1D8

  • The key can be added on Debian-based systems using the following command:

    • Usage of the apt-key command is deprecated in the latest versions of Debian and Ubuntu, and the replacement method is to download the keyring file to the /etc/apt/trusted.gpg.d/ directory. This can be done with the following:

    Prior to Debian 9 (Stretch), and Debian Unstable (Sid), and Ubuntu 16.04 LTS (Xenial), the id of our GPG public key was 0xcbcb082a1bb943db. The full key fingerprint is:

    hashtag
    MariaDB Community Server RPM / Source Keys

    Beginning in 2023 we migrated the key used to sign our yum/dnf/zypper repositories and to sign our source code and binary tarballs to the same key we use for Debian and Ubuntu.

    Key ID and Fingerprint information is in the MariaDB Community Server Debian/Ubuntu Key section, above.

    The key can be imported on RPM-based systems using the following command:

    sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY

    or

    sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY

    The GPG Key ID of the MariaDB signing key we used for yum/dnf/zypper repositories and to sign our source code tarballs until the end of 2022 was 0xCBCB082A1BB943DB. The short form of the id is 0x1BB943DB and the full key fingerprint is:

    This key was used by the yum/dnf/zypper repositories for RedHat, CentOS, Fedora, openSUSE, and SLES.

    If you configure the mariadb.org rpm repositories using the repository configuration tool then your package manager will prompt you to import the key the first time you install a package from the repository.

    You can also import the key directly using the following command:

    hashtag
    MariaDB Enterprise GPG Keys

    Information about the key we use on most platforms for MariaDB Enterprise Server releases:

    • The short Key ID is: 0xE3C94F49

    • The long Key ID is: 0xCE1A3DD5E3C94F49

    • The full fingerprint of the key is: 4C47 0FFF EFC4 D3DC 5977 8655 CE1A 3DD5 E3C9 4F49

    On Debian / Ubuntu systems, you can install the keyring containing this key with:

    The key can be imported on RPM-based systems using the following command:

    or

    For RHEL, AlmaLinux, Rocky, and Oracle Linux 10 and above, and for Debian 13 Trixie and above there are new requirements around GPG keys used to sign packages. For these distributions we have created a stronger GPG key for our Enterprise Server releases.

    Information on this key:

    • The short Key ID is: 0x8C27D14E

    • The long Key ID is: 0x5D87FACA8C27D14E

    hashtag
    MariaDB MaxScale GPG Keys

    In December 2025, MariaDB MaxScale moved to using the same GPG key used by MariaDB Enterprise Server for RHEL 10 and Debian 13 Trixie.

    Information on this key:

    • The short Key ID is: 0x8C27D14E

    • The long Key ID is: 0x5D87FACA8C27D14E

    • The full fingerprint of the key is: BB2A 36F3 6C3B 4D37 3BAC 328A 5D87 FACA 8C27 D14E

    On Debian / Ubuntu systems, you can install the keyring containing this key with:

    The key can be imported on RPM-based systems using the following command:

    or

    Information on the key used by MaxScale repositories prior to December 2025:

    • The short Key ID is: 0xE3C94F49

    • The long Key ID is: 0xCE1A3DD5E3C94F49

    hashtag
    Configuring Repositories

    See the MariaDB Package Repository Setup and Usage page for details on using the mariadb_repo_setup and mariadb_es_repo_setup scripts to configure repositories that use these keys.

    See the detailsarrow-up-right on configuring MariaDB Foundation repositories that use these keys.

    This page is licensed: CC BY-SA / Gnu FDL

    MDEV-9781arrow-up-right
    spinner

    After a local mirror is created, the mirror can be used just like the MariaDB repositories to install MariaDB products using the operating system's package manager.

    If you want to deploy MariaDB database products without using a local package repository mirror, alternative deployment methods are available. Available deployment methods are component-specific.

    hashtag
    Use Cases

    MariaDB database products can be deployed with local package repository mirrors to support use cases, such as:

    • Install from the mirror on an air-gapped network that is not connected to the internet

    • Remove packages from mirror for versions that are not used in the local environment

    • Add packages to mirror for tools and clients that are used in the local environment

    • Automatically install missing dependencies using a package manager

    hashtag
    Compatibility

    The following MariaDB database products can be deployed using package repositories:

    • MariaDB Community Server 10.6

    • MariaDB Community Server 10.11

    • MariaDB Community Server 11.4

    • MariaDB Community Server 11.8

    • MariaDB Community Server 12.3

    • MariaDB Enterprise Server 10.6

    • MariaDB Enterprise Server 11.4

    • MariaDB Enterprise Server 11.8

    • MariaDB MaxScale 23.02

    • MariaDB MaxScale 23.08

    • MariaDB MaxScale 24.02

    • MariaDB MaxScale 25.01

    hashtag
    Operating System Package Managers

    The package manager depends on the operating system:

    Operating System
    Package Manager

    Debian 11

    APT

    Debian 12

    APT

    Debian 13

    APT

    Red Hat Enterprise Linux 8 (RHEL 8)

    hashtag
    Create a Local Repository Mirror

    Creating a local mirror of the MariaDB Enterprise Repository or the MariaDB Community Repository enables you to distribute MariaDB products to your servers from a local repository you support. Secure any such repository mirror to prevent outside access.

    1. Configure a MariaDB repository

    2. Set up a repository mirroring tool, for example:

      • YUM: reposync, available at: 23016arrow-up-right

      • APT: debmirror, available at:

    3. Secure the repository mirror to prevent outside access.

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    spinner
    my.ini
    configuration file in the data directory and adds most important parameters to it (e.g port).

    mariadb-install-db.exe is used by the MariaDB installer for Windows if the "Database instance" feature is selected. It obsoletes similar utilities and scripts that were used in the past such as mysqld.exe --install,mysql_install_db.pl, and mysql_secure_installation.pl.

    Parameter(s)
    Description

    -?, --help

    Display help message and exit

    -d, --datadir=name

    Data directory of the new database

    -S, --service=name

    Name of the Windows service

    -p, --password=name

    circle-info

    To create a Windows service, mariadb-install-db.exe should be run by a user with full administrator privileges (which means elevated command prompt on systems with UAC).

    hashtag
    Example

    will create the database in the directory C:\db, register the auto-start Windows service "MyDB", and set the root password to 'secret'.

    To start the service from the command line, execute

    hashtag
    Removing Database Instances

    If you run your database instance as service, to remove it completely from the command line, use

    This page is licensed: CC BY-SA / Gnu FDL

    mariadb-install-db
    spinner
    If you ran into issues when moving from to , look through each of the three scenarios to see which one applies to you and then follow the steps to apply that fix.

    hashtag
    Applying the fix

    To get your system ready to apply the fix, do the following:

    • Comment out the standard repo in the /etc/apt/sources.list or /etc/apt/sources.list.d/mariadb.repo file (or wherever you have the repositories configured).

    • Add a repository to the sources.list. The easiest way is to add the following. Just replace '{os}' and '{dist}' with the appropriate values.

    For example, on Debian Wheezy the line would be:

    And on Ubuntu Raring the line would be:

    • Then run 'sudo apt-get update'

    • Then 'sudo apt-get install' the list of packages to downgrade as given in the applicable section below.

    • Next, modify our sources.list to remove the 5.5.32 repo and switch back to the normal 5.5 repo

    • Then 'sudo apt-get update' to get things back to normal

    • As a final optional step, once your normal mirror has at least you can 'sudo apt-get upgrade' to upgrade. To check what version of MariaDB our mirror has, run the following command (after running 'sudo apt-get update'):

    hashtag
    5.5.32 server + 5.5.32 client upgraded to the initial (17 Sep 2013) release of 5.5.33

    In this first scenario, both client and server were partially upgraded to 5.5.33 before the process aborted. The problem looks like this:

    To fix it, the following server and client packages need to be temporarily downgraded to 5.5.32 (replace 'wheezy' with the name of whatever distribution you are using):

    hashtag
    5.5.32 Galera server and 5.5.32 MariaDB client upgraded to 5.5.33

    In this scenario, the client upgraded, but Galera-server did not. The problem looks like this:

    To fix it, only the client packages need to be temporarily downgraded to 5.5.32 (replace wheezy with whatever your distribution is):

    hashtag
    5.3.12 server + 5.3.12 client + 5.5.32 libmariadbclient18 upgraded to 5.5.33

    In this scenario, only the library upgraded. The problem looks like this:

    To fix it, the library needs to be downgraded to 5.5.32 (replace wheezy with your distribution):

    After switching back to the 5.5 repo, the libraries won't get upgraded, they will stay 5.5.32 until you upgrade the server to 5.5.33a.

    This page is licensed: CC BY-SA / Gnu FDL

    spinner

    Installing MariaDB With the rpm Tool

    A guide to installing MariaDB using the low-level `rpm` command, suitable for situations where package managers like `yum` or `dnf` are not available or preferred.

    This article describes how to download the RPM files and install them using therpm command.

    It is highly recommended to Install MariaDB with yum where possible.

    Navigate toand choose the desired database version and then select the RPMs that match your Linux distribution and architecture.

    Clicking those links takes you to a local mirror. Choose the rpms link and download the desired packages. The packages will be similar to the following:

    For a standard server installation you will need to download at least the client, shared, and server RPM files. See About the MariaDB RPM Files for more information about what is included in each RPM package.

    After downloading the MariaDB RPM files, you might want to check their signatures. See for more information about checking signatures.

    Prior to installing MariaDB, be aware that it will conflict with an existing installation of MySQL. To check whether MySQL is already installed, issue the command:

    If necessary, you can remove found MySQL packages before installing MariaDB.

    To install MariaDB, use the command:

    You should see output such as the following:

    Be sure to follow the instructions given in the preceding output and create a password for the root user either by using or by running the /usr/bin/mysql_secure_installation script.

    Installing the MariaDB RPM files installs the MySQL tools in the /usr/bin directory. You can confirm that MariaDB has been installed by using the client program. Issuing the command mariadb should give you the MariaDB cursor.

    hashtag
    See Also

    This page is licensed: CC BY-SA / Gnu FDL

    Building MariaDB on FreeBSD

    Instructions for building MariaDB on FreeBSD using Ports or Poudriere, including configuring build options.

    It is relatively straightforward to build MariaDB from source on FreeBSD. When working with an individual host, you can use Ports to compile particular or multiple versions of MariaDB. When working with multiple hosts, you can use Poudriere to build MariaDB once, then serve it as a package to multiple FreeBSD hosts.

    hashtag
    Using Ports

    The FreeBSD Ports Collection provides a series of Makefiles that you can use to retrieve source code, configure builds, install dependencies and compile software. This allows you to use more advanced releases than what is normally available through the package managers as well as enable any additional features that interest you.

    In the event that you have not used Ports before on your system, you need to first fetch and extract the Ports tree. This downloads the Ports tree from FreeBSD and extracts it onto your system, placing the various Makefiles, patches and so on in the /usr/ports/ directory.

    In the event that you have used Ports before on this system, run Portsnap again to download and install any updates to the Ports tree.

    This ensures that you are using the most up to date release of the Ports tree that is available on your system.

    hashtag
    Building MariaDB from Ports

    Once Portsnap has installed or updated your Ports tree, you can change into the relevant directory and install MariaDB. Ports for MariaDB are located in the /usr/ports/databases/ directory.

    Note that FreeBSD treats the Server and Client as separate packages. The Client is a dependency of the Server, so you only need to build the Server to get both. It also provides a number of different versions. You can search the available ports from . Decide what version of MariaDB you want to install, the change into the relevant directory. Once in the directory, run Make to build MariaDB.

    In addition to downloading and building MariaDB, Ports also downloads and build any libraries on which MariaDB depends. Each port it builds will take you to a GUI window where you can select various build options. In the case of MariaDB, this includes various storage engines and specific features you need in your build.

    Once you finish building the ports, install MariaDB on your system and clean the directory to free up disk space.

    This installs FreeBSD on your server. You can now enable, configure and start the service as you normally would after installing MariaDB from a package.

    hashtag
    Using Poudriere

    Poudriere is a utility for building FreeBSD packages. It allows you to build MariaDB from a FreeBSD Jail, then serve it as a binary package to other FreeBSD hosts. You may find this is particularly useful when building to deploy multiple MariaDB servers on FreeBSD, such as with Galera Cluster or similar deployments.

    hashtag
    Building MariaDB

    Once you've configured your host to use Jails and Poudriere, initialize a jail to use in building packages and a jail for managing ports.

    This creates two jails, package-builder and local-ports, which you can then use to build MariaDB. Create a text file to define the packages you want to build. Poudriere will build these packages as well as their dependencies. MariaDB is located at databases/mariadb103-server. Adjust the path to match the version you want to install.

    Use the options command to initialize the build options for the packages you want Poudriere to compile.

    Lastly, use the bulk command to compile the packages.

    hashtag
    Using Poudriere Repositories

    In order to use Poudriere, you need to set up and configure a web server, such as Nginx or Apache to serve the directory that Poudriere built. For instance, in the case of the above example, you would map to the package-builder jail: /usr/local/poudriere/data/packages/package-builder/.

    You may find it useful to map this directory to a sub-domain, for instance httpspkg.example.com or something similar.

    Lastly, you need to configure the FreeBSD hosts to use the Poudriere repository you just created. On each host, disable the FreeBSD official repositories and enable your Poudriere repository as an alternative.

    Then add the URL for your Poudriere repository to configuration file:

    You can then install MariaDB from Poudriere using the package manager.

    This page is licensed: CC BY-SA / Gnu FDL

    Build Environment Setup for macOS

    Instructions for setting up the build environment on macOS, including installing dependencies via Homebrew and configuring CMake.

    hashtag
    Prelude

    Building MariaDB on macOS relies on the Apple-provided toolchain and Homebrew for dependencies.

    You can install the toolchain without XCode (suggested, unless you have XCode installed already) with:

    Homebrew is a package manager for macOS which you can install from https://brew.sharrow-up-right

    hashtag
    Install Dependencies

    First, install the upstream dependencies, then clone MariaDB.

    Second, clone MariaDB from the GitHub repository: see the page for options.

    hashtag
    Set Up the Environment

    CMake should find the dependencies automatically, but we may need to set several environment variables to explicitly point at locations of dependencies installed by Homebrew to avoid conflicts with system-native versions that aren't suitable for building MariaDB. In the worst case scenario, use the following (but you can try building MariaDB first by skipping to the "Run CMake" section below to see if these are necessary in your setup):

    The installation location of Homebrew depends on the processor type. Apple Silicon macs will have Homebrew in /opt/homebrew while Intel macs will have Homebrew in /usr/local.

    hashtag
    Run CMake

    By default, macOS uses a case-insensitive filesystem. When building, we can't create a build subdirectory because BUILD already exists, and all the CMake output will end up mixed in with BUILD. Instead, create a mariadb-build directory as that is unique. cd into mariadb-build and, from there, run CMake with the following flags:

    (You can vary the values of these flags depending on what you need to do.)

    circle-info

    To install Ninja, run brew install ninja in Terminal.

    If CMake runs successfully, you can then run the build itself:

    This produces a mariadbd binary at mariadb-build/sql.

    This page is licensed: CC BY-SA / Gnu FDL

    Building MariaDB on CentOS

    Instructions for building MariaDB on CentOS, including installing build dependencies with `yum-builddep`.

    In the event that you are using the Linux-based operating system CentOS or any of its derivatives, you can optionally compile MariaDB from source code. This is useful in cases where you want use a more advanced release than the one that's available in the official repositories, or when you want to enable certain feature that are not otherwise accessible.

    hashtag
    Installing Build Dependencies for

    Before you start building MariaDB, you first need to install the build dependencies required to run the compile. CentOS provides a tool for installing build dependencies. The yum-builddep utility reads a package and generates a list of the packages required to build from source, then calls YUM to install them for you. In the event that this utility is not available on your system, you can install it through the yum-utils package. Once you have it, install the MariaDB build dependencies.

    Running the above command installs many of the build dependencies, but it doesn't install all of them. It will only install dependencies for , which is not enough if you want to compile a newer MariaDB version!

    hashtag
    Installing Build Dependencies for newer MariaDB versions

    The following commands installs all packages needed to get and compile :

    You can replace openssl with gnutls above, depending on the TLS implementation you want to use.

    If you plan to use the BUILD scripts to make it easier to build different configurations of MariaDB, then you should also install ccache to speed up your compilations:

    If you want to test the MariaDB installation, with the include mysql-test-run (mtr) system, you also need to install and configure cpan:

    For more information on dependencies, see .

    hashtag
    Building MariaDB

    Once you have the base dependencies installed, you can retrieve the source code and start building MariaDB. The source code is available on GitHub. Use the --branch option to specify the particular version of MariaDB you want to build.

    With the source repository cloned onto your system, you can start building MariaDB. Run CMake to ready MariaDB for the build,

    Once CMake readies the relevant Makefile for your system, use Make to build MariaDB.

    This generates an RPM file, which you can then install on your system or copy over to install on other CentOS hosts. The umask is needed because of a bug in cmake / cmake scripts.

    Alternative, use one of the build scripts in the BUILD directory that allows you to compile different versions of MariaDB (debug, optimized, profiling etc).

    A good option for developers is:

    hashtag
    Creating MariaDB-compat package

    MariaDB-compat package contains libraries from older MariaDB releases. They cannot be built from the current source tree, so cpack creates them by repackaging old MariaDB-shared packages. If you want to have -compat package created, you need to download MariaDB-shared-5.3 and MariaDB-shared-10.1 rpm packages for your architecture (any minor version will do) and put them one level above the source tree you're building. CMake will pick them up and create a MariaDB-compat package. CMake reports it as

    hashtag
    Additional Dependencies

    In the event that you miss a package while installing build dependencies, CMake may continue to fail after you install the necessary packages. If this happens to you, delete the CMake cache then run the above the command again:

    When CMake runs through the tests again, it should now find the packages it needs, instead of the cache telling it they're unavailable.

    hashtag
    More about CMake and CPackRPM

    See also

    This page is licensed: CC BY-SA / Gnu FDL

    MariaDB Debian Live Images

    Information about using MariaDB Debian Live images for testing and offline installation, including boot options and default credentials.

    circle-exclamation

    This page is obsolete. The information is old, outdated, or otherwise currently incorrect. We are keeping the page for historical reasons only. Do not rely on the information in this article.

    A member of the MariaDB community, Mark <ms (at) it-infrastrukturen (dot) org>, has created some Debian "squeeze" 6.0.4 based, live iso images with or 5.3 pre-installed on them and some Debian "squeeze" 6.0.5 based, live iso images with pre-installed on them.

    These live and install images can be used to quickly run a MariaDB server in live mode for learning or testing purposes, or to simplify and speed up off-line installations of Debian-based MariaDB servers onto harddisk.

    Installing MariaDB Binary Tarballs

    A guide to installing MariaDB from pre-compiled binary tarballs on Linux, allowing for flexible installation paths and multiple versions.

    Binary tarballs (bintars) are compressed tar archives that contain pre-compiled executables, libraries, and other deployment dependencies. They can usually be installed on any modern Linux distribution.

    MariaDB Binary tarballs are named following the pattern: mariadb-VERSION-OS.tar.gz. Be sure to the correct version for your machine.

    circle-exclamation

    Some older binary tarballs are marked '(GLIBC_2.14)' or '(requires GLIBC_2.14+)'. These binaries are built the same as the others, but on a newer build host, and they require GLIBC 2.14 or higher. Use the other binaries for machines with older versions of GLIBC installed. Run

    Installing MariaDB Alongside MySQL

    Instructions for installing MariaDB on the same server as an existing MySQL installation, useful for migration testing or running multiple versions.

    MariaDB was originally designed as a drop-in replacement of MySQL, with more features, new storage engines, fewer bugs, and better performance, but you can also install it alongside MySQL. (This can be useful, for example, if you want to migrate databases/applications one by one.)

    Here are the steps to install MariaDB near an existing MySQL installation.

    • Download the compiled binary tar.gz file that contains the latest version.

    • Extract the files in a directory of your choice. In the following, we assume you chose the

    Build Environment Setup for Linux

    Lists required tools and dependencies for building MariaDB on Linux, and how to install them using package managers.

    hashtag
    Required Tools

    The following is a list of tools that are required for building MariaDB on Linux and Mac OS X. Most, if not all, of these will exist as packages in your distribution's package repositories, so check there first. See , , and pages for specific requirements for those platforms.

    https://dlm.mariadb.com/CUSTOMER_DOWNLOAD_TOKEN/FILE
    wget https://dlm.mariadb.com/CUSTOMER_DOWNLOAD_TOKEN/FILE_ID/mariadb-enterprise-server/10.6.20-16/bintar-rhel-8-x86_64/mariadb-enterprise-10.6.20-16-rhel-8-x86_64.tar.gz
    curl -LO https://dlm.mariadb.com/CUSTOMER_DOWNLOAD_TOKEN/FILE_ID/mariadb-enterprise-server/10.6.20-16/bintar-rhel-8-x86_64/mariadb-enterprise-10.6.20-16-rhel-8-x86_64.tar.gz
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2019.gpg https://supplychain.mariadb.com/mariadb-keyring-2019.gpg
    1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB
    mariadb-install-db.exe --datadir=C:\db --service=MyDB --password=secret
    sc start MyDB
    sc stop <servicename>
    sc delete <servicename>
    rmdir /s /q <path-to-datadir>
    deb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/{os} {dist} main
    deb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/debian wheezy main
    deb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/ubuntu raring main
    apt-cache show mariadb-server | grep Version
    You might want to run 'apt-get -f install' to correct these.
    The following packages have unmet dependencies:
     libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.32+maria-1~wheezy) but 5.5.33+maria-1~wheezy is installed
     libmysqlclient18 : Depends: libmariadbclient18 (= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
     mariadb-client-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
     mariadb-client-core-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
     mariadb-server : Depends: mariadb-server-5.5 (= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
     mariadb-server-core-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
    sudo apt-get install \
      libmysqlclient18=5.5.32+maria-1~wheezy \
      mariadb-client-5.5=5.5.32+maria-1~wheezy \
      mariadb-client-core-5.5=5.5.32+maria-1~wheezy \
      mariadb-server=5.5.32+maria-1~wheezy \
      mariadb-server-core-5.5=5.5.32+maria-1~wheezy
    The following packages have unmet dependencies:
     libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.32+maria-1~wheezy) but 5.5.33+maria-1~wheezy is installed
     libmysqlclient18 : Depends: libmariadbclient18 (= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
     mariadb-client-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
     mariadb-client-core-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
    sudo apt-get install \
      libmysqlclient18=5.5.32+maria-1~wheezy \
      mariadb-client-5.5=5.5.32+maria-1~wheezy \
      mariadb-client-core-5.5=5.5.32+maria-1~wheezy
    The following packages have unmet dependencies:
      libmariadbclient18: Depends: libmysqlclient18 (= 5.5.32+maria-1~lucid) but 5.5.33+maria-1~lucid is installed
      libmysqlclient18: Depends: libmariadbclient18 (= 5.5.33+maria-1~lucid) but 5.5.32+maria-1~lucid is installed
    sudo apt-get install \
      libmysqlclient=5.5.32+maria-1~wheezy \
      libmariadbclient=5.5.32+maria-1~wheezy
    MariaDB-client-5.2.5-99.el5.x86_64.rpm
    MariaDB-debuginfo-5.2.5-99.el5.x86_64.rpm
    MariaDB-devel-5.2.5-99.el5.x86_64.rpm
    MariaDB-server-5.2.5-99.el5.x86_64.rpm
    MariaDB-shared-5.2.5-99.el5.x86_64.rpm
    MariaDB-test-5.2.5-99.el5.x86_64.rpm
    xcode-select --install

    Password of the root user

    -P, --port=#

    mysqld port

    -W, --socket=name

    named pipe name

    -D, --default-user

    Create default user

    -R, --allow-remote-root-access

    Allow remote access from network for user root

    -N, --skip-networking

    Do not use TCP connections, use pipe instead

    -i, --innodb-page-size

    Innodb page size, since MariaDB 10.2.5

    -s, --silent

    Print less information

    -o, --verbose-bootstrap

    Include mysqld bootstrap output

    -l, --large-pages

    Use large pages, since MariaDB 10.6.1

    -c, --config

    my.ini config template file, since MariaDB 10.6.1

    DNF

    Red Hat Enterprise Linux 9 (RHEL 9)

    DNF

    Red Hat Enterprise Linux 10 (RHEL 10)

    DNF

    Rocky Linux 8

    DNF

    Rocky Linux 9

    DNF

    Rocky Linux 10

    DNF

    SUSE Linux Enterprise Server 12 (SLES 12)

    ZYpp

    SUSE Linux Enterprise Server 15 (SLES 15)

    ZYpp

    Ubuntu 22.04 LTS (Jammy)

    APT

    Ubuntu 24.04 LTS (Noble)

    APT

    Setup#Debian_Repository_Mirroring_Toolsarrow-up-right
    Configure MariaDB Enterprise Repository
    Download Binary Files with CLI or Automation
    Log In to MariaDB Enterprise Docker Registry
    Checking MariaDB RPM Package Signatures
    mariadb-admin
    mariadb
    Installing MariaDB with yum
    Troubleshooting MariaDB Installs on RedHat/CentOS
    Checking MariaDB RPM Package Signatures
    spinner
    Fresh Portsarrow-up-right
    spinner
    Getting the MariaDB Source Code
    spinner

    The full fingerprint of the key is: BB2A 36F3 6C3B 4D37 3BAC 328A 5D87 FACA 8C27 D14E

    On Debian / Ubuntu systems, you can install the keyring containing this key with:

    The key can be imported on RPM-based systems using the following command:

    or

    The full fingerprint of the key is: 4C47 0FFF EFC4 D3DC 5977 8655 CE1A 3DD5 E3C9 4F49

    On Debian / Ubuntu systems, you can install the keyring containing this key with:

    The key can be imported on RPM-based systems using the following command:

    or

    1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB
    sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY-2010
    /opt
    directory.
    • Create data directory and symlinks as below:

    • Create group mariadb and user mariadb and set correct ownerships:

    • Create a new my.cnf in /opt/mariadb from support files:

    • Edit the file /opt/mariadb-data/my.cnf and add custom paths, socket, port, user and the most important of all: data directory and base directory. Finally the file should have at least the following:

    • Copy the init.d script from support files in the right location:

    • Edit /etc/init.d/mariadb replacing mysql with mariadb as below:

    The trickiest part will be the last changes to this file. You need to tell mariadb to use only one configuration file. In the start section after**$bindir/mysqld_safe** add --defaults-file=/opt/mariadb-data/my.cnf. Finally the lines should look like:

    The same change needs to be made to the mariadb-admin command below in the wait_for_ready() function so that the mariadb start command can properly listen for the server start. In the wait_for_ready() function, after $bindir/mariadb-admin add --defaults-file=/opt/mariadb-data/my.cnf. The lines should look like:

    • Run mariadb-install-db by explicitly giving it the my.cnf file as argument:

    • Now you can start MariaDB by

    • Make MariaDB start at system start:

    • Finally test that you have both instances running:

    hashtag
    What about MariaDB Upgrades ?

    By having the mariadb.socket, my.cnf file and databases in /opt/mariadb-data means that if you want to upgrade the MariaDB version you will only need to:

    • Extract the new version from the archive in /opt near the current version,

    • Stop MariaDB.

    • Change the symlink mariadb to point to the new directory.

    • Start MariaDB.

    • Run upgrade script... but remember you will need to provide the socket option --socket=/opt/mariadb-data/mariadb.sock .

    This page is licensed: CC BY-SA / Gnu FDL

    spinner
    https://dlm.mariadb.com/FILE_ID/mariadb-enterprise-server/10.6.20-16/bintar-rhel-8-x86_64/mariadb-enterprise-10.6.20-16-rhel-8-x86_64.tar.gz
    FILE_ID/mariadb-enterprise-server/10.6.20-16/bintar-rhel-8-x86_64/mariadb-enterprise-10.6.20-16-rhel-8-x86_64.tar.gz
    https://dlm.mariadb.com/CUSTOMER_DOWNLOAD_TOKEN/FILE_ID/mariadb-enterprise-server/10.6.20-16/bintar-rhel-8-x86_64/mariadb-enterprise-10.6.20-16-rhel-8-x86_64.tar.gz
    rpm --checksig $(find . -name '*.rpm')
    rpm -qa 'mysql*'
    rpm -ivh MariaDB-*
    Preparing...                ########################################### [100%]
       1:MariaDB-shared         ########################################### [ 14%]
       2:MariaDB-client         ########################################### [ 29%]
       3:MariaDB-client         ########################################### [ 43%]
       4:MariaDB-debuginfo      ########################################### [ 57%]
       5:MariaDB-devel          ########################################### [ 71%]
       6:MariaDB-server         ########################################### [ 86%]
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
    To do so, start the server, then issue the following commands:
    
    /usr/bin/mariadb-admin -u root password 'new-password'
    /usr/bin/mariadb-admin -u root -h hostname password 'new-password'
    
    Alternatively you can run:
    /usr/bin/mysql_secure_installation
    
    which will also give you the option of removing the test
    databases and anonymous user created by default.  This is
    strongly recommended for production servers.
    
    See the MySQL manual for more instructions.
    
    Please report any problems with the /usr/bin/mysqlbug script!
    
    The latest information about MariaDB is available at http://www.askmonty.org/.
    You can find additional information about the MySQL part at:
    http://dev.mysql.com
    Support MariaDB development by buying support/new features from
    Monty Program Ab. You can contact us about this at sales@askmonty.org.
    Alternatively consider joining our community based development effort:
    http://askmonty.org/wiki/index.php/MariaDB#How_can_I_participate_in_the_development_of_MariaDB
    
    Starting MySQL....[  OK  ]
    Giving mysqld 2 seconds to start
       7:MariaDB-test           ########################################### [100%]
    # portsnap fetch extract
    # portsnap fetch update
    $ ls /usr/ports/databases | grep mariadb
    mariadb-connector-c
    mariadb-connector-odbc
    mariadb100-client
    mariadb100-server
    mariadb101-client
    mariadb101-server
    mariadb102-client
    mariadb102-server
    mariadb103-client
    mariadb103-server
    mariadb55-client
    mariadb55-server
    # cd /usr/ports/databases/mariadb103-server
    # make
    # make install clean
    # poudriere jail -c -j package-builder -v 11.2-RELEASE
    # poudriere ports -c -p local-ports
    $ vi maraidb-package-builder.txt
    databases/mariadb103-server
    # poudriere options -j package-builder -p local-ports -z mariadb-builder -f mariadb-package-builder.txt
    # poudriere bulk -j package-builder -p local-ports -z mariadb-builder -f mariadb-package-builder.txt
    # vi /usr/local/etc/pkg/repos/FreeBSD.conf
    FreeBSD: {
          enabled: no
    }
    # vi /usr/local/etc/pkg/repos/mariadb.conf
    custom: {
          url: "https://pkg.example.com",
          enabled: yes
    }
    # pkg install mariadb103-server
    brew install bison byacc cmake git gnutls libxml2 m4 openssl pcre pcre2 zlib zstd
    # Homebrew location
    export HOMEBREW_BASE_DIR=""
    if [ $(uname -m) = "x86_64" ]; then
      export HOMEBREW_BASE_DIR="/usr/local"
    else
      export HOMEBREW_BASE_DIR="/opt/homebrew"
    fi
    
    # LLVM and Clang
    export CXX=$HOMEBREW_BASE_DIR/opt/llvm/bin/clang++
    export CC=$HOMEBREW_BASE_DIR/opt/llvm/bin/clang
    export PATH="$HOMEBREW_BASE_DIR/opt/llvm/bin:$PATH"
    export CPPFLAGS="-I$HOMEBREW_BASE_DIR/opt/llvm/include"
    export LDFLAGS="-L$HOMEBREW_BASE_DIR/opt/llvm/lib"
    export LDFLAGS="$LDFLAGS -L$HOMEBREW_BASE_DIR/opt/llvm/lib/c++"
    export LDFLAGS="$LDFLAGS -Wl,-rpath,$HOMEBREW_BASE_DIR/opt/llvm/lib/c++"
    export LDFLAGS="$LDFLAGS -L$HOMEBREW_BASE_DIR/opt/llvm/lib"
    
    # zlib, libxml2
    export CPPFLAGS="$CPPFLAGS -I$HOMEBREW_BASE_DIR/opt/libxml2/include -I$HOMEBREW_BASE_DIR/opt/zlib/include"
    export CPPFLAGS="$CPPFLAGS -I$HOMEBREW_BASE_DIR/opt/libxml2/include"
    export CPPFLAGS="$CPPFLAGS -I$HOMEBREW_BASE_DIR/opt/zlib/include"
    export LDFLAGS="$LDFLAGS -L$HOMEBREW_BASE_DIR/opt/libxml2/lib -L$HOMEBREW_BASE_DIR/opt/zlib/lib"
    export LDFLAGS="$LDFLAGS -L$HOMEBREW_BASE_DIR/opt/zlib/lib"
    export PATH="$HOMEBREW_BASE_DIR/opt/libxml2/bin:$PATH"
    
    # pkgconfig
    export PKG_CONFIG_PATH="$HOMEBREW_BASE_DIR/opt/libxml2/lib/pkgconfig:$HOMEBREW_BASE_DIR/opt/zlib/lib/pkgconfig"
    
    # libunwind
    export LDFLAGS="$LDFLAGS -L$HOMEBREW_BASE_DIR/opt/llvm/lib/unwind -lunwind"
    
    # bison
    export PATH="$HOMEBREW_BASE_DIR/opt/bison/bin:$PATH"
    mkdir mariadb-build
    cd mariadb-build
    cmake .. \
            -DENABLE_GCOV=OFF \
            -DCMAKE_C_FLAGS=-fno-color-diagnostics \
            -DCMAKE_CXX_FLAGS=-fno-color-diagnostics \
            -DCMAKE_COLOR_MAKEFILE=OFF \
            -DCMAKE_VERBOSE_MAKEFILE=OFF \
            -DCMAKE_BUILD_TYPE=Debug \
            -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
            -DMYSQL_MAINTAINER_MODE=OFF \
            -DPLUGIN_ARCHIVE=NO \
            -DPLUGIN_MROONGA=NO \
            -DPLUGIN_CONNECT=NO \
            -DPLUGIN_SPIDER=NO \
            -DPLUGIN_ROCKSDB=NO \
            -DPLUGIN_OQGRAPH=NO \
            -DPLUGIN_TOKUDB=NO \
            -DWITH_ASAN=OFF \
            -DWITH_MSAN=OFF \
            -DWITH_SAFEMALLOC=ON \
            -DWITH_MARIABACKUP=OFF \
            -DWITH_EMBEDDED_SERVER=OFF \
            -DWITH_UNIT_TESTS=OFF \
            -DCONC_WITH_UNITTEST=OFF \
            -DWITH_WSREP=OFF \
            -DWITHOUT_DYNAMIC_PLUGINS=0 \
            -DWITH_SSL=bundled \
            -DWITH_PCRE=bundled \
            -G Ninja
    cmake --build . --parallel 8
    sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2019.gpg https://supplychain.mariadb.com/mariadb-keyring-2019.gpg
    sudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY
    sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY
    sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2025.gpg https://supplychain.mariadb.com/mariadb-keyring-2025.gpg
    sudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025
    sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025
    sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2025.gpg https://supplychain.mariadb.com/mariadb-keyring-2025.gpg
    sudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025
    sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025
    sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2025.gpg https://supplychain.mariadb.com/mariadb-keyring-2025.gpg
    sudo rpm --import https://supplychain.mariadb.com/MariaDB-MaxScale-GPG-KEY
    sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-MaxScale-GPG-KEY
    [root@mariadb-near-mysql ~]# cat /etc/issue
    CentOS release 6.2 (Final)
    
    [root@mariadb-near-mysql ~]# rpm -qa mysql*
    mysql-5.1.61-1.el6_2.1.x86_64
    mysql-libs-5.1.61-1.el6_2.1.x86_64
    mysql-server-5.1.61-1.el6_2.1.x86_64
    
    [root@mariadb-near-mysql ~]# ps axf | grep mysqld
     2072 pts/0    S+     0:00          \_ grep mysqld
     1867 ?        S      0:01 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock ...
     1974 ?        Sl     0:06  \_ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql ...
    [root@mariadb-near-mysql opt]# mkdir mariadb-data
    [root@mariadb-near-mysql opt]# ln -s mariadb-5.5.24-linux-x86_64 mariadb
    [root@mariadb-near-mysql opt]# ls -al
    total 20
    drwxr-xr-x.  5 root root 4096 2012-06-06 07:27 .
    dr-xr-xr-x. 23 root root 4096 2012-06-06 06:38 ..
    lrwxrwxrwx.  1 root root   27 2012-06-06 07:27 mariadb -> mariadb-5.5.24-linux-x86_64
    drwxr-xr-x. 13 root root 4096 2012-06-06 07:07 mariadb-5.5.24-linux-x86_64
    drwxr-xr-x.  2 root root 4096 2012-06-06 07:26 mariadb-data
    [root@mariadb-near-mysql opt]# groupadd --system mariadb
    [root@mariadb-near-mysql opt]# useradd -c "MariaDB Server" -d /opt/mariadb -g mariadb --system mariadb
    [root@mariadb-near-mysql opt]# chown -R mariadb:mariadb mariadb-5.5.24-linux-x86_64/
    [root@mariadb-near-mysql opt]# chown -R mariadb:mariadb mariadb-data/
    [root@mariadb-near-mysql opt]# cp mariadb/support-files/my-medium.cnf mariadb-data/my.cnf
    [root@mariadb-near-mysql opt]# chown mariadb:mariadb mariadb-data/my.cnf
    [client]
    port		= 3307
    socket		= /opt/mariadb-data/mariadb.sock
    
    [mysqld]
    datadir         = /opt/mariadb-data
    basedir         = /opt/mariadb
    port		= 3307
    socket		= /opt/mariadb-data/mariadb.sock
    user            = mariadb
    [root@mariadb-near-mysql opt]# cp mariadb/support-files/mysql.server /etc/init.d/mariadb
    [root@mariadb-near-mysql opt]# chmod +x /etc/init.d/mariadb
    - # Provides: mysql
    + # Provides: mariadb
    - basedir=
    + basedir=/opt/mariadb
    - datadir=
    + datadir=/opt/mariadb-data
    - lock_file_path="$lockdir/mysql"
    + lock_file_path="$lockdir/mariadb"
    # Give extra arguments to mysqld with the my.cnf file. This script
    # may be overwritten at next upgrade.
    $bindir/mysqld_safe --defaults-file=/opt/mariadb-data/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
    wait_for_ready () {
    [...]
        if $bindir/mariadb-admin --defaults-file=/opt/mariadb-data/my.cnf ping >/dev/null 2>&1; then
    [root@mariadb-near-mysql opt]# cd mariadb
    [root@mariadb-near-mysql mariadb]# scripts/mariadb-install-db --defaults-file=/opt/mariadb-data/my.cnf
    [root@mariadb-near-mysql opt]# /etc/init.d/mariadb start
    Starting MySQL...                                          [  OK  ]
    [root@mariadb-near-mysql opt]# cd /etc/init.d
    [root@mariadb-near-mysql init.d]# chkconfig --add mariadb 
    [root@mariadb-near-mysql init.d]# chkconfig --levels 3 mariadb on
    [root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION();"
    +-----------+
    | VERSION() |
    +-----------+
    | 5.1.61    |
    +-----------+
    [root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION();" --socket=/opt/mariadb-data/mariadb.sock
    +----------------+
    | VERSION()      |
    +----------------+
    | 5.5.24-MariaDB |
    +----------------+

    To work in live mode the system boots from a usb stick (or CD/DVD) and runs in RAM without touching the system's harddisk drive.

    The same usb stick (or CD/DVD media) can be used to install a complete server installation onto the harddisk drive using the included Debian installer.

    All required MariaDB packages are included on the media, so there is no need for an Internet connection.

    Three types of images are provided, text (command line), LXDE, and Gnome. The text-based live images can be used for testing or server off-line installations. The two gui types, LXDE and Gnome, can be used for testing/learning in live mode or for off-line desktop installations. Debian live images with LXDE (gnome, KDE or awesome) are pretty comfortable for daily work as a replacement for whatever desktop OS is installed on the system.

    There are three iso images for each type, one for 32-bit (i386) systems, one for 64-bit (amd64) systems, and one with both.

    1. Live iso images (text) for i386, amd64 or multi architectures.

    • binary-hybrid-squeeze-i386-mariadb52-text.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb52-text.isoarrow-up-right

    • binary-hybrid-squeeze-i386-amd64-mariadb52-text.isoarrow-up-right

    1. Live iso images (text) for i386, amd64 or multi architectures.

    • binary-hybrid-squeeze-i386-mariadb53-text.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb53-text.isoarrow-up-right

    • binary-hybrid-squeeze-i386-amd64-mariadb53-text.isoarrow-up-right

    1. Live iso images with LXDE for i386, amd64 or multi architectures.

    • binary-hybrid-squeeze-i386-mariadb53-lxde.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb53-lxde.isoarrow-up-right

    • binary-hybrid-squeeze-i386-amd64-mariadb53-lxde.isoarrow-up-right

    1. Live iso images with Gnome for i386, amd64 or multi architectures.

    • binary-hybrid-squeeze-i386-mariadb53-gnome.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb53-gnome.isoarrow-up-right

    • binary-hybrid-squeeze-i386-amd64-mariadb53-gnome.isoarrow-up-right

    1. Live images

    • binary-hybrid-squeeze-amd64-mariadb55-text-bpo.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb55-lxde-bpo.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb55-gnome-bpo.isoarrow-up-right

    • binary-hybrid-squeeze-amd64-mariadb55-awesome-bpo.isoarrow-up-right

    1. Live images demonstration video

    • README-mariadb-video.txtarrow-up-right

    • video-mariadb5.5-live-images-on-USB.ogvarrow-up-right

    • video-mariadb5.5-live-images-on-USB.mp4arrow-up-right

    The LXDE and Gnome images contain documentation under /srv/PDF. Including instructions on how to create your own Debian live images in live mode (you need 16GB RAM or more to be able to do this). See the README, README.live, and live-manual.en.pdf files under /srv/PDF for details.

    Note: Some HP notebooks are not able to boot binary hybrid iso images from a USB stick.

    hashtag
    Downloads

    To get the iso images you can use rsync:

    or just use the links above (or go to:).

    hashtag
    Preparing of bootable media:

    A USB stick or CD/DVD can be used as bootable media. The preferred way is a USB stick.

    • for Linux: dd if=./<image_name_as_above.iso> of=/dev/<USB-stick-ID_like_sdb_or_sdc>

    • for other systems: cygwin includes dd and some other linux/Unix tools.

    The iso images have been successfully tested on:

    • Acer ASPIRE @ne netbooks (1GB RAM)

    • ThinkPad T60p and T61p notebooks (2 or 4GB RAM)

    • Xeon E31270 / Asus P8BWS desktop (16GB ECC RAM)

    • AMD FX-4100 / Asus M5A99X EVO desktop (16GB ECC RAM)

    • HP DL385g7 Opteron 6170SE or 6180SE servers (32 or 64GB ECC RAM)

    hashtag
    Notes

    It is possible to add some options on the bootline for special purposes like, for example, the installation of additional packages from a local repository on the image or assigning a static IP address and running sshd.

    1. To configure a static IP use "ip=". For example: "ip=eth0:192.168.1.53:255.255.255.0:192.168.1.1"

    • The full format of "ip=" is: "ip=[interface]:[IP_address]:[netmask]:[gateway]"

    1. If you use an empty "ip=" value the content of /etc/network/interfaces and /etc/resolv.conf will be used. Without the "ip=" option, dhcp will be used to get an IP address.

    2. For installing and running sshd (so that the image can act as a server in a test environment) use: "sshd=on"

    • The live user is "sql" and the password is "live". Please change the password immediately after first login!

    1. Depending on the image or 5.3 server is installed. There is no root passord for the database set so please set a password immediately after first login!

    2. Run repo-off-line.sh to activate local repositories on the image for apt-get (for off-line installations) or repo-on-line.sh for internet repositories.

    3. The binary hybrid live iso images with multiple-choices inside the boot menu allow for the assignment of two different IPs. (e.g. for testing of clustered database operations)

    Send any feedback or suggestions related to these images to:

    • Mark <ms (at) it-infrastrukturen (dot) org>

    This page is licensed: CC BY-SA / Gnu FDL

    spinner
    ldd --version
    to see which version is running on your distribution. Others are marked
    systemd
    , which are for systems with
    systemd
    and GLIBC 2.19 or higher.

    hashtag
    Benefits of Binary Tarballs

    Binary tarballs provide multiple benefits:

    • They are highly OS independent. As long as you get the bintar for the architecture, GLIBC version, and if you are using systemd or not, the bintar should work almost anywhere.

    • You do not need to be root to use them.

      • They can be installed by anyone to any path, including one's home directory.

    • You can have on the same machine. This is often desired during upgrades when one wants to have the old installation running until switching to the new one.

    • You can use them on systems for which MariaDB does not support native packages.

    hashtag
    Installing binary tarballs

    To install the binariesarrow-up-right, unpack the distribution into the directory of your choice and run the mariadb-install-db script.

    In the example below, we install MariaDB in the /usr/local/mysql directory (this is the default location for MariaDB for many platforms). However, any other directory should work too.

    We install the binary with a symlink to the original name. This is done so that you can easily change MariaDB versions just by moving the symlink to point to another directory.

    hashtag
    Ensure You Use the Correct my.cnf Files

    MariaDB searches for the configuration files '/etc/my.cnf' (on some systems '/etc/mysql/my.cnf') and '~/.my.cnf'. If you have an old my.cnf file (maybe from a system installation of MariaDB or MySQL), you need to take care that you don't accidentally use the old one with your new binary .tar installation.

    The normal solution for this is to ignore the my.cnf file in /etc when you use the programs in the tar file.

    This is done by creating your own .my.cnf file in your home directory and telling mariadb-install-db,mysqld_safe, and possibly mariadb (the command-line client utility) to only use this one with the option '--defaults-file=~/.my.cnf'. Note that this has to be the first option for the above commands!

    hashtag
    Installing MariaDB as root in /usr/local/mysql

    If you have root access to the system, you probably want to install MariaDB under the user and group 'mysql' (to keep compatibility with MySQL installations):

    The symlinking with ln -s is recommended as it makes it easy to install many MariaDB versions at the same time (for easy testing, upgrading, downgrading, etc).

    If you are installing MariaDB to replace MySQL, then you can leave out the call to mariadb-install-db. Instead, shut down MySQL. MariaDB should find the path to the data directory from your old /etc/my.cnf file (path may vary depending on your system).

    To start mariadbd, you should now do:

    To test the connection, modify your $PATH so you can invoke clients such as mariadb, mariadb-dump, etc.

    You may want to modify your .bashrc or .bash_profile to make it permanent.

    hashtag
    Installing MariaDB as Not root in Any Directory

    Below, change /usr/local to the directory of your choice.

    If you have problems with the above gunzip command line, you can instead, if you have gnu tar, do:

    To start mariadbd, you should now do:

    hashtag
    Auto Start of mariadbd

    You can get mariadbd (the MariaDB server) to autostart by copying the file mysql.server file to the right place.

    The exact place depends on your system. The mysql.server file contains instructions on how to use and fine tune it.

    For systemd installation, the mariadb.service file will need to be copied from the support-files/systemd folder to the /usr/lib/systemd/system/ folder.

    Note that, by default, the /usr/ directory is write protected by systemd, though, so when having the data directory in /usr/local/mysql/data as per the instructions above, you also need to make that directory writable. You can do so by adding an extra service include file:

    After this, you can start the service using this command:

    Stop the service with this command:

    Please refer to the systemd page for further information.

    hashtag
    Post Installation

    After this, remember to set proper passwords for all accounts accessible from untrusted sources, to avoid exposing the host to security risks!

    Also consider using the mysql.server to start MariaDB automatically when your system boots.

    On systems using systemd, instead, enable automatic startup during system boot with this command:

    For details on the exact steps used to build the binaries, see the compiling MariaDB section.

    This page is licensed: CC BY-SA / Gnu FDL

    downloadarrow-up-right
    spinner
  • gziparrow-up-right

  • tararrow-up-right

  • gcc/g++ 4.8.5 or later, recommend above 9arrow-up-right or clang/clang++arrow-up-right

  • GNU make 3.75 or laterarrow-up-right or Ninjaarrow-up-right

  • bison (3.0)arrow-up-right

  • libncursesarrow-up-right or libncurses6

  • zlib-devarrow-up-right or zlib-devel

  • libevent-devarrow-up-right or libevent-devel

  • cmake above 2.8.7 though preferably above 3.3arrow-up-right

  • gnutlsarrow-up-right or opensslarrow-up-right

  • jemallocarrow-up-right (optional)

  • snappyarrow-up-right (compression library, optional)

  • valgrindarrow-up-right (only needed if running mysql-test-run --valgrind)

  • libcurlarrow-up-right (only needed if you want to use the S3 storage engine)

  • libxml2-devel or libxml-dev

  • boost

  • libaio-devel or libaio-dev

  • systemd-devel or systemd-dev

  • pcre2-devel (optiona, will be automatically downloaded and installed if not on the system)

  • ccache ; Will speed up builds if you are going to use the scripts in the BUILD directory.

  • ctags or universal-ctags ; If you plan to use BUILD scripts and local editors

  • You can install these programs individually through your package manager.

    In addition, some package managers support the use a build dependency command. When using this command, the package manager retrieves a list of build dependencies and install them for you, making it much easier to get started on the compile. The actual option varies, depending on the distribution you use.

    On Ubuntu and Debian you can use the build-dep command.

    Fedora uses the builddep command with DNF.

    If building on Centos 7, use the building MariaDB on Centos instructions.

    With openSUSE and SUSE, you can use the source-install command.

    Each of these commands works off of the release of MariaDB provided in the official software repositories of the given distribution. In some instances and especially in older versions of Linux, MariaDB may not be available in the official repositories. In these cases you can use the MariaDB repositories as an alternative.

    Bear in mind, the release of MariaDB provided by your distribution may not be the same as the version you are trying to install. Additionally, the package managers don't always retrieve all of the packages you need to compile MariaDB. There may be some missed or unlisted in the process. When this is the case, CMake fails during checks with an error message telling you what's missing.

    Note: On Debian-based distributions, you may receive a "You must put some 'source' URIs in your sources.list" error. To avoid this, ensure that /etc/apt/sources.list contains the source repositories.

    For example, for Debian buster:

    Refer to the documentation for your Linux distribution for how to do this on your system.

    After editing the sources.list, do:

    ...and then the above mentioned build-dep command.

    Note: On openSUSE the source package repository may be disabled. The following command will enable it:

    After enabling it, you will be able to run the zypper command to install the build dependencies.

    You should now have your build environment set up and can proceed to Getting the MariaDB Source Code and then using the Generic Build Instructions to build MariadB (or following the steps for your Linux distribution or Creating a MariaDB Binary Tarball).

    hashtag
    See Also

    This page is licensed: CC BY-SA / Gnu FDL

    Building MariaDB on Ubuntu
    Building MariaDB on CentOS
    Building MariaDB on Gentoo
    gitarrow-up-right
    spinner
    MariaDB 10.11arrow-up-right
    Linux Build Environmentarrow-up-right
    building RPM packages from source
    spinner

    Differences in MariaDB in Debian (and Ubuntu)

    Explains the differences between official Debian/Ubuntu repository packages and those from MariaDB.org, particularly regarding library linking and configuration defaults.

    The .deb packages provided by MariaDB Foundation's and MariaDB Corporation's repositories are not identical to the official .deb packages provided by Debian's and Ubuntu's default repositories.

    The packages provided by MariaDB Foundation's and MariaDB Corporation's repositories are generated using the Debian packaging in MariaDB's official source code. The Debian packaging scripts are specifically in the debian/ directory.

    The packages provided by Debian's and Ubuntu's default repositories are generated using the Debian packaging in Debian's mirror of MariaDB's source code, which contains some custom changes. The source tree can be found here:

    As a consequence, MariaDB behaves a bit differently if it is installed from Debian's and Ubuntu's default repositories.

    hashtag
    Option File Locations

    • The located at /etc/mysql/my.cnf is handled by the mechanism when the mysql-common package is installed. It is a symbolic link that references either mysql.cnf or mariadb.cnf depending on whether MySQL or MariaDB is installed. Most of the MariaDB are therefore actually located in /etc/mysql/mariadb.d/.

    hashtag
    System Variables

    Since there is no system variable difference from the Standard MariaDB.

    Variable
    MariaDB in Debian
    Standard MariaDB
    Notes

    hashtag
    Options

    Option
    MariaDB in Debian
    Standard MariaDB
    Notes

    hashtag
    TLS

    • MariaDB binaries from packages provided by Debian's and Ubuntu's default repositories are linked with a different TLS library than MariaDB binaries from packages provided by MariaDB Foundation's and MariaDB Corporation's repositories.

    • MariaDB Server binaries:

      • MariaDB Server is statically linked with the bundled libraries in packages provided by Debian's and Ubuntu's default repositories.

    hashtag
    Authentication

    • The authentication plugin is installed by default in new installations that use the packages provided by Debian's default repositories in Debian 9 and later and Ubuntu's default repositories in Ubuntu 15.10 and later.

    • The root@localhost created by will also be created to authenticate via the authentication plugin in these builds.

    hashtag
    See Also

    hashtag
    More Information

    For details, check out the Debian and Ubuntu official repositories:

    This page is licensed: CC BY-SA / Gnu FDL

    Upgrade MariaDB Enterprise Server from 10.6 to 11.4

    The upgrade guide details the standard upgrade path from MariaDB Enterprise Server 10.6 to MariaDB Enterprise Server 11.4. The upgrade process involves significant changes, particularly to the query optimizer, which was rewritten in version 11.0. While performance is generally improved, query execution plans may change.

    This guide provides two strategies:

    1. Standard In-Place Upgrade: The direct procedure for upgrading an existing node.

    2. Staged Rollout (Recommended for Mission-Critical Systems): A low-risk approach using replication and validation.

    Installing MariaDB on macOS

    How to install MariaDB Server on macOS using the Homebrew package manager, including starting the service and securing the installation.

    MariaDB Server is available for installation on macOS via the package manager. MariaDB Server (together with many client programs and helper tools) is available as a Homebrew "bottle", a precompiled package. If you haven't yet installed Homebrew, .

    hashtag
    Installing & Starting MariaDB

    Install MariaDB Server:

    circle-info

    Building MariaDB on Windows

    Guide to building MariaDB on Windows using Visual Studio, CMake, and Git, including creating ZIP and MSI packages.

    hashtag
    Build Requirements

    To build MariaDB you need the following:

    • : We currently support Visual Studio 2019 and 2022. Generally we try to support the two most recent VS versions, but build ourselves using the last one. Community editions will work fine; we only use them in our builds. While installing Visual Studio, make sure to add "Desktop Development with C++". Also, make sure to use

    rsync -avP rsync://rsync.it-infrastrukturen.org/ftp/public-mariadb/<image_or_file_name_as_above> .
    groupadd mysql
    useradd -g mysql mysql
    cd /usr/local
    tar -zxvpf /path-to/mariadb-VERSION-OS.tar.gz
    ln -s mariadb-VERSION-OS mysql
    cd mysql
    ./scripts/mariadb-install-db --user=mysql
    chown -R root .
    chown -R mysql data
    ./bin/mariadbd-safe --user=mysql &
    or
    ./bin/mariadbd-safe --defaults-file=~/.my.cnf --user=mysql &
    export PATH=$PATH:/usr/local/mysql/bin/
    cd /usr/local
    gunzip < /path-to/mariadb-VERSION-OS.tar.gz | tar xf -
    ln -s mariadb-VERSION-OS mysql
    cd mysql
    ./scripts/mariadb-install-db --defaults-file=~/.my.cnf
    tar xfz /path-to/mariadb-VERSION-OS.tar.gz
    ./bin/mariadbd-safe --defaults-file=~/.my.cnf &
    cp support-files/mysql.server /etc/init.d/mysql.server
    cp support-files/systemd/mariadb.service /usr/lib/systemd/system/mariadb.service
    mkdir /etc/systemd/system/mariadb.service.d/
    
    cat > /etc/systemd/system/mariadb.service.d/datadir.conf <<EOF
    [Service]
    ReadWritePaths=/usr/local/mysql/data
    EOF
    
    systemctl daemon-reload
    systemctl start mariadb.service
    systemctl stop mariadb.service
    systemctl enable mariadb.service
    # apt build-dep mariadb-server
    # dnf builddep mariadb-server
    # zypper source-install -d mariadb
    deb http://ftp.debian.org/debian buster main contrib
    deb http://security.debian.org buster/updates main contrib
    deb-src http://ftp.debian.org/debian buster main contrib
    deb-src  http://security.debian.org buster/updates main contrib
    sudo apt update
    sudo zypper mr -er repo-source
    yum install yum-utils
    yum-builddep mariadb-server
    yum install git
    yum install gcc
    yum install gcc-c++
    yum install tar make cmake
    yum install bison
    yum install ncurses-devel
    yum install openssl openssl-devel
    yum install snappy snappy-devel
    yum install valgrind
    yum install libcurl-devel
    yum install gzip
    yum install zlib-devel
    yum install lz4-devel
    yum install lzo-devel
    yum install bzip2-devel
    yum install libxml2-devel
    yum install libevent-devel
    yum install libaio-devel
    yum install boost
    yum install pcre2-devel
    yum install systemd-devel
    yum install rpm-build
    yum install libaio-devel
    yum install zstd
    yum install pam-devel
    yum install checkpolicy
    yum install policycoreutils-python
    yum install galera.x86_64
    yum install ccache
    yum install cpan
    # Complete Perl installing with the next command. Use the default answer to all questions
    cpan App::cpanminus
    $ git clone --branch 10.11 https://github.com/MariaDB/server.git
    $ cmake -DRPM=centos7 server/
    $ umask 0022
    $ make package
    ./BUILD/compile-pentium64-debug
    $ ls ../*.rpm
    ../MariaDB-shared-10.1.17-centos7-x86_64.rpm
    ../MariaDB-shared-5.3.12-122.el5.x86_64.rpm
    $ cmake -DRPM=centos7 .
    ...
    Using ../MariaDB-shared-5.3.12-122.el5.x86_64.rpm to build MariaDB-compat
    Using ../MariaDB-shared-10.1.17-centos7-x86_64.rpm to build MariaDB-compat
    $ rm CMakeCache.txt
    any number of different MariaDB installations

    has dominant effect hence removal from Debian default settings

    In contrast, MariaDB Server is dynamically linked with the system's OpenSSLarrow-up-right libraries in .deb packages provided by MariaDB Foundation and MariaDB Corporation.

  • MariaDB client and utility binaries:

    • MariaDB's clients and utilities and are dynamically linked with the system's GnuTLSarrow-up-right libraries in .deb packages provided by Debian's and Ubuntu's default repositories. libmysqlclientarrow-up-right is still statically linked with the bundled wolfSSLarrow-up-right libraries.

    • MariaDB's clients and utilities and are dynamically linked with the system's GnuTLSarrow-up-right libraries in .deb packages provided by Debian's and Ubuntu's default repositories. libmysqlclientarrow-up-right is still statically linked with the bundled yaSSLarrow-up-right libraries.

    • In contrast, MariaDB's clients and utilities, , and are dynamically linked with the system's libraries in packages provided by MariaDB Foundation's and MariaDB Corporation's repositories.

  • See TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

  • character_set_server

    utf8mb4

    latin1 (for <= )

    also defaults to utf8mb4 hence no difference for this version and greater

    collation_server

    utf8mb4_general_ci (for < )

    plugin-load-add

    auth_socket.so

    -

    Before , MariaDB did not enable the unix_socket authentication plugin by default.This is default in Debian, allowing passwordless login.

    mariadb-serverarrow-up-right
    option file
    update-alternativesarrow-up-right
    option files
    .deb
    .deb
    wolfSSLarrow-up-right
    .deb
    unix_socketarrow-up-right
    .deb
    mariadb-install-db
    unix_socket
    Moving from MySQL to MariaDB in Debian 9
    search?keywords=mariadb-server&searchon=names&suite=all§ion=allarrow-up-right
    search?keywords=mariadb-server&searchon=names&suite=all§ion=allarrow-up-right
    spinner

    latin1_swedish_ci

    Prerequisite: .

    hashtag
    Part 1: Standard In-Place Upgrade Process

    This section details the standard procedure for performing an in-place upgrade. This involves replacing the server binaries while keeping the data directory intact.

    1

    hashtag
    Backup Database

    Before performing any upgrade, it is critical to perform a full backup of your database. MariaDB Backup (mariadb-backup) is recommended for this purpose.

    2

    hashtag
    Modify Repository Configuration

    Update your system's package manager repository to point to MariaDB Enterprise Server 11.4. You will need to regenerate your repository configuration command using the .

    3

    hashtag
    Stop MariaDB Service

    Stop the running mariadbd process to release locks on the data files.

    circle-exclamation

    4

    hashtag
    Uninstall Old Version

    Remove the existing MariaDB 10.6 packages. This removes the binaries but preserves the configuration and data directory.

    5

    hashtag
    Install New Version

    Install the new MariaDB 11.4 packages.

    6

    hashtag
    Update Configuration (Critical)

    Before starting the server, you must update your option files (e.g., my.cnf) to remove unsupported parameters.

    7

    hashtag
    Start MariaDB Service

    Start the new mariadbd process.

    8

    hashtag
    Run mariadb-upgrade (Critical)

    Execute mariadb-upgrade to check and update system tables to be compatible with the new version.

    hashtag
    Part 2: Alternative Strategy: Staged Rollout for Mission-Critical Systems

    For environments sensitive to performance changes or requiring zero downtime, the following staged rollout strategy is recommended.

    1

    hashtag
    Introduce Replica

    Provision a new server with MariaDB Enterprise Server 11.4 and configure it as a Replica of your existing 10.6 Primary server.

    1. Perform Backup on Primary (10.6): Use mariadb-backup to create a consistent, non-blocking physical backup.

    1. Prepare the Backup: Prepare the backup to ensure consistency (this can be done on the Primary or the Replica).

    1. Restore on Replica (11.4): Transfer the backup to the new 11.4 server, stop the service, and restore.

    1. Start and Configure Replication: Start the 11.4 server and configure it to replicate from the 10.6 Primary.

    Log in to the 11.4 Replica and enable replication. (Note: Ensure server_id is unique in my.cnf).

    2

    hashtag
    Validate and Compare (Recommended)

    To proactively catch performance regressions caused by the optimizer rewrite, use MaxScale with the Diff Router(Enterprise feature).

    1. Configure MaxScale Ensure your MaxScale maxscale.cnf

    3

    hashtag
    Shift Read Traffic

    Gradually migrate read-only traffic to the 11.4 replica.

    Update MaxScale Routing If using MaxScale, you can adjust the server weights or maintenance modes to direct read traffic.

    circle-info
    4

    hashtag
    Promote to Primary

    Once the 11.4 replica has been validated under load, promote it to be the Primary node.

    1. Stop Replication on 11.4 Replica

    5

    hashtag
    Shift Application Traffic

    Direct your application traffic to the new 11.4 Primary. Ensure you perform a mariadb-upgrade on the new Primary if it hasn't been run yet (though mariadb-backup restore usually preserves the old system tables, running upgrade is a safety step to ensure system tables are fully compatible with 11.4).

    hashtag
    Part 3: Critical Upgrade Information

    1

    hashtag
    Optimizer Changes and Application Testing

    The Query Optimizer was rewritten in version 11.0. While performance is generally better, query plans can change. It is vital to perform validation (as described in the Staged Rollout section) to catch regressions before production deployment. You should also run ANALYZE TABLE on major tables after upgrading to update statistics.

    2

    hashtag
    Required Configuration Changes

    The following variables must be addressed in your configuration files (my.cnf) to prevent startup failures or warnings:

    • optimizer_adjust_secondary_key_costs: MUST REMOVE. This variable has no effect in 11.4 as features are integrated into the new cost model.

    3

    hashtag
    Backward Replication Compatibility

    You can replicate from a MariaDB 11.4 Primary to a MariaDB 10.6 Replica (Backward Replication) under specific conditions:

    • No new features specific to 11.4 (e.g., new JSON functions,

    4

    hashtag
    System-Versioned Tables Conversion

    If using System-Versioned Tables, the row_end column format must be updated to support the extended TIMESTAMP range (up to year 2106).

    This can take several minutes to complete, depending on hardware, network, and other factors.

    Start MariaDB Server:

    Alternatively, and strongly recommended, automatically start MariaDB Server:

    circle-info

    Automatically starting MariaDB server installs a background service on macOS. Make sure to allow adding that background service. See this section for more information.

    hashtag
    Connecting to MariaDB Server

    After MariaDB Server has started, you can connect to the server using the shell user name (see this section for information on the user):

    Alternatively, connect as root:

    For graphical clients you can use instead of the mariadb command-line client, see this section.

    hashtag
    Upgrading MariaDB

    Update Homebrew packages:

    Then upgrade MariaDB Server:

    hashtag
    Notes & Further Information

    hashtag
    Homebrew Installation

    Install Homebrew like this:

    1. Open a Terminal (⌘ + Space to open Spotlight, type Terminal).

    2. Issue this command: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

      1. Alternatively, use the package installer (.pkg; at the time of writing this, )

    3. Refer to the for more information, particularly to the .

    hashtag
    MariaDB Configuration

    In Homebrew, the configuration file for MariaDB is located at:

    • /usr/local/etc/my.cnf for Intel-based Macs.

    • /opt/homebrew/etc/my.cnf for Apple Silicon Macs (ARM architecture).

    hashtag
    MariaDB Information

    Find information about the MariaDB version, analytics, and more, using the brew info command:

    hashtag
    MariaDB Programs

    MariaDB Server (mariadbd), the MariaDB command-line client (mariadb), and many more clients and tools are installed in /opt/homebrew/Cellar/mariadb (for Apple Silicon Macs). Find the location for your machine, as well as the MariaDB programs installed, with these commands:

    hashtag
    Terminal User & MariaDB User

    To find out which user is used, issue these commands in a shell like Terminal:

    hashtag
    macOS Background Service

    If you start MariaDB automatically, a macOS background service is added. You can find the MariaDB background service in System Settings > General > Login Items & Extensions. It's named mariadbd-safe.

    The toggle switch allows you to turn off the automatic start of MariaDB. This prevents MariaDB Server from automatically starting once you reboot macOS.

    To review the resource usage of MariaDB Server, use this command (type q to exit topwhen done):

    hashtag
    Graphical Clients

    MariaDB doesn't offer graphical clients for working with MariaDB Server, but there are many third-party graphical clients, some of which run on macOS. One of those is Beekeeper Studio, a subscription-based client that has a (not too) limited free versionarrow-up-right, though.

    Assuming a standard Homebrew installation of MariaDB, and assuming you connect to MariaDB Server using the standard shell user, configure Beekeeper Studio like this:

    • Connection type: MariaDB

    • Authentication method: Username/Password

    • Connection mode: Socket

    • Socket path: /tmp/mysql.sock

    • Username: (name of the shell user, without the @localhost suffix)

    Once connected to MariaDB Server, you can run queries in Beehive Studio:

    The query shown in this screenshot uses a MariaDB sample database called nation which you can use to get familiar with MariaDB. See this section for more information.

    hashtag
    MariaDB Sample Database

    MariaDB offers a sample database you can use to get familiar with using MariaDB. You can download it here: https://mariadbtutorial.com/wp-content/uploads/2019/10/nation.ziparrow-up-right

    Unzip nation.zip, then import the database into MariaDB Server, using this command (assuming you downloaded and unzipped the sample database in the Downloads folder):

    When done, use that database in the mariadb command-line client, like this:

    Alternatively, open the database in a graphical client.

    hashtag
    Building MariaDB Server from source

    In addition to the "bottled" MariaDB Server package available from Homebrew, you can use Homebrew to build MariaDB from source. This is useful if you want to use a different version of the server or enable some different capabilities that are not included in the bottle package.

    Two components not included in the bottle package are the CONNECT and OQGRAPH engines, because they have non-standard dependencies. To build MariaDB Server with these engines, you must first install boost and judy. Follow these steps to install the dependencies and build the server:

    You can also use Homebrew to build and install a pre-release version of MariaDB Server. Use this command to build and install a "development" version of MariaDB Server:

    hashtag
    Other resources

    • mariadb.rb on githubarrow-up-right

    • MariaDB Server on macOS: Does it even make sense to try?arrow-up-right (video)

    This page is licensed: CC BY-SA / Gnu FDL

    Homebrewarrow-up-right
    see this section
    spinner
    - latest Windows 11 SDK is recommended.
  • CMakearrow-up-right: We recommend the latest release. Older releases might not support your version of Visual Studio. Visual Studio 2019 requires cmake 3.14 at least.

  • Gitarrow-up-right: Required to build newer versions from the source tree.

    • NOTE: run

  • after the installation, otherwise some mtr tests will fail

    In the "Adjusting your PATH" dialog, choose "Use Git from Windows command prompt", otherwise wrong (mingw64) git and perl will be in your PATH

    • Bison from GnuWin32arrow-up-right: Bison creates parts of the SQL parser. Choose "Complete package except sources" when downloading.

      • NOTE: Do not install this into your default path with spaces (e.g. under C:\Program Files\GnuWin32); the build will break due to this bison bugarrow-up-right. Instead, install into C:\GnuWin32.

      • Add C:\GnuWin32\bin to your system PATH after installation.

    • : Used to run the test suite. is another Win32 Perl distribution and should work as well (but it is not as well tested). NOTE: Cygwin or mingw Perl versions will not work for testing. Use Windows native Perl, please.

    • Optional: If you intend to build the MSI packages, install . If you build MSI with 10.4, also modify your Visual Studio installation, add "Redistributable MSMs" (see )

    • , needed if you run mysql-test-run.pl tests.

    Verify that bison.exe, or git.exe, cmake.exe and perl.exe can be found in the PATH environment variable with "where bison", "where git", "where perl" etc. from the command line prompt.

    hashtag
    Building Windows Binaries

    The above instructions assume or higher.

    Branch the MariaDB repository, or unpack the source archive. On the command prompt, switch to your source directory, then execute:

    The above example builds a release configured for 64 bit systems in a subdirectory named bld. "cmake ..." is the configuration step, "cmake --build . --config Relwithdebinfo" is the build step.

    hashtag
    Build Variations

    hashtag
    Debug Builds

    Building Debug version is done with:

    hashtag
    32bit and 64 bit Builds

    hashtag
    Build 64 bit binary

    Visual Studio 2019-2022 cmake generator will use host architecture by default, that is, with the steps above, cmake will build x64 binaries on x64 machine.

    hashtag
    Build 32 bit binary

    pass -A Win32 parameter for cMake, like this

    Historical note: With Visual Studio 2017 and earlier, one had to pass the name of 32bit generator ,e.g cmake .. -G "Visual Studio 15 2017

    For a complete list of available generators, call cmake without any parameters.

    hashtag
    IDE Builds

    Instead of calling "cmake --build" as above, open solution file MariaDB.sln (in older versions, prior to 11.0, MySQL.sln ). When Visual Studio starts, choose Build/Compile.

    hashtag
    Building the ZIP Package

    This is how it is "done by the book", standard cmake target.

    MariaDB however uses non-standard target win_package for the packaging for its releases, it generates 2 ZIPs, a slim one with executables, and another one with debuginfo (.PDB files). The debuginfo is important to be able to debug released binaries, and to analyze crashes.

    hashtag
    Building the MSI Package

    hashtag
    Including HeidiSQL in the MSI Installer

    Starting with , it is possible to build an installer which includes 3rd party products, as described in MWL#200arrow-up-right. Currently only HeidiSQLarrow-up-right support is implemented; it is also included in the official builds. Use the CMake parameter-DWITH_THIRD_PARTY=HeidiSQL to include it in the installer.

    hashtag
    Code Signing

    MariaDB builds optionally support authenticode code signing with an optional parameter SIGNCODE. Use cmake -DSIGNCODE=1 during the configuration step to sign the binaries in the ZIP and MSI packages.

    Important: for SIGNCODE=1 to work, the user that runs the build needs to install a valid authenticode digital certificate into their certificate store, otherwise the packaging step will fail.

    hashtag
    Building Packages for MariaDB Releases

    The full script to create the release in an out-of-source build with Visual Studio with signed binaries might look like:

    This command sequence will produce a ZIP package (e.g mariadb-5.2.6-win32.zip) and MSI package (e.g mariadb-5.2.6-win32.msi) in the bld directory.

    hashtag
    Running Tests

    • Important: Do not use Cygwin bash, MinGW bash, Git bash, WSL bash, or any other bash when running the test suite. You will then very likely use the wrong version of Perl too (a "Unix-flavoured" one on Windows), and spend a lot of time trying to figure out why this version of Perl does not work for the test suite. Use native perl, in cmd.exe , or powershell instead,

    • Switch mysql-test subdirectory of the build directory

    • Run the test suite

    hashtag
    Running a Test Under Debugger

    Assuming VS is installed on the machine

    If vsjitdebugger does not start, you can edit AeDebug registry key as mentioned in

    debug-using-the-just-in-time-debugger?view=vs-2019#jit_errorsarrow-up-right

    Alternatively:

    (devenv.exe needs to be in PATH)

    or, if you prefer WinDBG

    This page is licensed: CC BY-SA / Gnu FDL

    Visual C++arrow-up-right
    recent enough Windows SDKarrow-up-right
    spinner

    Upgrade MariaDB Enterprise Server from 11.4.X to 11.4.Y

    Instructions for upgrading to MariaDB Enterprise Server 11.4, which introduces new data types like UUID and INET4, advanced JSON functions, and non-blocking online schema changes.

    These instructions detail a minor release upgrade with MariaDB Enterprise Server 11.4 on a range of .

    A minor release upgrade is a change from an earlier release of MariaDB Enterprise Server 11.4 to a later release in the same release series.

    For example, it would be a minor release upgrade to upgrade from MariaDB Enterprise Server 11.4.4-2 to MariaDB Enterprise Server 11.4.5-3.

    hashtag
    Data Backup

    Upgrade MariaDB Enterprise Server from 10.6.X to 10.6.Y

    Upgrade documentation for MariaDB Enterprise Server 10.6, featuring Atomic DDL support, JSON_TABLE function, improved Oracle compatibility modes, and the removal of older storage engines.

    These instructions detail a minor release upgrade with MariaDB Enterprise Server 10.6 on a range of .

    A minor release upgrade is a change from an earlier release of MariaDB Enterprise Server 10.6 to a later release in the same release series.

    For example, it would be a minor release upgrade to upgrade from MariaDB Enterprise Server 10.6.20-16 to MariaDB Enterprise Server 10.6.21-17.

    hashtag
    Data Backup

    Upgrade MariaDB Enterprise Server from 10.5.X to 10.5.Y

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    These instructions detail a minor release upgrade with MariaDB Enterprise Server 10.5 on a range of supported Operating Systems.

    A minor release upgrade is a change from an earlier release of MariaDB Enterprise Server 10.5 to a later release in the same release series.

    For example, it would be a minor release upgrade to upgrade from MariaDB Enterprise Server 10.5.27-21 to MariaDB Enterprise Server 10.5.28-22.

    hashtag
    Data Backup

    Installing MariaDB with yum/dnf

    How to install MariaDB on systems that use the yum or dnf package managers

    On RHEL, CentOS, Fedora, and other similar Linux RPM based distributions, these provide MariaDB packages. These are supported by those distributions. If you have a particular need for a later version than what is in the distribution, then MariaDB provides repositories for them.

    Using repositories rather than installing RPM allows for an ease of update when a new release is made. It is highly recommended to install the relevant from MariaDB's repository using or . Centos 7 still uses yum, most others use dnf, and SUSE/openSUSE use zypper.

    This page walks you through the simple installation steps using dnf and yum

    Installing MariaDB with zypper

    Detailed steps for installing MariaDB on SLES and OpenSUSE using the `zypper` package manager, including repository configuration and package installation.

    On SLES, OpenSUSE, and other similar Linux distributions, it is highly recommended to install the relevant from MariaDB's repository using .

    This page walks you through the simple installation steps using zypper.

    hashtag
    Adding the MariaDB ZYpp repository

    We currently have ZYpp repositories for the following Linux distributions:

    # Example backup command
    sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    brew install mariadb
    mysql.server start
    brew services start mariadb
    mariadb
    sudo mysql -u root
    brew update
    brew upgrade mariadb
    ~> brew info mariadb
    ==> mariadb: stable 12.1.2 (bottled)
    Drop-in replacement for MySQL
    https://mariadb.org/
    ...
    To restart mariadb after an upgrade:
      brew services restart mariadb
    Or, if you don't want/need a background service you can just run:
      /opt/homebrew/opt/mariadb/bin/mariadbd-safe --datadir\=/opt/homebrew/var/mysql
    ==> Analytics
    install: 6,319 (30 days), 12,735 (90 days), 62,444 (365 days)
    install-on-request: 6,291 (30 days), 12,670 (90 days), 62,137 (365 days)
    build-error: 8 (30 days)
    ~> which mariadb
    /opt/homebrew/bin/mariadb # in the next command, use this location to cd to
    ~> cd /opt/homebrew/bin/; ls -1 maria*
    mariabackup
    mariadb
    mariadb-access
    ...
    mariadbd
    mariadbd-multi
    mariadbd-safe
    mariadbd-safe-helper
    ~> users
    myuser
    ~> mariadb -e "SELECT USER()"
    +------------------+
    | USER()           |
    +------------------+
    | myuser@localhost |
    +------------------+
    top -pid $(pgrep mariadbd)
    mariadb < Downloads/nation.sql
    ~> mariadb nation
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 14
    Server version: 12.1.2-MariaDB Homebrew
    
    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 [nation]> SHOW TABLES;
    +-------------------+
    | Tables_in_nation  |
    +-------------------+
    | continents        |
    | countries         |
    | country_languages |
    | country_stats     |
    | guests            |
    | languages         |
    | region_areas      |
    | regions           |
    | vips              |
    +-------------------+
    9 rows in set (0.001 sec)
    brew install boost judy
    brew install mariadb --build-from-source
    brew install mariadb --devel
    git config --global core.autocrlf input
    mkdir bld
    cd bld
    cmake ..
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake .. -A Win32
    cmake --build . --config relwithdebinfo --target package
    cmake --build . --config relwithdebinfo --target win_package
    cmake --build . --config relwithdebinfo 
    cmake --build . --config relwithdebinfo --target MSI
    mkdir bld
    cd bld
    cmake .. -DSIGNCODE=1 -DWITH_THIRD_PARTY=HeidiSQL
    cmake --build . --config relwithdebinfo --target win_package
    cmake --build . --config relwithdebinfo  --target MSI
    cd C:\server\bld\mysql-test
    perl mysql-test-run.pl --suite=main --parallel=auto
    perl mysql-test-run.pl  <test_name> --vsjitdebugger
    perl mysql-test-run.pl  <test_name> --devenv
    perl mysql-test-run.pl  <test_name> --windbg
    https://github.com/Homebrew/brew/releases/download/5.0.4/Homebrew-5.0.4.pkgarrow-up-right
    Homebrew websitearrow-up-right
    Homebrew documentationarrow-up-right
    Ensure innodb_fast_shutdown is set to 1 and check for open XA transactions before stopping.
    Remove innodb_defragment: This variable and its associated options (e.g., innodb_defragment_fill_factor) have been removed.
  • Remove optimizer_adjust_secondary_key_costs: This variable has no effect in 11.4 and must be removed.

  • Check innodb_flush_method: This variable is deprecated in 11.4.

  • defines both the existing service (routing to 10.6) and the new 11.4 server definition.
  • Create the Diff Service Use maxctrl to create a "Diff" service that compares the output of your existing production server against the new 11.4 replica.

  • 3. Analyze Results MaxScale will generate JSON reports in its log directory (e.g., /var/lib/maxscale/diff/). Analyze these files to identify queries that return different results or have significantly higher latency on the 11.4 server.

    Alternatively, update your application connection strings to point to the 11.4 Replica's IP for reporting modules.

    Enable Writes on 11.4 New Primary

    1. Direct Traffic Update MaxScale or your application configuration to point to the new 11.4 Primary.

    innodb_defragment: MUST REMOVE. This variable has been removed.

  • des_encrypt / des_decrypt: Functions have been removed.

  • UUID
    data type) are used in DML or DDL.
  • The variable binlog_alter_two_phase must be set to 0 (default) on the 11.4 Primary.

  • Use the new --update-history option with mariadb-dump to convert row_end values during export.

    Use ALTER TABLE to convert the tables after upgrade.

    ALTER TABLE my_table FORCE;
    MariaDB Customer Download Tokenarrow-up-right
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply --mariadb-server-version="11.4"
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply --mariadb-server-version="11.4"
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply --mariadb-server-version="11.4"
    sudo apt-get remove "mariadb-*" galera-enterprise-4
    sudo yum remove "MariaDB-*" galera-enterprise-4
    sudo apt-get install mariadb-server mariadb-backup galera-enterprise-4
    sudo yum install MariaDB-server MariaDB-backup
    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Stop the MariaDB Server Process

    Before the new version can be installed, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 11.4.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Update MariaDB Enterprise Server and package dependencies:

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3, ES10.2):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    spinner

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Stop the MariaDB Server Process

    Before the new version can be installed, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.6.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Update MariaDB Enterprise Server and package dependencies:

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3, ES10.2):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    spinner
    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Stop the MariaDB Server Process

    Before the new version can be installed, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 11.4.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Update MariaDB Enterprise Server and package dependencies:

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3, ES10.2):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    spinner
    .

    hashtag
    Adding the MariaDB YUM repository

    We currently have YUM/DNF repositories for the following Linux distributions, and for the versions that are in standard (not extended) support:

    • Red Hat Enterprise Linux (RHEL)

    • CentOS

    • Fedora

    • openSUSE

    • SUSE

    hashtag
    Using the MariaDB Package Repository Setup Script

    MariaDB provides two helpful scripts for setting up repositories, one for MariaDB Community Server named mariadb_repo_setup, and one for MariaDB Enterprise Server named mariadb_es_repo_setup.

    See the Using MariaDB Corporation's Repository Setup Scripts section on the MariaDB Package Repository Setup and Usage page for information on using these scripts.

    hashtag
    Using the MariaDB Foundation Repository Configuration Tool

    Visit https://mariadb.org/download/?t=repo-configarrow-up-right and follow the instructions from there. It will ask for your Linux distribution, desired MariaDB version, and the mirror to use, and will show what files to edit and what commands to run to configure a repository.

    hashtag
    Pinning the MariaDB Repository to a Specific Minor Release

    If you wish to pin your yum or dnf repository to a specific minor release, or if you would like to downgrade to a specific minor release, then you can configure a repository with the URL hard-coded to that specific minor release.

    If you used MariaDB Corporation's mariadb_repo_setup or mariadb_es_repo_setup scripts to generate your repository configuration, simply re-run the script and specify the full version number to use with the --mariadb-server-version option.

    See Pinning the Repository to a Specific Minor Release on the MariaDB Package Repository Setup and Usage page for details.

    The full list of MariaDB Enterprise Server releases can be found on the page.

    If you used the MariaDB Foundation's Repository Configuration toolarrow-up-right, then you need to update the repository file you created to include the full version number to use on the baseurl line.

    By default the Foundation's tool configures repositories with just the main series of MariaDB, e.g. mariadb-11.8, and to pin to a specific version you need to specify the full version, for example mariadb-11.8.6.

    The full list of MariaDB Community Server releases can be found on the page.

    For example, to pin your repository to MariaDB 11.8.6 on RHEL/Alma/Rocky 8, 9, or 10, then you could use the following repository configuration in /etc/yum.repos.d/MariaDB.repo:

    After updating the repository configuration, it is a good idea to clean the repository metadata with:

    hashtag
    Updating the MariaDB YUM repository to a New Major Release

    MariaDB's yum repository can be updated to a new major release. How this is done depends on how you originally configured the repository.

    hashtag
    Updating the Major Release with the MariaDB Package Repository Setup Script

    If you configured yum to install from MariaDB Corporation's MariaDB Package Repository by using the MariaDB Package Repository setup script, then you can update the major release that the repository uses by running the script again.

    hashtag
    Updating the Major Release with the MariaDB Repository Configuration Tool

    If you configured yum to install from MariaDB Foundation's MariaDB Repository by using the MariaDB Repository Configuration Toolarrow-up-right, then you can update the major release that the repository uses by updating the yum repository configuration file in-place. For example, if you wanted to change the repository from MariaDB 10.6arrow-up-right to MariaDB 10.11arrow-up-right, and if the repository configuration file was at /etc/yum.repos.d/MariaDB.repo, then you could execute the following:

    After that, the repository should refer to MariaDB 10.11arrow-up-right.

    If the yum repository is pinned to a specific minor release, then the above sed command can result in an invalid repository configuration. In that case, the recommended options are:

    • Edit the MariaDB.repo repository file manually.

    • Or delete the MariaDB.repo repository file, and then install the repository of the new version with the more robust MariaDB Package Repository setup script.

    hashtag
    The MariaDB GPG Key

    See the GPG page for information on the various keys used by MariaDB.

    hashtag
    Installing MariaDB Packages with YUM/DNF

    After the dnf/yum repository is configured, you can install MariaDB by executing the dnfarrow-up-right or yumarrow-up-right command. The specific command that you would use would depend on which specific packages that you want to install.

    hashtag
    Installing the Most Common Packages

    To Install the most common packages, execute the following command:

    hashtag
    Installing MariaDB Server

    To Install MariaDB Server, execute the following command:

    hashtag
    Installing MariaDB Galera Cluster with YUM

    The process to install MariaDB Galera Cluster with the MariaDB yum repository is practically the same as installing standard MariaDB Server.

    You need to install the galera-4 package to obtain the Galera 4 wsrep provider library.

    To install MariaDB Galera Cluster, you could execute the following command:

    If you haven't yet imported the MariaDB GPG public key, then yum will prompt you to import it after it downloads the packages, but before it prompts you to install them.

    See MariaDB Galera Cluster for more information on MariaDB Galera Cluster.

    hashtag
    Installing MariaDB Clients and Client Libraries with YUM

    has been included as the client library (staticly linked). However, the package name for the client library has not been changed.

    To Install the clients and client libraries, execute the following command:

    If you want compile your own programs against MariaDB Connector/C, execute the following command:

    hashtag
    Installing mariadb-backup with YUM

    To install mariadb-backup, execute the following command:

    hashtag
    Installing Plugins with YUM

    Some plugins may also need to be installed.

    For example, to install the cracklib_password_check password validation plugin, execute the following command:

    hashtag
    Installing Debug Info Packages with YUM

    The MariaDB yum repository also contains debuginfoarrow-up-right packages. These package may be needed when .

    hashtag
    Installing Debug Info for the Most Common Packages with YUM

    To install debuginfoarrow-up-right for the most common packages, execute the following command:

    All packages have their debuginfo by appending -debuginfo to the package name.

    hashtag
    Installing Debug Info for MariaDB Server with YUM

    To install debuginfoarrow-up-right for MariaDB Server, execute the following command:

    hashtag
    Installing Older Versions from the Repository

    The MariaDB yum repository contains the last few versions of MariaDB. To show what versions are available, use the following command:

    The output shows the available versions. For example:

    The MariaDB repository in this example contains MariaDB 12.1.2, 12.0.2, and 11.8.2; and the appstream repository contains MariaDB 10.3.39.

    To install an older version of a package instead of the latest version we just need to specify the package name, a dash, and then the version number. And we only need to specify enough of the version number for it to be unique from the other available versions.

    However, when installing an older version of a package, if dependencies need to be installed, then it will automatically choose to install the latest versions of those packages, which can sometimes break those dependencies. To ensure that all MariaDB packages are on the same version in this scenario, it is necessary to specify them all.

    The MariaDB packages that the MariaDB-server package depend on are: MariaDB-client, MariaDB-shared, and MariaDB-common. Therefore, to install MariaDB 12.0.2 from this yum repository, we could do the following (putting the version in a variable and each package on its own line so things are cleaner):

    For MariaDB Enterprise it is necessary to specify the release part of the version number as well, but with an underscore (_) instead of a dash (-), as that is how dnf/yum see the version number. For example, for MariaDB Enterprise Server 11.8.5-2 you would specify the version as 11.8.5_2. For example:

    The rest of the install and setup process is as normal.

    hashtag
    After Installation

    After the installation is complete, you can start MariaDB with:

    If you are using MariaDB Galera Cluster, then keep in mind that the first node will have to be .

    This page is licensed: CC BY-SA / Gnu FDL

    RPM packages
    yumarrow-up-right
    dnfarrow-up-right
    spinner
    • SUSE Linux Enterprise Server (SLES) 12

    • SUSE Linux Enterprise Server (SLES) 15

    • OpenSUSE 15

    • OpenSUSE 42

    hashtag
    Using the MariaDB Package Repository Setup Script

    If you want to install MariaDB with zypper, then you can configure zypper to install from MariaDB Corporation's MariaDB Package Repository by using the MariaDB Package Repository setup script.

    MariaDB Corporation provides a MariaDB Package Repository for several Linux distributions that use zypper to manage packages. This repository contains software packages related to MariaDB Server, including the server itself, clients and utilities, client libraries, plugins, and mariadb-backuparrow-up-right. The MariaDB Package Repository setup script automatically configures your system to install packages from the MariaDB Package Repository.

    To use the script, execute the following command:

    Note that this script also configures a repository for MariaDB MaxScale and a repository for MariaDB Tools, which currently only contains Percona XtraBackup and its dependencies.

    See MariaDB Package Repository Setup and Usage for more information.

    hashtag
    Using the MariaDB Repository Configuration Tool

    If you want to install MariaDB with zypper, then you can configure zypper to install from MariaDB Foundation's MariaDB Repository by using the MariaDB Repository Configuration Toolarrow-up-right.

    The MariaDB Foundation provides a MariaDB repository for several Linux distributions that use zypper to manage packages. This repository contains software packages related to MariaDB Server, including the server itself, clients and utilities, client libraries, plugins, and mariadb-backuparrow-up-right. The MariaDB Repository Configuration Tool can easily generate the appropriate commands to add the repository for your distribution.

    For example, if you wanted to use the repository to install MariaDB 10.6arrow-up-right on SLES 15, then you could use the following commands to add the MariaDB zypper repository:

    hashtag
    Pinning the MariaDB Repository to a Specific Minor Release

    If you wish to pin the zypper repository to a specific minor release, or if you would like to downgrade to a specific minor release, then you can create a zypper repository with the URL hard-coded to that specific minor release.

    If you used MariaDB Corporation's mariadb_repo_setup or mariadb_es_repo_setup scripts to generate your repository configuration, simply re-run the script and specify the full version number to use with the --mariadb-server-version option.

    See Pinning the Repository to a Specific Minor Release on the MariaDB Package Repository Setup and Usage page for details.

    The full list of MariaDB Enterprise Server releases can be found on the page.

    If you used the MariaDB Foundation's Repository Configuration toolarrow-up-right, then you need to update the repository file you created to include the full version number to use on the baseurl line.

    By default the Foundation's tool configures repositories with just the main series of MariaDB, e.g. mariadb-11.8, and to pin to a specific version you need to specify the full version, for example mariadb-11.8.6.

    The full list of MariaDB Community Server releases can be found on the page.

    For example, to pin your repository to MariaDB 11.8.6 on SLES 15, then you could use the following commands to add the MariaDB zypper repository:

    hashtag
    Updating the MariaDB ZYpp repository to a New Major Release

    MariaDB's zypper repository can be updated to a new major release. How this is done depends on how you originally configured the repository.

    hashtag
    Updating the Major Release with the MariaDB Package Repository Setup Script

    If you configured zypper to install from MariaDB Corporation's MariaDB Package Repository by using the MariaDB Package Repository setup script, then you can update the major release that the repository uses by running the script again.

    hashtag
    Updating the Major Release with the MariaDB Repository Configuration Tool

    If you configured zypper to install from MariaDB Foundation's MariaDB Repository by using the MariaDB Repository Configuration Toolarrow-up-right, then you can update the major release that the repository uses by removing the repository for the old version and adding the repository for the new version.

    First, you can remove the repository for the old version by executing the following command:

    After that, you can add the repository for the new version. For example, if you wanted to use the repository to install MariaDB 10.6arrow-up-right on SLES 15, then you could use the following commands to add the MariaDB zypper repository:

    After that, the repository should refer to MariaDB 10.6arrow-up-right.

    hashtag
    Importing the MariaDB GPG Public Key

    Before MariaDB can be installed, you also have to import the GPG public key that is used to verify the digital signatures of the packages in our repositories. This allows the zypper and rpm utilities to verify the integrity of the packages that they install.

    See the GPG page for information on the various keys used by MariaDB.

    The rpmarrow-up-right utility can be used to import this key. For example:

    Once the GPG public key is imported, you are ready to install packages from the repository.

    hashtag
    Installing MariaDB Packages with ZYpp

    After the zypper repository is configured, you can install MariaDB by executing the zypperarrow-up-right command. The specific command that you would use would depend on which specific packages that you want to install.

    hashtag
    Installing the Most Common Packages with ZYpp

    To Install the most common packages, execute the following command:

    hashtag
    Installing MariaDB Server with ZYpp

    To Install MariaDB Server, execute the following command:

    hashtag
    Installing MariaDB Galera Cluster with ZYpp

    The process to install MariaDB Galera Cluster with the MariaDB zypper repository is practically the same as installing standard MariaDB Server.

    Galera Cluster support has been included in the standard MariaDB Server packages, so you will need to install the MariaDB-server package, as you normally would.

    You also need to install the galera-4 package to obtain the Galera 4 wsrep provider library.

    To install MariaDB Galera Cluster, you could execute the following command:

    If you haven't yet imported the MariaDB GPG public key, then zypper will prompt you to import it after it downloads the packages, but before it prompts you to install them.

    See MariaDB Galera Cluster for more information on MariaDB Galera Cluster.

    hashtag
    Installing MariaDB Clients and Client Libraries with ZYpp

    has been included as the client library. However, the package name for the client library has not been changed.

    To Install the clients and client libraries, execute the following command:

    hashtag
    Installing mariadb-backup with ZYpp

    To install mariadb-backuparrow-up-right, execute the following command:

    hashtag
    Installing Plugins with ZYpp

    Some plugins may also need to be installed.

    For example, to install the cracklib_password_check password validation plugin, execute the following command:

    hashtag
    Installing Debug Info Packages with ZYpp

    The MariaDB zypper repository also contains debuginfoarrow-up-right packages. These package may be needed when .

    hashtag
    Installing Debug Info for the Most Common Packages with ZYpp

    To install debuginfoarrow-up-right for the most common packages, execute the following command:

    hashtag
    Installing Debug Info for MariaDB Server with ZYpp

    To install debuginfoarrow-up-right for MariaDB Server, execute the following command:

    hashtag
    Installing Debug Info for MariaDB Clients and Client Libraries with ZYpp

    has been included as the client library. However, the package name for the client library has not been changed.

    To install debuginfoarrow-up-right for the clients and client libraries, execute the following command:

    hashtag
    Installing Debug Info for mariadb-backup with ZYpp

    To install debuginfoarrow-up-right for mariadb-backuparrow-up-right, execute the following command:

    hashtag
    Installing Debug Info for Plugins with ZYpp

    For some plugins, debuginfoarrow-up-right may also need to be installed.

    For example, to install debuginfoarrow-up-right for the cracklib_password_check password validation plugin, execute the following command:

    hashtag
    Installing Older Versions from the Repository

    The MariaDB zypper repository contains the last few versions of MariaDB. To show what versions are available, use the following command:

    In the output you will see the available versions.

    To install an older version of a package instead of the latest version we just need to specify the package name, a dash, and then the version number. And we only need to specify enough of the version number for it to be unique from the other available versions.

    However, when installing an older version of a package, if zypper has to install dependencies, then it will automatically choose to install the latest versions of those packages. To ensure that all MariaDB packages are on the same version in this scenario, it is necessary to specify them all.

    The packages that the MariaDB-server package depend on are: MariaDB-client, MariaDB-shared, and MariaDB-common. Therefore, to install MariaDB 10.6.21arrow-up-right from this zypper repository, we would do the following:

    The rest of the install and setup process is as normal.

    hashtag
    After Installation

    After the installation is complete, you can start MariaDB.

    If you are using MariaDB Galera Cluster, then keep in mind that the first node will have to be .

    This page is licensed: CC BY-SA / Gnu FDL

    RPM packages
    zypperarrow-up-right
    spinner
    libmysqlclientarrow-up-right
    OpenSSLarrow-up-right
    .deb
    character_set_collations
    Strawberry perlarrow-up-right
    ActiveState Perlarrow-up-right
    Windows Installer XMLarrow-up-right
    MDEV-22555arrow-up-right
    Gnu Diffarrow-up-right

    Installing MariaDB MSI Packages on Windows

    Complete MariaDB installation guide. Complete setup instructions for Linux, Windows, and macOS with configuration and verification for production use.

    MSI packages is available for x64 (64 bit) processor architectures and, in some older releases only, for x86 (32 bit). We use screenshots from an x64 installation in the following.

    hashtag
    Installation UI

    This is the typical mode of installation. To start the installer, click on the mariadb-...msi.

    hashtag
    Welcome

    hashtag
    License Agreement

    You must accept the terms in the license agreement. Proceed to the next dialog.

    hashtag
    Custom Setup

    Choose what features to install. By default, all features are installed with the exception of the debug symbols. If the "Database instance" feature is selected, the installer will create a database instance, by default running as a service. In this case the installer will present additional dialogs to control various database properties. Note that you do not necessarily have to create an instance at this stage. For example, if you already have MySQL or MariaDB databases running as services, you can just upgrade them during the installation. Also, you can create additional database instances after the installation, with the utility.

    circle-info

    By default, if you install a database instance, the data directory are in the data folder under the installation root. To change the data directory location, select Database instance in the feature tree, and use the Browse button to select another location.

    hashtag
    Database Authentication/Security Related Properties

    This dialog is shown if you selected the Database instance feature. Here, you can set the password for the "root" database user and specify whether root can access databases from remote machines. The Create anonymous account setting allows for anonymous (non-authenticated) users. It is off by default; it is not recommended to change this setting.

    hashtag
    Other Database Properties

    • Install as service.

    • Defines whether the database should be run as a service. If it should be run as a service, then it also defines the service name. It is recommended to run your database instance as a service as it greatly simplifies database management. In and later, the default service name used by the MSI installer is "MariaDB". In 10.3 and before, the default service name used by the MSI installer is "MySQL". Note that the default service name for the and options for mysqld.exe is "MySQL" in all versions of MariaDB.

    • Enable Networking.

    hashtag
    Ready to Install

    At this point, all installation settings are collected. Click on the "Install" button.

    hashtag
    End

    Installation is finished now. If you have upgradable instances of MariaDB/MySQL, running as services, this dialog will present a "Do you want to upgrade existing instances" checkbox (if selected, it launches the Upgrade Wizard post-installation).

    If you installed a database instance as service, the service will be running already.

    hashtag
    New Entries in Start Menu

    Installation will add some entries in the Start Menu:

    • MariaDB Client - Starts command line client mysql.exe.

    • Command Prompt - Starts a command prompt. Environment is set such that "bin" directory of the installation is included into PATH environment variable, for instance, use this command prompt to issue MariaDB commands (for example, mysqldadmin or mysql).

    • Database directory - Opens the data directory in Explorer.

    hashtag
    Uninstall UI

    In the Explorer applet Programs and Features, find the entry for MariaDB, choose Uninstall/Change and click on the Remove button in the dialog:

    If you installed a database instance, you will need to decide if you want to remove or keep the data in the database directory.

    hashtag
    Silent Installation

    The MSI installer supports silent installations as well. In its simplest form silent installation with all defaults can be performed from an elevated command prompt like this:

    circle-info

    The installation is silent due to msiexe.exe's /qn switch (no user interface). If you remove the switch, the installation has the full UI.

    hashtag
    Properties

    Silent installations also support installation properties (a property would correspond for example to checked/unchecked state of a checkbox in the UI, user password, etc). With properties the command line to install the MSI package would look like this:

    The MSI installer package requires property names to be all capitals and contain only English letters. By convention, for a boolean property, an empty value means "false" and a non-empty is "true".

    MariaDB installation supports the following properties:

    Property name
    Default value
    Description

    hashtag
    Features

    Feature is a Windows installer term for a unit of installation. Features can be selected and deselected in the UI in the feature tree in the "Custom Setup" dialog.

    Silent installation supports adding features with the special ropertyADDLOCAL=Feature_1,..,Feature_N and removing features with REMOVE=Feature_1,..., Feature_N .

    Features in the MariaDB installer:

    Feature id
    Installed by default?
    Description

    hashtag
    Silent Installation Examples

    All examples here require running as administrator with elevated command line privileges.

    • Install default features, database instance as service, non-default datadir and port:

    • Install service, add debug symbols, do not add development components (client libraries and headers).

    hashtag
    Silent Uninstall

    To uninstall silently, use the REMOVE=ALL property with msiexec:

    To keep the data directory during an uninstall, you will need to pass an additional parameter:

    hashtag
    Installation Logs

    If you encounter a bug in the installer, use the installer logs for diagnosis. Please attach verbose logs to the bug reports you create. To create a verbose installer log, start the installer from the command line with the /l*v switch, like so:

    hashtag
    Running 32 and 64 Bit Distributions on the Same Machine

    It is possible to install 32 and 64 bit packages on the same Windows x64.

    Apart from testing, an example where this feature can be useful is a development scenario, where users want to run a 64 bit server and develop both 32 and 64 bit client components. In this case the full 64 bit package can be installed, including a database instance plus development-related features (headers and libraries) from the 32 bit package.

    This page is licensed: CC BY-SA / Gnu FDL

    Installing MariaDB on IBM Cloud

    Step-by-step instructions for deploying MariaDB on IBM Cloud Kubernetes Service, including provisioning clusters and configuring storage.

    Get MariaDB on IBM Cloud.

    You should have an IBM Cloud account, otherwise you can register herearrow-up-right. At the end of the tutorial you will have a cluster with MariaDB up and running. IBM Cloud uses Bitnami charts to deploy MariaDB on with helm

    1. We will provision a new Kubernetes Cluster for you if, you already have one skip to step 2

    2. We will deploy the IBM Cloud Block Storage plug-in, if already have it skip to step 3

    3. MariaDB deployment

    hashtag
    Step 1 provision Kubernetes Cluster

    1. Click the Catalog button on the top.

    2. Select Service from the catalog.

    3. Search for Kubernetes Service and click on it.

    1. Choose a plan: standard or free.

    circle-info

    The free plan includes one worker node and no subnet.

    1. To provision a standard cluster, upgrade your account to Pay-As-You-Go.

    2. To upgrade to a Pay-As-You-Go account, follow these steps:

      1. In the console, go to Manage > Account.

    1. Now choose your location settings, for more information please visit

    2. Choose Geography (continent)

    1. Select either Single-Zone or Multi-Zone storage. Single Zone stores your data in one data center, while Multi-Zone distributes your data across multiple zones, offering greater safety in the event of unexpected zone failures.

    1. Choose a Worker Zone if using Single zones or Metro if Multizone

    1. Set up your account with VRF or enable VLAN spanning to use Multizone.

    2. If no Virtual LAN is available at your selected location, a new VLAN will be created for you.

    3. Choose a Worker node setup or use the preselected one.

    4. Set the

    1. Choose Master Service Endpoint, In VRF-enabled accounts, you can choose Private endpoint only to make your master accessible on the private network or via VPN tunnel. Choose Public endpoint only to make your master publicly accessible. When you have a VRF-enabled account, your cluster is set up by default to use Both private and public endpoints. For more information visit .

    1. Give Cluster name

    1. Give desired Tags to your cluster, for more information visit

    1. Click Create

    1. Wait for you cluster to be provisioned

    1. Your cluster is ready for usage

    hashtag
    Step 2 deploy IBM Cloud Block Storage plug-in

    The Block Storage plug-in is a persistent, high-performance iSCSI storage that you can add to your apps by using Kubernetes Persistent Volumes (PVs).

    1. Click the Catalog button on the top

    2. Select Software from the catalog

    3. Search for IBM Cloud Block Storage plug-in and click on it

    1. On the application page, select the cluster you wish to use

    2. Click on Enter or select namespace and choose the default Namespace or use a custom one (if you get error please wait 30 minutes for the cluster to finalize)

    1. Give a Name to this workspace

    2. Click Install and wait for the deployment

    hashtag
    Step 3 deploy MariaDB

    We will deploy MariaDB on our cluster

    1. Click the Catalog button on the top

    2. Select Software from the catalog

    3. Search for MariaDB and click on it

    1. Please select IBM Kubernetes Service

    1. On the application page, select the cluster you wish to use

    1. Click on Enter or select namespace and choose the default Namespace or use a custom one

    1. Give a unique name to workspace, which you can easily recognize

    1. Select which Resource Group you want to use, it's for access controll and billing purposes. For more information please visit

    1. Give Tags to your MariaDB, for more information visit

    1. Click on Parameters with default values, You can set deployment values or use the default ones

    1. Please set the MariaDB root password in the parameters

    1. After finishing everything, tick the box next to the agreements and click Install

    1. The MariaDB workspace will start installing, wait a couple of minutes

    1. Your MariaDB workspace has been successfully deployed

    hashtag
    Verify MariaDB installation

    1. Go to in your browser

    2. Expand Clusters. Click on your cluster

    1. On the Overview page, click Actions, then select Web Terminal from the dropdown menu.

    1. Click Install and wait for sometime

    2. Click on Actions

    3. Click Web terminal. A terminal window will open up

    4. On the terminal window, please change NAMESPACE to the namespace you choose at the deployment setup:

    1. Enter your pod with bash , please replace PODNAME with your mariadb pod's name

    1. After you are in your pod please enter Mariadb and enter your root password after the prompt

    You have successfully deployed MariaDB IBM Cloud!

    This page is licensed: CC BY-SA / Gnu FDL

    Upgrade to MariaDB Enterprise Server 11.8

    Upgrade guide for MariaDB Enterprise Server 11.8, highlighting significant performance improvements in transactional throughput, new vector search optimizations, and enhanced observability features.

    hashtag
    Overview

    These instructions detail the upgrade from a previous version of MariaDB Enterprise Server to MariaDB Enterprise Server 11.8 on a range of .

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    See .

    Upgrade MariaDB Enterprise Server from 10.4.X to 10.4.Y

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    These instructions detail a minor release upgrade with MariaDB Enterprise Server 10.4 on a range of supported Operating Systems.

    A minor release upgrade is a change from an earlier release of MariaDB Enterprise Server 10.4 to a later release in the same release series.

    For example, it would be a minor release upgrade to upgrade from MariaDB Enterprise Server 10.4.33-23 to MariaDB Enterprise Server 10.4.34-24.

    hashtag
    Data Backup

    sudo systemctl stop mariadb
    sudo systemctl start mariadb
    sudo mariadb-upgrade
    # On the 10.6 Primary
    sudo mariadb-backup --backup \
        --user=backup_user \
        --password=backup_password \
        --target-dir=/data/backup/preupgrade_backup
    sudo mariadb-backup --prepare \
        --target-dir=/data/backup/preupgrade_backup
    # On the 11.4 Replica
    sudo systemctl stop mariadb
    
    # Ensure datadir is empty
    sudo rm -rf /var/lib/mysql/*
    
    # Restore backup
    sudo mariadb-backup --copy-back \
        --target-dir=/data/backup/preupgrade_backup
    
    # Fix permissions
    sudo chown -R mysql:mysql /var/lib/mysql
    sudo systemctl start mariadb
    -- On the 11.4 Replica
    -- Set the GTID position (found in the xtrabackup_binlog_info file from the backup)
    SET GLOBAL gtid_slave_pos = '0-1-12345'; -- Replace with your actual GTID
    
    CHANGE MASTER TO
        MASTER_HOST='10.6._primary_ip',
        MASTER_USER='replication_user',
        MASTER_PASSWORD='replication_password',
        MASTER_USE_GTID=slave_pos;
    
    START SLAVE;
    # Put the 10.6 replicas into maintenance mode or lower their weight
    maxctrl set server Primary10.6 maintenance
    -- On the 11.4 Replica
    STOP SLAVE;
    RESET SLAVE ALL;
    sudo mariadb-upgrade
    # Syntax: maxctrl call command diff create <NewDiffServiceName> <ExistingService> <ReferenceServer> <TargetServer>
    
    maxctrl call command diff create DiffService ReadWriteService Primary10.6 Replica11.4
    SET GLOBAL read_only=0;
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    SET GLOBAL innodb_fast_shutdown = 1;
    XA RECOVER;
    $ sudo mariadb
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 9
    Server version: 11.4.5-3-MariaDB-Enterprise MariaDB Enterprise 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)]>
    SHOW GLOBAL VARIABLES LIKE 'version';
    +---------------+-----------------------------+
    | Variable_name | Value                       |
    +---------------+-----------------------------+
    | version       | 11.4.5-3-MariaDB-Enterprise |
    +---------------+-----------------------------+
    $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
    $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
    $ sudo mariadb-upgrade
    $ sudo mysql_upgrade
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    SET GLOBAL innodb_fast_shutdown = 1;
    XA RECOVER;
    $ sudo mariadb
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 9
    Server version: 10.6.21-17-MariaDB-Enterprise MariaDB Enterprise 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)]>
    SHOW GLOBAL VARIABLES LIKE 'version';
    +---------------+-------------------------------+
    | Variable_name | Value                         |
    +---------------+-------------------------------+
    | version       | 10.6.21-17-MariaDB-Enterprise |
    +---------------+-------------------------------+
    $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
    $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
    $ sudo mariadb-upgrade
    $ sudo mysql_upgrade
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    SET GLOBAL innodb_fast_shutdown = 1;
    XA RECOVER;
    $ sudo mariadb
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 9
    Server version: 10.5.28-22-MariaDB-Enterprise MariaDB Enterprise 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)]>
    SHOW GLOBAL VARIABLES LIKE 'version';
    +---------------+-------------------------------+
    | Variable_name | Value                         |
    +---------------+-------------------------------+
    | version       | 10.5.28-22-MariaDB-Enterprise |
    +---------------+-------------------------------+
    $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
    $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
    $ sudo mariadb-upgrade
    $ sudo mysql_upgrade
    sudo sed -i 's/10.6/10.11/' /etc/yum.repos.d/MariaDB.repo
    sudo dnf install MariaDB-server galera-4 MariaDB-client MariaDB-shared MariaDB-backup MariaDB-common
    sudo dnf install MariaDB-server
    sudo dnf install MariaDB-server MariaDB-client galera-4
    sudo dnf install MariaDB-client MariaDB-shared
    sudo dnf install MariaDB-devel
    sudo yum install MariaDB-backup
    sudo dnf install MariaDB-cracklib-password-check
    sudo dnf install MariaDB-server-debuginfo MariaDB-client-debuginfo MariaDB-shared-debuginfo MariaDB-backup-debuginfo MariaDB-common-debuginfo
    sudo dnf install MariaDB-server-debuginfo
    sudo dnf list --showduplicates MariaDB-server
    sudo dnf list --showduplicates MariaDB-server
    Last metadata expiration check: 0:01:42 ago on Fri 12 Dec 2025 03:47:20 PM UTC.
    Available Packages
    MariaDB-server.x86_64  11.8.2-1.el8                               mariadb-main
    MariaDB-server.x86_64  12.0.2-1.el8                               mariadb-main
    MariaDB-server.x86_64  12.1.2-1.el8                               mariadb-main
    mariadb-server.x86_64  3:10.3.39-1.module+el8.8.0+1452+2a7eab68   appstream
    ver=12.0.2
    sudo dnf install \
      MariaDB-server-${ver} \
      MariaDB-client-${ver} \
      MariaDB-shared-${ver} \
      MariaDB-common-${ver}
    ver=11.8.5_2
    sudo dnf install \
      MariaDB-server-${ver} \
      MariaDB-client-${ver} \
      MariaDB-shared-${ver} \
      MariaDB-common-${ver}
    sudo systemctl start mariadb 
    curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
    sudo zypper addrepo --gpgcheck --refresh https://yum.mariadb.org/10.6/sles/15/x86_64 mariadb
    sudo zypper --gpg-auto-import-keys refresh
    sudo zypper removerepo mariadb
    sudo zypper addrepo --gpgcheck --refresh https://yum.mariadb.org/10.6/sles/15/x86_64 mariadb
    sudo zypper --gpg-auto-import-keys refresh
    sudo rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    sudo zypper install MariaDB-server galera-4 MariaDB-client MariaDB-shared MariaDB-backup MariaDB-common
    sudo zypper install MariaDB-server
    sudo zypper install MariaDB-server MariaDB-client galera-4
    sudo zypper install MariaDB-client MariaDB-shared
    sudo zypper install MariaDB-backup
    sudo zypper install MariaDB-cracklib-password-check
    sudo zypper install MariaDB-server-debuginfo MariaDB-client-debuginfo MariaDB-shared-debuginfo MariaDB-backup-debuginfo MariaDB-common-debuginfo
    sudo zypper install MariaDB-server-debuginfo
    sudo zypper install MariaDB-client-debuginfo MariaDB-shared-debuginfo
    sudo zypper install MariaDB-backup-debuginfo
    sudo zypper install MariaDB-cracklib-password-check-debuginfo
    zypper search --details MariaDB-server
    sudo zypper install MariaDB-server-10.6.21 MariaDB-client-10.6.21 MariaDB-shared-10.6.21 MariaDB-backup-10.6.21 MariaDB-common-10.6.21
    Select Account settings, and click Add credit card.
  • Enter your payment information, click Next, and submit your information.

  • Choose between classic or VPC after reviewing the documentation to determine the most suitable option.

  • Worker node per zone
    .
    Locationsarrow-up-right
    endpointsarrow-up-right
    tagsarrow-up-right
    resource groupsarrow-up-right
    tagsarrow-up-right
    Resourcesarrow-up-right
    spinner
    kubernetes-select
    infra-select
    location-geo
    location-avail
    location-worker
    worker-pool
    endpoints
    name-new
    tasg-new
    create-new
    cluster-prepare
    cluster-done
    block-search
    block-cluster
    block-storage-create
    search
    target-select
    cluster-select
    details-namespace
    details-name
    details-resource
    details-tags
    parameters
    root-password
    aggreement-create
    in-progress
    done
    resource-select
    cluster-main
    get-ns
    get-pods
    get-service
    bash
    welcome
    ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 11.4.

    To configure APT package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 11.4.

    To configure ZYpp package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • sudo systemctl enable mariadb

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    mariadb_es_repo_setup
    Versions
    MariaDB Package Repository Setup and Usage
    https://customers.mariadb.com/downloads/token/arrow-up-right
    https://customers.mariadb.com/downloads/token/arrow-up-right
    VERSION()
    mariadb_es_repo_setup
    mariadb_es_repo_setup
    ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 10.6.

    To configure APT package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 11.4.

    To configure ZYpp package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • sudo systemctl enable mariadb

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    mariadb_es_repo_setup
    Versions
    MariaDB Package Repository Setup and Usage
    https://customers.mariadb.com/downloads/token/arrow-up-right
    https://customers.mariadb.com/downloads/token/arrow-up-right
    VERSION()
    mariadb_es_repo_setup
    mariadb_es_repo_setup
    ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 11.4.

    To configure APT package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 10.5.

    To configure ZYpp package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • sudo systemctl enable mariadb

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    mariadb_es_repo_setup
    Versions
    MariaDB Package Repository Setup and Usage
    https://customers.mariadb.com/downloads/token/arrow-up-right
    https://customers.mariadb.com/downloads/token/arrow-up-right
    VERSION()
    mariadb_es_repo_setup
    mariadb_es_repo_setup
    $ kubectl get ns
    $ kubectl get pod -n NAMESPACE -o wide
    $ kubectl get service -n NAMESPACE
    $ kubectl exec --stdin --tty PODNAME -n NAMESPACE -- /bin/bash
    $ mysql -u root -p
    $ sudo apt install --only-upgrade "mariadb-*" "galera*"
    $ sudo zypper update "MariaDB-*" "galera*"
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo systemctl stop mariadb
    $ sudo yum install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.4"
    $ sudo yum update "MariaDB-*" "galera*"
    SELECT VERSION();
    +-----------------------------+
    | VERSION()                   |
    +-----------------------------+
    | 11.4.5-3-MariaDB-Enterprise |
    +-----------------------------+
    $ sudo apt install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.4"
    $ sudo apt update
    $ sudo zypper install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.4"
    $ sudo apt install --only-upgrade "mariadb-*" "galera*"
    $ sudo zypper update "MariaDB-*" "galera*"
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo systemctl stop mariadb
    $ sudo yum install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.6"
    $ sudo yum update "MariaDB-*" "galera*"
    SELECT VERSION();
    +-------------------------------+
    | VERSION()                     |
    +-------------------------------+
    | 10.6.21-17-MariaDB-Enterprise |
    +-------------------------------+
    $ sudo apt install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.6"
    $ sudo apt update
    $ sudo zypper install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.6"
    $ sudo apt install --only-upgrade "mariadb-*" "galera*"
    $ sudo zypper update "MariaDB-*" "galera*"
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo systemctl stop mariadb
    $ sudo yum install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.5"
    $ sudo yum update "MariaDB-*" "galera*"
    SELECT VERSION();
    +-------------------------------+
    | VERSION()                     |
    +-------------------------------+
    | 10.5.28-22-MariaDB-Enterprise |
    +-------------------------------+
    $ sudo apt install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.5"
    $ sudo apt update
    $ sudo zypper install curl
    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.5"

    Whether to enable TCP/IP (recommended) and which port MariaDB should listen to. If security is a concern, you can change the bind-address parameter post-installation to bind to only local addresses. If the "Enable networking" checkbox is deselected, the database will use named pipes for communication.

  • InnoDB engine settings.

  • Defines the InnoDB buffer pool size, and the InnoDB page size. The default buffer pool size is 12.5% of RAM, and depending on your requirements you can give InnoDB more (up to 70-80% RAM). 32 bit versions of MariaDB have restrictions on maximum buffer pool size, which is approximately 1GB, due to virtual address space limitations for 32bit processes. A 16k page size is suitable for most situations. See the innodb_page_size system variable for details on other settings.

  • Error log - Opens the database error log in Notepad.

  • my.ini - Opens the database configuration file my.ini in Notepad.

  • Upgrade Wizard - Starts the Wizard to upgrade an existing MariaDB/MySQL database instance to this MariaDB version.

  • Allow remote access for root user

    BUFFERPOOLSIZE

    RAM/8

    Bufferpoolsize for innodb

    CLEANUPDATA

    1

    Remove the data directory (uninstall only)

    DATADIR

    INSTALLDIR\data

    Location of the data directory

    DEFAULTUSER

    Allow anonymous users

    PASSWORD

    Password of the root user

    SERVICENAME

    Name of the Windows service. A service is not created if this value is empty.

    SKIPNETWORKING

    Skip networking

    STDCONFIG

    1

    Corresponds to "optimize for transactions" in the GUI, default engine innodb, strict sql mode

    UTF8

    if set, adds character-set-server=utf8 to my.ini file

    PAGESIZE

    16K

    page size for innodb

    yes

    Install server

    SharedLibraries

    yes

    Install client shared library

    DEVEL

    yes

    install C/C++ header files and client libraries

    HeidiSQL

    yes

    Installs HeidiSQL

    INSTALLDIR

    %ProgramFiles%\MariaDB \

    Installation root

    PORT

    3306

    --port parameter for the server

    DBInstance

    yes

    Install database instance

    Client

    yes

    Command line client programs

    mysql_install_db.exe
    --install
    --install-manual
    spinner
    Welcome dialog
    License Agreement
    Custom Setup
    Database security properties
    Other database properties
    Ready Dialog
    Finish
    Start Menu
    UninstallChangeDialog_New
    KeepOrRemoveDataDialog_New

    ALLOWREMOTEROOTACCESS

    MYSQLSERVER

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup before upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup. On MariaDB Enterprise Server 11.8 and later:

    Confirm successful completion of the backup operation.

    2. The backup must be prepared. On the MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the MariaDB Audit Plugin installed and are upgrading from MariaDB Enterprise Server 10.2 or 10.3, the audit plugin should be removed prior to the upgrade to prevent conflicts with the MariaDB Enterprise Audit Plugin, which MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later. It can be removed by using the UNINSTALL SONAME statement:

    And if you load the plugin in a configuration file using the plugin\_load\_add option, then the option should also be removed. The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to a new major release of MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Enterprise Server before installing the new version of MariaDB Enterprise Server. Otherwise, the package manager will refuse to install the new version of MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

    Commit or roll back any open XA transactions before stopping the node for upgrade.

    3. Stop the server process: For distributions that use systemd (most supported OSes), you can manage the server process using the systemctl command:

    hashtag
    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    hashtag
    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure YUM package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository. Installable versions of MariaDB Enterprise Server are 11.8 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure APT package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins. Configure MariaDB. Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure ZYpp package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager: MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back.

    For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system's default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation
    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account. MariaDB Client is called mariadb (ES 10.4 and later):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the VERSION() function:

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    spinner
    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Stop the MariaDB Server Process

    Before the new version can be installed, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.4.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Update MariaDB Enterprise Server and package dependencies:

    4. For users who have the loaded who are upgrading from or earlier, Spider's new RPM package and dependencies must be manually installed after upgrading to or later.

      • In and earlier, Spider's components were installed with the server's RPM package.

      • Starting with , Spider adds unixODBC as a dependency, so Spider has been moved to a separate RPM package to avoid adding new dependencies to the server's RPM package.

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3, ES10.2):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    spinner

    Upgrade to MariaDB Enterprise Server 11.4

    Instructions for upgrading to MariaDB Enterprise Server 11.4, which introduces new data types like UUID and INET4, advanced JSON functions, and non-blocking online schema changes.

    hashtag
    Overview

    These instructions detail the upgrade from a previous version of MariaDB Enterprise Server to MariaDB Enterprise Server 11.4 on a range of supported Operating Systemsarrow-up-right.

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    See .

    hashtag
    Incompatible Changes

    MariaDB Enterprise Server 11.4 includes changes from previous release series (10.11, 11.0, 11.1, etc.). If you are upgrading from MariaDB Enterprise Server 10.6 or older, you are skipping several major versions. Review the following breaking changes to ensure application stability.

    hashtag
    Removed Variables (Action Required)

    The following variables have been removed. You must remove them from your configuration files (my.cnf, .ini) before starting the upgrade, or the server will fail to start:

    • innodb_defragment: (and all associated variables like innodb_defragment_fill_factor, innodb_defragment_n_pages).

    • des_encrypt / des_decrypt: These functions have been removed.

    hashtag
    Behavior Changes & Deprecations

    • Binary Names: Scripts using mysql, mysqldump, or mysqladmin may fail or emit deprecation warnings. Update automation to use mariadb, mariadb-dump, and mariadb-admin.

    • Compression Plugins

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup before upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using . For more information about backing up and restoring the database, please see the .

    1. Take a full backup. On MariaDB Enterprise Server 11.4 and later:

    Confirm successful completion of the backup operation.

    2. The backup must be prepared. On the MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the installed and are upgrading from MariaDB Enterprise Server 10.2 or 10.3, the audit plugin should be removed prior to the upgrade to prevent conflicts with the MariaDB Enterprise Audit Plugin, which that is present in MariaDB Enterprise Server 10.4 or later. It can be removed by using the statement:

    And if you load the plugin in a configuration file using the plugin\_load\_add option, then the option should also be removed. The will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to a new major release of MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Enterprise Server before installing the new version of MariaDB Enterprise Server. Otherwise, the package manager will refuse to install the new version of MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the system variable to 1:

    2. Use to confirm that there are no external in a prepared state:

    Commit or roll back any open before stopping the node for upgrade.

    3. Stop the server process: For distributions that use systemd (most supported OSes), you can manage the server process using the systemctl command:

    hashtag
    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    hashtag
    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8. To configure YUM package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository. Installable versions of MariaDB Enterprise Server are 11.8 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8. To configure APT package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins. Configure MariaDB. Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure ZYpp package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager: MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back.

    For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system's default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation
    Command

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account. MariaDB Client is called mariadb (ES 10.4 and later):

    2. You can also verify the server version by checking the value of the system variable with the statement:

    3. You can also verify the server version by calling the function:

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Upgrade to MariaDB Enterprise Server 10.6

    Upgrade documentation for MariaDB Enterprise Server 10.6, featuring Atomic DDL support, JSON_TABLE function, improved Oracle compatibility modes, and the removal of older storage engines.

    hashtag
    Overview

    These instructions detail the upgrade from a previous version of MariaDB Enterprise Server to MariaDB Enterprise Server 10.6 on a range of supported Operating Systemsarrow-up-right.

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    See .

    hashtag
    Incompatible Changes

    hashtag
    Reserved Words

    • OFFSET: This is now a reserved word. If you have tables or columns named OFFSET, you must quote them (e.g., `OFFSET`) in your SQL queries.

    hashtag
    Character Sets

    • utf8 changes: The utf8 character set is now an alias for utf8mb3 (3-byte) by default. If you need 4-byte support (for emojis), ensure your application explicitly uses utf8mb4.

    hashtag
    Removed Variables

    The following variables have been removed. Remove them from my.cnf before upgrading:

    • innodb_checksum_algorithm: The innodb and none options are removed. Use crc32 or full_crc32.

    • innodb_log_checksums: Removed.

    hashtag
    Storage Engines

    • TokuDB: The TokuDB storage engine was disabled in 10.5 and removed in 10.6. Migrating TokuDB tables to InnoDB or MyRocks is required before upgrading.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup before upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using . For more information about backing up and restoring the database, please see the .

    1. Take a full backup. On MariaDB Enterprise Server 10.6 and later:

    Confirm successful completion of the backup operation.

    2. The backup must be prepared. On the MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the installed and are upgrading from MariaDB Enterprise Server 10.2 or 10.3, the audit plugin should be removed prior to the upgrade to prevent conflicts with the MariaDB Enterprise Audit Plugin, which that is present in MariaDB Enterprise Server 10.4 or later. It can be removed by using the statement:

    And if you load the plugin in a configuration file using the plugin\_load\_add option, then the option should also be removed. The will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to a new major release of MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Enterprise Server before installing the new version of MariaDB Enterprise Server. Otherwise, the package manager will refuse to install the new version of MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the system variable to 1:

    2. Use to confirm that there are no external in a prepared state:

    Commit or roll back any open before stopping the node for upgrade.

    3. Stop the server process: For distributions that use systemd (most supported OSes), you can manage the server process using the systemctl command:

    hashtag
    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    3. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    hashtag
    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8. To configure YUM package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository. Installable versions of MariaDB Enterprise Server are 11.8 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure APT package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins. Configure MariaDB. Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure ZYpp package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager: MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back.

    For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system's default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation
    Command

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account. MariaDB Client is called mariadb (ES 10.4 and later):

    2. You can also verify the server version by checking the value of the system variable with the statement:

    3. You can also verify the server version by calling the function:

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.5

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    These instructions detail the upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.5 on a range of supported Operating Systemsarrow-up-right.

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using . For more information about backing up and restoring the database, please see the .

    1. Take a full backup.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Community Server 10.4 and later:

    hashtag
    Audit Plugin Considerations

    If you have the installed and if you are upgrading to MariaDB Enterprise Server 10.4 or later, then the audit plugin should be removed prior to the upgrade to prevent conflict with the MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later.

    It can be removed by using the statement:

    And if you load the plugin in a configuration file using the plugin_load_add option, then the option should also be removed.

    The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Community Server, before installing MariaDB Enterprise Server. Otherwise, the package manager will refuse to install MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the system variable to 1:

    2. Use to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Community Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql\_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called (ES10.4 and later) or mysql (ES10.3 and earlier):

    2. You can also verify the server version by checking the value of the system variable with the statement:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.4

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    These instructions detail the upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.4 on a range of supported Operating Systemsarrow-up-right.

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using . For more information about backing up and restoring the database, please see the .

    1. Take a full backup.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Community Server 10.4 and later:

    hashtag
    Audit Plugin Considerations

    If you have the installed and if you are upgrading to MariaDB Enterprise Server 10.4 or later, then the audit plugin should be removed prior to the upgrade to prevent conflict with the MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later.

    It can be removed by using the statement:

    And if you load the plugin in a configuration file using the plugin_load_add option, then the option should also be removed.

    The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Community Server, before installing MariaDB Enterprise Server. Otherwise, the package manager will refuse to install MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the system variable to 1:

    2. Use to confirm that there are no external in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Community Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql\_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called (ES10.4 and later) or mysql (ES10.3 and earlier):

    2. You can also verify the server version by checking the value of the system variable with the statement:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Upgrade to MariaDB Enterprise Server 10.3

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    hashtag
    Overview

    These instructions detail the upgrade from a previous version of MariaDB Enterprise Server to MariaDB Enterprise Server 10.3 on a range of supported Operating Systemsarrow-up-right.

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    See .

    hashtag
    Incompatible Changes

    hashtag
    Reserved Words

    • EXCEPT and INTERSECT: These are now reserved words. If used as identifiers (table/column names), they must be quoted.

    hashtag
    SQL Compatibility

    • VALUES() Function: Renamed to VALUE().

    • mysqldump Compatibility: A mysqldump binary from an older version cannot dump data from a MariaDB 10.3 server due to changes in the transaction registry tables. You must upgrade your client tools along with the server.

    hashtag
    Removed Options

    • innodb_file_format: The Antelope file format is no longer supported. The default is Barracuda.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup before upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using . For more information about backing up and restoring the database, please see the .

    1. Take a full backup. On MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the backup operation.

    1. The backup must be prepared. On the MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the prepare operation.

    1. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the installed and if you are upgrading to MariaDB Enterprise Server 10.4 or later, then the audit plugin should be removed prior to the upgrade to prevent conflict with the that is present in MariaDB Enterprise Server 10.4 or later. It can be removed by using the statement:

    And if you load the plugin in a configuration file using the plugin\_load\_add option, then the option should also be removed. The will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to a new major release of MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Enterprise Server before installing the new version of MariaDB Enterprise Server. Otherwise, the package manager will refuse to install the new version of MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the system variable to 1:

    1. Use to confirm that there are no external in a prepared state:

    Commit or roll back any open before stopping the node for upgrade.

    1. Stop the server process: For distributions that use systemd (most supported OSes), you can manage the server process using the systemctl command:

    hashtag
    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    hashtag
    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure YUM package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    2. Install MariaDB Enterprise Server and package dependencies:

    Installation of additional packages may be required for some plugins.

    1. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository. Installable versions of MariaDB Enterprise Server are 11.8 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure APT package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    2. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins. Configure MariaDB. Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure ZYpp package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    2. Install MariaDB Enterprise Server and package dependencies:

    Installation of additional packages may be required for some plugins.

    1. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager: MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back.

    For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system's default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation
    Command

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account. MariaDB Client is called mariadb (ES 10.4 and later):

    1. You can also verify the server version by checking the value of the system variable with the statement:

    1. You can also verify the server version by calling the function:

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    Upgrade from MariaDB Community Server to MariaDB Enterprise Server 11.4

    Instructions for upgrading to MariaDB Enterprise Server 11.4, which introduces new data types like UUID and INET4, advanced JSON functions, and non-blocking online schema changes.

    These instructions detail the upgrade from MariaDB Community Server to MariaDB Enterprise Server 11.4 on a range of .

    When is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    Upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.6

    Upgrade documentation for MariaDB Enterprise Server 10.6, featuring Atomic DDL support, JSON_TABLE function, improved Oracle compatibility modes, and the removal of older storage engines.

    These instructions detail the upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.6 on a range of .

    When is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    Upgrade to MariaDB Enterprise Server 10.5

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    hashtag
    Overview

    These instructions detail the upgrade from a previous version of MariaDB Enterprise Server to MariaDB Enterprise Server 10.5 on a range of .

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    See &

    Upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.3

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    These instructions detail the upgrade from MariaDB Community Server to MariaDB Enterprise Server 10.3 on a range of .

    When is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    Upgrade to MariaDB Enterprise Server 10.4

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    hashtag
    Overview

    These instructions detail the upgrade from a previous version of MariaDB Enterprise Server to MariaDB Enterprise Server 10.4 on a range of .

    When MariaDB Enterprise Server is upgraded, the old version needs to be uninstalled, and the new version needs to be installed.

    See .

    Upgrade MariaDB Enterprise Server from 10.3.X to 10.3.Y

    An upgrade guide for an older, end-of-life version of MariaDB Enterprise Server, kept for reference purposes for legacy systems.

    These instructions detail a minor release upgrade with MariaDB Enterprise Server 10.3 on a range of supported Operating Systems.

    A minor release upgrade is a change from an earlier release of MariaDB Enterprise Server 10.3 to a later release in the same release series.

    For example, it would be a minor release upgrade to upgrade from MariaDB Enterprise Server 10.3.38-19 to MariaDB Enterprise Server 10.3.39-20.

    hashtag
    Data Backup

    msiexec /i path-to-package.msi /qn
    msiexec /i path-to-package.msi [PROPERTY_1=VALUE_1 ... PROPERTY_N=VALUE_N] /qn
    msiexec /i path-to-package.msi SERVICENAME=MySQL DATADIR=C:\mariadb5.2\data PORT=3307 /qn
    msiexec /i path-to-package.msi SERVICENAME=MySQL ADDLOCAL=DEBUGSYMBOLS REMOVE=DEVEL /qn
    msiexec /i path-to-package.msi REMOVE=ALL /qn
    msiexec /i path-to-package.msi REMOVE=ALL CLEANUPDATA="" /qn
    msiexec.exe /i path-to-package.msi  /l*v path-to-logfile.txt
    sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    UNINSTALL SONAME 'server_audit';
    SET GLOBAL innodb_fast_shutdown = 1;
    XA RECOVER;
    sudo systemctl stop mariadb
    sudo yum remove "MariaDB-*"
    sudo yum remove galera-enterprise-4
    rpm --query --all | grep -i -E "mariadb|galera"
    sudo apt-get remove "mariadb-*"
    sudo apt remove galera-enterprise-4
    apt list --installed | grep -i -E "mariadb|galera"
    sudo zypper remove "MariaDB-*"
    sudo zypper remove galera-enterprise-4
    rpm --query --all | grep -i -E "mariadb|galera"
    sudo yum install curl 
    curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    chmod +x mariadb_es_repo_setup
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.8"
    sudo yum install MariaDB-server MariaDB-backup
    sudo apt install curl
    curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    chmod +x mariadb_es_repo_setup
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.8"
    sudo apt update
    $ sudo apt install mariadb-server mariadb-backup galera-enterprise-4
    sudo zypper install curl
    curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    chmod +x mariadb_es_repo_setup
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.8"
    sudo zypper install MariaDB-server MariaDB-backup
    sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
    sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
    sudo mariadb-upgrade
    sudo mariadb
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 9
    Server version: 11.8.2-0-MariaDB-Enterprise MariaDB Enterprise 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)]>
    SHOW GLOBAL VARIABLES LIKE 'version';
    +---------------+-----------------------------+
    | Variable_name | Value                       |
    +---------------+-----------------------------+
    | version       | 11.8.3-1-MariaDB-Enterprise |
    +---------------+-----------------------------+
    SELECT VERSION();
    +-----------------------------+
    | VERSION()                   |
    +-----------------------------+
    | 11.8.3-1-MariaDB-Enterprise |
    +-----------------------------+
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --backup \
          --user=mariadb-backup_user \
          --password=mariadb-backup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    SET GLOBAL innodb_fast_shutdown = 1;
    XA RECOVER;
    $ sudo mariadb
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 9
    Server version: 10.4.34-24-MariaDB-Enterprise MariaDB Enterprise 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)]>
    SHOW GLOBAL VARIABLES LIKE 'version';
    +---------------+-------------------------------+
    | Variable_name | Value                         |
    +---------------+-------------------------------+
    | version       | 10.4.34-24-MariaDB-Enterprise |
    +---------------+-------------------------------+
    $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
    $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
    $ sudo mariadb-upgrade
    $ sudo mysql_upgrade
    [mariadb]
    name = MariaDB-11.8.6
    baseurl= http://archive.mariadb.org/mariadb-11.8.6/yum/rhel/$releasever/$basearch
    gpgkey= https://archive.mariadb.org/PublicKey
    gpgcheck=1
    sudo dnf clean all
    sudo zypper removerepo mariadb
    sudo zypper addrepo --gpgcheck --refresh https://yum.mariadb.org/11.8.6/sles/15/x86_64 mariadb
    To install Spider's new package and dependencies:
    ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 10.4.

    To configure APT package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • ,
    10.5
    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 10.4.

    To configure ZYpp package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

  • For users who have the Spider storage engine loaded who are upgrading from or earlier, Spider's new RPM package and dependencies must be manually installed after upgrading to or later.

    • In and earlier, Spider's components were installed with the server's RPM package.

    • Starting with , Spider adds unixODBC as a dependency, so Spider has been moved to a separate RPM package to avoid adding new dependencies to the server's RPM package.

    To install Spider's new package and dependencies:

  • sudo systemctl enable mariadb

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    mariadb_es_repo_setup
    Versions
    MariaDB Package Repository Setup and Usage
    Spider storage engine
    https://customers.mariadb.com/downloads/token/arrow-up-right
    https://customers.mariadb.com/downloads/token/arrow-up-right
    VERSION()
    mariadb_es_repo_setup
    mariadb_es_repo_setup

    innodb_version: This variable is removed as it was redundant.

    : If you used non-zlib compression (like
    lz4
    or
    lzo
    ) in 10.6, ensure you have the necessary provider plugins installed in 11.4. Tables may be unreadable until the correct
    mariadb-plugin-provider-*
    package is installed.
  • Spider Engine: Default values for Spider buffers (e.g., spider_buffer_size) have changed significantly (often autosized). If you rely on specific Spider tuning from 10.6, verify your settings.

  • Replication (GTID): ES 11.4 defaults to stricter GTID consistency. If upgrading a cluster, ensure Replicas are compatible before upgrading the Primary.

  • InnoDB Redo Log: The innodb_log_file_size variable is now dynamic and largely ignored. The physical format of the redo log changed in 10.9; ensure you have a valid logical backup (mariadb-dump) before upgrading.

  • Optimizer (Cost Model): The Query Optimizer was rewritten in version 11.0. Execution plans may change. It is recommended to run ANALYZE TABLE on major tables after the upgrade.

  • /etc/my.cnf.d/mysql-clients.cnf

  • /etc/my.cnf.d/server.cnf

  • Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    MariaDB Backup
    Recovery Guide
    MariaDB Audit Plugin
    MariaDB Enterprise Audit Plugin
    UNINSTALL SONAME
    MariaDB Enterprise Audit Plugin
    innodb_fast_shutdown
    XA RECOVER
    XA transactions
    XA transactions
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    version
    SHOW GLOBAL STATUS
    VERSION()
    spinner

    sudo systemctl enable mariadb

    innodb_undo_logs: Removed.

    /etc/my.cnf.d/mysql-clients.cnf

  • /etc/my.cnf.d/server.cnf

  • Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    MariaDB Backup
    Recovery Guide
    MariaDB Audit Plugin
    MariaDB Enterprise Audit Plugin
    UNINSTALL SONAME
    MariaDB Enterprise Audit Plugin
    innodb_fast_shutdown
    XA RECOVER
    XA transactions
    XA transactions
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    version
    SHOW GLOBAL STATUS
    VERSION()
    spinner

    sudo systemctl enable mariadb

    On MariaDB Community Server 10.3 and earlier:

    Confirm successful completion of the prepare operation.

  • Backups should be tested before they are trusted.

  • For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:
    When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

    When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

  • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

  • Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera-3:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 10.5.

    To configure YUM package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Install MariaDB Enterprise Server and package dependencies:

    Installation of additional packages may be required for some plugins.

  • Configure MariaDB.

    Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

  • Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.5.

      To configure APT package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.5.

      To configure ZYpp package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    /etc/my.cnf.d/server.cnf

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    You can also verify the server version by calling the VERSION() function:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    MariaDB Backup
    Recovery Guide
    MariaDB Audit Plugin
    UNINSTALL SONAME
    innodb_fast_shutdown
    XA RECOVER
    https://customers.mariadb.com/downloads/token/arrow-up-right
    mariadb-upgrade
    mariadb
    version
    SHOW GLOBAL STATUS
    spinner

    sudo systemctl enable mariadb

    mariadb_es_repo_setup
    On MariaDB Community Server 10.3 and earlier:

    Confirm successful completion of the prepare operation.

  • Backups should be tested before they are trusted.

  • For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:
    When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

    When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

  • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

  • Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera-3:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    ,
    10.4
    , and
    10.3
    . Pass the version to install using the
    --mariadb-server-version
    flag to
    . The following directions reference 10.4.

    To configure YUM package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

  • Install MariaDB Enterprise Server and package dependencies:

    Installation of additional packages may be required for some plugins.

  • Configure MariaDB.

    Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

  • Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.4.

      To configure APT package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.4.

      To configure ZYpp package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    /etc/my.cnf.d/server.cnf

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    You can also verify the server version by calling the VERSION() function:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    MariaDB Backup
    Recovery Guide
    MariaDB Audit Plugin
    UNINSTALL SONAME
    innodb_fast_shutdown
    XA RECOVER
    XA transactions
    https://customers.mariadb.com/downloads/token/arrow-up-right
    mariadb-upgrade
    mariadb
    version
    SHOW GLOBAL STATUS
    spinner

    sudo systemctl enable mariadb

    mariadb_es_repo_setup

    /etc/my.cnf.d/mysql-clients.cnf

  • /etc/my.cnf.d/server.cnf

  • Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    MariaDB Backup
    Recovery Guide
    MariaDB Audit Plugin
    MariaDB Enterprise Audit Plugin
    UNINSTALL SONAME
    MariaDB Enterprise Audit Plugin
    innodb_fast_shutdown
    XA RECOVER
    XA transactions
    XA transactions
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    version
    SHOW GLOBAL STATUS
    VERSION()
    spinner

    sudo systemctl enable mariadb

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the MariaDB Audit Plugin installed and if you are upgrading to MariaDB Enterprise Server 10.4 or later, then the audit plugin should be removed prior to the upgrade to prevent conflict with the MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later.

    It can be removed by using the UNINSTALL SONAME statement:

    And if you load the plugin in a configuration file using the plugin_load_add option, then the option should also be removed.

    The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Convert InnoDB Row Format

    MariaDB Enterprise Server 11.4 changes the COMPRESSED row format to read-only. Before upgrading, modify any compressed InnoDB tables to use the DYNAMIC row format.

    1. Use the information\_schema.INNODB\_SYS\_TABLES to identify any InnoDB tables that use the COMPRESSED row format:

    2. Execute an ALTER TABLE statement for each table, changing its row format from COMPRESSED to DYNAMIC:

    hashtag
    Uninstall the Old Version

    When upgrading to MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Community Server, before installing MariaDB Enterprise Server. Otherwise, the package manager will refuse to install MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 11.4.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Community Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql\_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3 and earlier):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    MariaDB Enterprise Server
    spinner

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the MariaDB Audit Plugin installed and if you are upgrading to MariaDB Enterprise Server 10.4 or later, then the audit plugin should be removed prior to the upgrade to prevent conflict with the MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later.

    It can be removed by using the UNINSTALL SONAME statement:

    And if you load the plugin in a configuration file using the plugin_load_add option, then the option should also be removed.

    The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Convert InnoDB Row Format

    MariaDB Enterprise Server 10.6 changes the COMPRESSED row format to read-only. Before upgrading, modify any compressed InnoDB tables to use the DYNAMIC row format.

    1. Use the information\_schema.INNODB\_SYS\_TABLES to identify any InnoDB tables that use the COMPRESSED row format:

    2. Execute an ALTER TABLE statement for each table, changing its row format from COMPRESSED to DYNAMIC:

    hashtag
    Uninstall the Old Version

    When upgrading to MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Community Server, before installing MariaDB Enterprise Server. Otherwise, the package manager will refuse to install MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.6.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Community Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql\_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3 and earlier):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    MariaDB Enterprise Server
    spinner
    hashtag
    Critical Pre-Upgrade Requirements
    • Mandatory Clean Shutdown: Upgrading to MariaDB Enterprise Server 10.5 after a server crash is not supported if the redo log was created with MariaDB Enterprise Server 10.4 or earlier. The server must be shut down cleanly before starting the upgrade process.

    • Redo Log Preparation: If your 10.4 configuration uses innodb-log-files-in-group = 2 (or any value greater than 1), you must change this value to 1 in your configuration file, restart the 10.4 server once, and then perform a final clean shutdown before swapping the binaries to version 10.5. Failure to do so may result in InnoDB initialization errors during the upgrade.

    • CONNECT Storage Engine: Starting with version 10.5, the CONNECT storage engine is no longer included in the primary MariaDB Enterprise repository. To maintain access to this engine, you must add the --include-unsupported flag to the mariadb_es_repo_setup script when configuring your new repositories.

    hashtag
    Incompatible Changes

    hashtag
    Binary Name Changes (Critical for Scripts)

    • mysqld is now mariadbd: The server binary has been renamed.

      • Systemd services and mysqld_safe handle this automatically.

      • Impact: Monitoring scripts or custom startup scripts that explicitly look for a process named mysqld will fail. Update them to look for mariadbd.

    hashtag
    Privileges

    • SHOW SLAVE STATUS: This command now requires the REPLICATION SLAVE ADMIN or SUPER privilege. It previously required only REPLICATION CLIENT. Ensure your monitoring users have the correct grants.

    hashtag
    Removed Variables

    • innodb_checksums: Replaced by innodb_checksum_algorithm.

    • innodb_undo_logs: Deprecated/Replaced.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup before upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup. On MariaDB Enterprise Server 10.5 and later:

    Confirm successful completion of the backup operation.

    1. The backup must be prepared. On the MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the prepare operation.

    1. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the MariaDB Audit Plugin installed and are upgrading from MariaDB Enterprise Server 10.2 or 10.3, the audit plugin should be removed prior to the upgrade to prevent conflicts with the MariaDB Enterprise Audit Plugin, which MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later. It can be removed by using the UNINSTALL SONAME statement:

    And if you load the plugin in a configuration file using the plugin\_load\_add option, then the option should also be removed. The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to a new major release of MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Enterprise Server before installing the new version of MariaDB Enterprise Server. Otherwise, the package manager will refuse to install the new version of MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    1. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

    Commit or roll back any open XA transactions before stopping the node for upgrade.

    1. Stop the server process: For distributions that use systemd (most supported OSes), you can manage the server process using the systemctl command:

    hashtag
    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    hashtag
    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure YUM package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    2. Install MariaDB Enterprise Server and package dependencies:

    Installation of additional packages may be required for some plugins.

    1. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository. Installable versions of MariaDB Enterprise Server are 11.8 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure APT package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    2. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins. Configure MariaDB. Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure ZYpp package repositories:

    1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    2. Install MariaDB Enterprise Server and package dependencies:

    Installation of additional packages may be required for some plugins.

    1. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager: MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back.

    For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system's default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation
    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account. MariaDB Client is called mariadb (ES 10.4 and later):

    1. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    1. You can also verify the server version by calling the VERSION() function:

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    Compatibility and Breaking Changes for MariaDB Enterprise Server 10.5
    spinner

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Community Server 10.4 and later:

      On MariaDB Community Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the MariaDB Audit Plugin installed and if you are upgrading to MariaDB Enterprise Server 10.4 or later, then the audit plugin should be removed prior to the upgrade to prevent conflict with the MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later.

    It can be removed by using the UNINSTALL SONAME statement:

    And if you load the plugin in a configuration file using the plugin_load_add option, then the option should also be removed.

    The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Community Server, before installing MariaDB Enterprise Server. Otherwise, the package manager will refuse to install MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    3. Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Community Server packages. Note that a wildcard character is used to ensure that all MariaDB Community Server packages are uninstalled:

      Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    2. Uninstall the Galera package as well.

      The name of the package depends on the specific version of MariaDB Community Server.

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.3.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    4. Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Community Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql\_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3 and earlier):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    MariaDB Enterprise Server
    spinner
    hashtag
    Incompatible Changes

    hashtag
    Authentication & Users (Critical)

    • mysql.user Table: This table is now a View into mysql.global_priv.

      • Impact: Legacy scripts that attempt to manipulate users via INSERT INTO mysql.user ... will fail. You must use standard SQL commands (CREATE USER, GRANT, DROP USER).

    • Unix Socket Auth: The unix_socket authentication plugin is now enabled by default on Linux. root access via sudo mariadb works without a password, which may affect scripts expecting password authentication for localhost root.

    hashtag
    Security

    • TLSv1.0: Disabled by default. Ensure your clients support newer TLS versions (TLS 1.1+).

    hashtag
    Galera Cluster

    • wsrep_load_data_splitting: Default changed to OFF.

    hashtag
    Data Backup

    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup before upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup. On MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the backup operation.

    1. The backup must be prepared. On the MariaDB Enterprise Server 10.4 and later:

    Confirm successful completion of the prepare operation.

    1. Backups should be tested before they are trusted.

    hashtag
    Audit Plugin Considerations

    If you have the MariaDB Audit Plugin installed and are upgrading from MariaDB Enterprise Server 10.2 or 10.3, the audit plugin should be removed prior to the upgrade to prevent conflicts with the MariaDB Enterprise Audit Plugin, which MariaDB Enterprise Audit Plugin that is present in MariaDB Enterprise Server 10.4 or later. It can be removed by using the UNINSTALL SONAME statement:

    And if you load the plugin in a configuration file using the plugin\_load\_add option, then the option should also be removed. The MariaDB Enterprise Audit Plugin will automatically be installed after installing MariaDB Enterprise Server 10.4 or later.

    hashtag
    Uninstall the Old Version

    When upgrading to a new major release of MariaDB Enterprise Server, it is necessary to remove the existing installation of MariaDB Enterprise Server before installing the new version of MariaDB Enterprise Server. Otherwise, the package manager will refuse to install the new version of MariaDB Enterprise Server.

    hashtag
    Stop the MariaDB Server Process

    Before the old version can be uninstalled, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    1. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

    Commit or roll back any open XA transactions before stopping the node for upgrade.

    1. Stop the server process: For distributions that use systemd (most supported OSes), you can manage the server process using the systemctl command:

    hashtag
    Uninstall via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications:

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via APT (Debian, Ubuntu)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Uninstall via ZYpp (SLES)

    1. Uninstall all of the MariaDB Enterprise Server packages. Note that a wildcard character is used to ensure that all MariaDB Enterprise Server packages are uninstalled:

    Be sure to check that this wildcard does not unintentionally refer to any of your custom applications.

    1. Uninstall the Galera package as well. The name of the package depends on the specific version of MariaDB Enterprise Server. When upgrading from MariaDB Enterprise Server 10.4 or later, the package is called galera-enterprise-4:

    1. Before proceeding, verify that all MariaDB Enterprise Server packages are uninstalled. The following command should not return any results:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    hashtag
    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure YUM package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository. Installable versions of MariaDB Enterprise Server are 11.8 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure APT package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins. Configure MariaDB. Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token atand substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository. Installable versions of MariaDB Enterprise Server are 11.8, 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to mariadb_es_repo_setup. The following directions reference 11.8.

    To configure ZYpp package repositories:

    circle-info

    Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    1. Install MariaDB Enterprise Server and package dependencies:

    1. Installation of additional packages may be required for some plugins.

    2. Configure MariaDB. Installation only loads MariaDB Enterprise Server onto the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager: MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back.

    For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system's default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation
    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account. MariaDB Client is called mariadb (ES 10.4 and later):

    1. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    1. You can also verify the server version by calling the VERSION() function:

    This page is: Copyright © 2025 MariaDB. All rights reserved.

    supported Operating Systemsarrow-up-right
    spinner
    Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

    The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

    1. Take a full backup.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the backup operation.

    2. The backup must be prepared.

      On MariaDB Enterprise Server 10.4 and later:

      On MariaDB Enterprise Server 10.3 and earlier:

      Confirm successful completion of the prepare operation.

    3. Backups should be tested before they are trusted.

    hashtag
    Stop the MariaDB Server Process

    Before the new version can be installed, we first need to stop the current MariaDB Server process.

    1. Set the innodb_fast_shutdown system variable to 1:

    2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

      Commit or rollback any open XA transactions before stopping the node for upgrade.

    3. Stop the server process:

      For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    hashtag
    Install the New Version

    MariaDB Corporation provides package repositories for YUM (RHEL, AlmaLinux, CentOS, Rocky Linux), APT (Debian, Ubuntu), and ZYpp (SLES).

    Install via YUM (RHEL, AlmaLinux, CentOS, Rocky Linux)

    1. Retrieve your Customer Download Token at https://customers.mariadb.com/downloads/token/arrow-up-right and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the YUM package repository. Installable versions of MariaDB Enterprise Server are 11.4, 10.6, 10.5, 10.4, and 10.3. Pass the version to install using the --mariadb-server-version flag to . The following directions reference 10.4.

      To configure YUM package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

    3. Update MariaDB Enterprise Server and package dependencies:

    Install via APT (Debian, Ubuntu)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the APT package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    Install via ZYpp (SLES)

    1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

    2. Configure the ZYpp package repository.

      Installable versions of MariaDB Enterprise Server are 11.4, 10.6

    hashtag
    Configuration

    For platforms that use YUM or ZYpp as a package manager:

    MariaDB Enterprise Server's packages bundle several configuration files:

    • /etc/my.cnf

    • /etc/my.cnf.d/client.cnf

    • /etc/my.cnf.d/mariadb-enterprise.cnf

    • /etc/my.cnf.d/mysql-clients.cnf

    • /etc/my.cnf.d/server.cnf

    If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

    hashtag
    Starting the Server

    MariaDB Enterprise Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

    For distributions that use systemd, you can manage the Server process using the systemctl command:

    Operation

    Command

    Start

    sudo systemctl start mariadb

    Stop

    sudo systemctl stop mariadb

    Restart

    sudo systemctl restart mariadb

    Enable during startup

    hashtag
    Upgrading the Data Directory

    MariaDB Enterprise Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

    The utility is called mariadb-upgrade in MariaDB Enterprise Server 10.4 and later:

    And the utility is called mysql_upgrade in MariaDB Enterprise Server 10.3 and 10.2:

    hashtag
    Testing

    When MariaDB Enterprise Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

    1. Connect to the server using MariaDB Client using the root@localhost user account.

      MariaDB Client is called mariadb (ES10.4 and later) or mysql (ES10.3, ES10.2):

    2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    3. You can also verify the server version by calling the function:


    This page is: Copyright © 2025 MariaDB. All rights reserved.

    spinner

    sudo systemctl enable mariadb

    Disable during startup

    sudo systemctl disable mariadb

    Status

    sudo systemctl status mariadb

    About the MariaDB RPM Files

    Provides an overview of the RPM packages available for MariaDB, listing the various RPMs such as server, client, backup, and shared libraries, and explaining their contents and dependencies.

    hashtag
    Available RPM Packages

    The available RPM packages depend on the specific MariaDB release series.

    hashtag
    List of RPM Packages in MariaDB

    The following RPMs are in MariaDB Enterprise Server 11.8:

    Package Name
    Description

    hashtag
    Removed RPM Packages

    Occasionally, RPM packages are removed from MariaDB. This could be because they are no longer needed, or because they were for features or storage engines that have been removed from MariaDB.

    Some examples of removed RPMs are:

    Package Name
    Description

    hashtag
    Installing RPM Packages

    Preferably, you should install MariaDB RPM packages using the package manager of your Linux distribution, for example yum orzypper. But you can also use the lower-level rpm tool.

    hashtag
    Actions Performed by RPM Packages

    hashtag
    Users and Groups Created

    When the aria-server RPM package is installed, it will create a user and group named mysql, if it does not already exist.

    hashtag
    See Also

      Compile and Using MariaDB with Sanitizers (ASAN, UBSAN, TSAN, MSAN)

      Guide on compiling MariaDB with various sanitizers like ASAN and UBSAN for debugging and error detection.

      hashtag
      What are Sanitizers?

      Sanitizers are open source runtime error detectors developed by Google that are enabled during the compile step. These sanitizers add extra code during compilation that will throw exceptions when certain errors are detected.

      Sanitizers find server bugs bug instrumenting the runtime MariaDB during compile time, and performing runtime checks on the executed test. Sanitizers detect a variety of implementation defects:

      The sanitizers for clang are:

      spinner
      $ sudo apt install --only-upgrade "mariadb-*" "galera*"
      $ sudo zypper update "MariaDB-*" "galera*"
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      $ sudo yum update "MariaDB-*" "galera*"
      SELECT VERSION();
      +-------------------------------+
      | VERSION()                     |
      +-------------------------------+
      | 10.4.34-24-MariaDB-Enterprise |
      +-------------------------------+
      $ sudo yum install MariaDB-spider-engine
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      $ sudo apt update
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      sudo systemctl stop mariadb
      sudo yum remove "MariaDB-*"
      sudo yum remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo apt-get remove "mariadb-*"
      sudo apt remove galera-enterprise-4
      apt list --installed | grep -i -E "mariadb|galera"
      sudo zypper remove "MariaDB-*"
      sudo zypper remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo yum install curl 
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="11.4"
      sudo yum install MariaDB-server MariaDB-backup
      sudo apt install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="11.4"
      sudo apt update
      $ sudo apt install mariadb-server mariadb-backup galera-enterprise-4
      sudo zypper install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="11.4"
      sudo zypper install MariaDB-server MariaDB-backup
      sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      sudo mariadb-upgrade
      sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 11.4.5-3-MariaDB-Enterprise MariaDB Enterprise 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------------------+
      | Variable_name | Value                       |
      +---------------+-----------------------------+
      | version       | 11.4.5-3-MariaDB-Enterprise |
      +---------------+-----------------------------+
      SELECT VERSION();
      +-----------------------------+
      | VERSION()                   |
      +-----------------------------+
      | 11.4.5-3-MariaDB-Enterprise |
      +-----------------------------+
      sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      sudo systemctl stop mariadb
      sudo yum remove "MariaDB-*"
      sudo yum remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo apt-get remove "mariadb-*"
      sudo apt remove galera-enterprise-4
      apt list --installed | grep -i -E "mariadb|galera"
      sudo zypper remove "MariaDB-*"
      sudo zypper remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo yum install curl 
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.6"
      sudo yum install MariaDB-server MariaDB-backup
      sudo apt install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.6"
      sudo apt update
      $ sudo apt install mariadb-server mariadb-backup galera-enterprise-4
      sudo zypper install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.6"
      sudo zypper install MariaDB-server MariaDB-backup
      sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      sudo mariadb-upgrade
      sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.6.21-17-MariaDB-Enterprise MariaDB Enterprise 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------------------+
      | Variable_name | Value                       |
      +---------------+-----------------------------+
      | version       | 10.6.21-17-MariaDB-Enterprise |
      +---------------+-----------------------------+
      SELECT VERSION();
      +-----------------------------+
      | VERSION()                   |
      +-----------------------------+
      | 10.6.21-17-MariaDB-Enterprise |
      +-----------------------------+
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt-get remove "mariadb-*"
      $ sudo zypper remove "MariaDB-*"
      $ sudo yum install MariaDB-server MariaDB-backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      $ sudo yum remove "MariaDB-*"
      $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      $ sudo mariadb-upgrade
      $ sudo mysql_upgrade
      $ sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.5.28-MariaDB 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------+
      | Variable_name | Value           |
      +---------------+-----------------+
      | version       | 10.5.28-MariaDB |
      +---------------+-----------------+
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum remove galera-4
      $ sudo yum remove galera
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.5"
      SELECT VERSION();
      +-----------------+
      | VERSION()       |
      +-----------------+
      | 10.5.28-MariaDB |
      +-----------------+
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt-get remove "mariadb-*"
      $ sudo zypper remove "MariaDB-*"
      $ sudo yum install MariaDB-server MariaDB-backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      $ sudo yum remove "MariaDB-*"
      $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      $ sudo mariadb-upgrade
      $ sudo mysql_upgrade
      $ sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.4.34-MariaDB 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------+
      | Variable_name | Value           |
      +---------------+-----------------+
      | version       | 10.4.34-MariaDB |
      +---------------+-----------------+
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum remove galera-4
      $ sudo yum remove galera
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      SELECT VERSION();
      +-----------------+
      | VERSION()       |
      +-----------------+
      | 10.4.34-MariaDB |
      +-----------------+
      sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      sudo systemctl stop mariadb
      sudo yum remove "MariaDB-*"
      sudo yum remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo apt-get remove "mariadb-*"
      sudo apt remove galera-enterprise-4
      apt list --installed | grep -i -E "mariadb|galera"
      sudo zypper remove "MariaDB-*"
      sudo zypper remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo yum install curl 
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      sudo yum install MariaDB-server MariaDB-backup
      sudo apt install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      sudo apt update
      $ sudo apt install mariadb-server mariadb-backup
      sudo zypper install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      sudo zypper install MariaDB-server MariaDB-backup
      sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      sudo mariadb-upgrade
      sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 11.4.5-3-MariaDB-Enterprise MariaDB Enterprise 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------------------+
      | Variable_name | Value                       |
      +---------------+-----------------------------+
      | version       | 11.4.5-3-MariaDB-Enterprise |
      +---------------+-----------------------------+
      SELECT VERSION();
      +-----------------------------+
      | VERSION()                   |
      +-----------------------------+
      | 11.4.5-3-MariaDB-Enterprise |
      +-----------------------------+
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      SELECT NAME, ROW_FORMAT
      FROM information_schema.INNODB_SYS_TABLES
      WHERE NAME NOT LIKE 'SYS_%'
         AND ROW_FORMAT = 'COMPRESSED';
      ALTER TABLE accounts.hq_sales
      ROW_FORMAT = DYNAMIC
      PAGE_COMPRESSED = 1;
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      $ sudo yum remove "MariaDB-*"
      $ sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 11.4.5-3-MariaDB 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+------------------+
      | Variable_name | Value            |
      +---------------+------------------+
      | version       | 11.4.5-3-MariaDB |
      +---------------+------------------+
      UNINSTALL SONAME 'server_audit';
      $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      $ sudo mariadb-upgrade
      $ sudo mysql_upgrade
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      SELECT NAME, ROW_FORMAT
      FROM information_schema.INNODB_SYS_TABLES
      WHERE NAME NOT LIKE 'SYS_%'
         AND ROW_FORMAT = 'COMPRESSED';
      ALTER TABLE accounts.hq_sales
      ROW_FORMAT = DYNAMIC
      PAGE_COMPRESSED = 1;
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      $ sudo yum remove "MariaDB-*"
      $ sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.6.21-MariaDB 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------+
      | Variable_name | Value           |
      +---------------+-----------------+
      | version       | 10.6.21-MariaDB |
      +---------------+-----------------+
      UNINSTALL SONAME 'server_audit';
      $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      $ sudo mariadb-upgrade
      $ sudo mysql_upgrade
      sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      sudo systemctl stop mariadb
      sudo yum remove "MariaDB-*"
      sudo yum remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo apt-get remove "mariadb-*"
      sudo apt remove galera-enterprise-4
      apt list --installed | grep -i -E "mariadb|galera"
      sudo zypper remove "MariaDB-*"
      sudo zypper remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo yum install curl 
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.5"
      sudo yum install MariaDB-server MariaDB-backup
      sudo apt install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.5"
      sudo apt update
      $ sudo apt install mariadb-server mariadb-backup galera-enterprise-4
      sudo zypper install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.5"
      sudo zypper install MariaDB-server MariaDB-backup
      sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      sudo mariadb-upgrade
      sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.5.28-22-MariaDB-Enterprise MariaDB Enterprise 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------------------+
      | Variable_name | Value                       |
      +---------------+-----------------------------+
      | version       | 10.5.28-22-MariaDB-Enterprise  |
      +---------------+-----------------------------+
      SELECT VERSION();
      +-----------------------------+
      | VERSION()                   |
      +-----------------------------+
      | 10.5.28-22-MariaDB-Enterprise |
      +-----------------------------+
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      $ sudo yum remove "MariaDB-*"
      $ sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.3.39-MariaDB 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------+
      | Variable_name | Value           |
      +---------------+-----------------+
      | version       | 10.3.39-MariaDB |
      +---------------+-----------------+
      UNINSTALL SONAME 'server_audit';
      $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      $ sudo mariadb-upgrade
      $ sudo mysql_upgrade
      sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      UNINSTALL SONAME 'server_audit';
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      sudo systemctl stop mariadb
      sudo yum remove "MariaDB-*"
      sudo yum remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo apt-get remove "mariadb-*"
      sudo apt remove galera-enterprise-4
      apt list --installed | grep -i -E "mariadb|galera"
      sudo zypper remove "MariaDB-*"
      sudo zypper remove galera-enterprise-4
      rpm --query --all | grep -i -E "mariadb|galera"
      sudo yum install curl 
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      sudo yum install MariaDB-server MariaDB-backup
      sudo apt install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      sudo apt update
      $ sudo apt install mariadb-server mariadb-backup galera-enterprise-4
      sudo zypper install curl
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      sudo zypper install MariaDB-server MariaDB-backup
      sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      sudo mariadb-upgrade
      sudo mariadb
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.4.34-24-MariaDB-Enterprise MariaDB Enterprise 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-----------------------------+
      | Variable_name | Value                       |
      +---------------+-----------------------------+
      | version       | 10.4.34-24-MariaDB-Enterprise |
      +---------------+-----------------------------+
      SELECT VERSION();
      +-----------------------------+
      | VERSION()                   |
      +-----------------------------+
      | 10.4.34-24-MariaDB-Enterprise |
      +-----------------------------+
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      SET GLOBAL innodb_fast_shutdown = 1;
      XA RECOVER;
      $ sudo mysql
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 9
      Server version: 10.3.39-20-MariaDB-Enterprise MariaDB Enterprise 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)]>
      SHOW GLOBAL VARIABLES LIKE 'version';
      +---------------+-------------------------------+
      | Variable_name | Value                         |
      +---------------+-------------------------------+
      | version       | 10.3.39-20-MariaDB-Enterprise |
      +---------------+-------------------------------+
      $ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
      $ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf
      $ sudo mariadb-upgrade
      $ sudo mysql_upgrade

      MariaDB Enterprise Server Upgrade Paths

      Provides an overview of supported upgrade paths for MariaDB Enterprise Server, linking to specific guides for upgrading between major versions.

      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera-3:

    • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    • When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 11.4.

      To configure APT package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    • Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 11.4.

      To configure ZYpp package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    • Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    • sudo systemctl enable mariadb

      Disable during startup

      sudo systemctl disable mariadb

      Status

      sudo systemctl status mariadb

      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      https://customers.mariadb.com/downloads/token/arrow-up-right
      https://customers.mariadb.com/downloads/token/arrow-up-right
      VERSION()
      mariadb_es_repo_setup
      mariadb_es_repo_setup
      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera-3:

    • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    • When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 10.6.

      To configure APT package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    • Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 10.6.

      To configure ZYpp package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    • Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    • sudo systemctl enable mariadb

      Disable during startup

      sudo systemctl disable mariadb

      Status

      sudo systemctl status mariadb

      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      https://customers.mariadb.com/downloads/token/arrow-up-right
      https://customers.mariadb.com/downloads/token/arrow-up-right
      VERSION()
      mariadb_es_repo_setup
      mariadb_es_repo_setup
      When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera-3:

    • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    • When upgrading from MariaDB Community Server 10.4 or later, the package is called galera-4:

      When upgrading from MariaDB Community Server 10.3 or earlier, the package is called galera:

    • Before proceeding, verify that all MariaDB Community Server packages are uninstalled. The following command should not return any results:

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 10.3.

      To configure APT package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    • Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 10.3.

      To configure ZYpp package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Install MariaDB Enterprise Server and package dependencies:

      Installation of additional packages may be required for some plugins.

    • Configure MariaDB.

      Installation only loads MariaDB Enterprise Server to the system. MariaDB Enterprise Server requires configuration before the database server is ready for use.

    • sudo systemctl enable mariadb

      Disable during startup

      sudo systemctl disable mariadb

      Status

      sudo systemctl status mariadb

      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      https://customers.mariadb.com/downloads/token/arrow-up-right
      https://customers.mariadb.com/downloads/token/arrow-up-right
      VERSION()
      mariadb_es_repo_setup
      mariadb_es_repo_setup
      ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 10.3.

      To configure APT package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Update MariaDB Enterprise Server and package dependencies:

    • ,
      10.5
      ,
      10.4
      , and
      10.3
      . Pass the version to install using the
      --mariadb-server-version
      flag to
      . The following directions reference 10.4.

      To configure ZYpp package repositories:

      1. Checksums of the various releases of the mariadb_es_repo_setup script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Substitute ${checksum} in the example above with the latest checksum.

    • Update MariaDB Enterprise Server and package dependencies:

    • sudo systemctl enable mariadb

      Disable during startup

      sudo systemctl disable mariadb

      Status

      sudo systemctl status mariadb

      mariadb_es_repo_setup
      Versions
      MariaDB Package Repository Setup and Usage
      https://customers.mariadb.com/downloads/token/arrow-up-right
      https://customers.mariadb.com/downloads/token/arrow-up-right
      VERSION()
      mariadb_es_repo_setup
      mariadb_es_repo_setup
      $ sudo apt remove galera-4
      $ sudo apt remove galera-3
      $ apt list --installed | grep -i -E "mariadb|galera"
      $ sudo zypper remove galera-4
      $ sudo zypper remove galera
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.5"
      $ sudo apt update
      $ sudo apt install mariadb-server mariadb-backup
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.5"
      $ sudo zypper install MariaDB-server MariaDB-backup
      $ sudo apt remove galera-4
      $ sudo apt remove galera-3
      $ apt list --installed | grep -i -E "mariadb|galera"
      $ sudo zypper remove galera-4
      $ sudo zypper remove galera
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      $ sudo apt update
      $ sudo apt install mariadb-server mariadb-backup
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.4"
      $ sudo zypper install MariaDB-server MariaDB-backup
      $ apt list --installed | grep -i -E "mariadb|galera"
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt install mariadb-server mariadb-backup
      $ sudo zypper install MariaDB-server MariaDB-backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum remove galera-4
      $ sudo yum remove galera
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt-get remove "mariadb-*"
      $ sudo zypper remove "MariaDB-*"
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="11.4"
      $ sudo yum install MariaDB-server MariaDB-backup
      SELECT VERSION();
      +------------------+
      | VERSION()        |
      +------------------+
      | 11.4.5-3-MariaDB |
      +------------------+
      $ sudo apt remove galera-4
      $ sudo apt remove galera-3
      $ sudo zypper remove galera-4
      $ sudo zypper remove galera
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="11.4"
      $ sudo apt update
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="11.4"
      $ apt list --installed | grep -i -E "mariadb|galera"
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt install mariadb-server mariadb-backup
      $ sudo zypper install MariaDB-server MariaDB-backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum remove galera-4
      $ sudo yum remove galera
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt-get remove "mariadb-*"
      $ sudo zypper remove "MariaDB-*"
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.6"
      $ sudo yum install MariaDB-server MariaDB-backup
      SELECT VERSION();
      +-----------------+
      | VERSION()       |
      +-----------------+
      | 10.6.21-MariaDB |
      +-----------------+
      $ sudo apt remove galera-4
      $ sudo apt remove galera-3
      $ sudo zypper remove galera-4
      $ sudo zypper remove galera
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.6"
      $ sudo apt update
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.6"
      $ apt list --installed | grep -i -E "mariadb|galera"
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt install mariadb-server mariadb-backup
      $ sudo zypper install MariaDB-server MariaDB-backup
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum remove galera-4
      $ sudo yum remove galera
      $ rpm --query --all | grep -i -E "mariadb|galera"
      $ sudo apt-get remove "mariadb-*"
      $ sudo zypper remove "MariaDB-*"
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      $ sudo yum install MariaDB-server MariaDB-backup
      SELECT VERSION();
      +-----------------+
      | VERSION()       |
      +-----------------+
      | 10.3.39-MariaDB |
      +-----------------+
      $ sudo apt remove galera-4
      $ sudo apt remove galera-3
      $ sudo zypper remove galera-4
      $ sudo zypper remove galera
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      $ sudo apt update
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      $ sudo apt install --only-upgrade "mariadb-*" "galera*"
      $ sudo zypper update "MariaDB-*" "galera*"
      $ sudo mariadb-backup --prepare \
            --target-dir=/data/backup/preupgrade_backup
      $ sudo systemctl stop mariadb
      $ sudo yum install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      $ sudo yum update "MariaDB-*" "galera*"
      SELECT VERSION();
      +-------------------------------+
      | VERSION()                     |
      +-------------------------------+
      | 10.3.39-20-MariaDB-Enterprise |
      +-------------------------------+
      $ sudo apt install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"
      $ sudo apt update
      $ sudo zypper install curl
      $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      $ echo "${checksum}  mariadb_es_repo_setup" \
          | sha256sum -c -
      $ chmod +x mariadb_es_repo_setup
      $ sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
         --mariadb-server-version="10.3"

      MariaDB-backup-debuginfo

      Debuginfo for mariadb-backup

      MariaDB-client

      Client tools like mariadb CLI, mariadb-dump, and others

      MariaDB-client-compat

      Symbolic links from old MySQL tool names to MariaDB, like mysqladmin → mariadb-admin or mysql → mariadb. Good to have if you are using MySQL tool names in your scripts

      MariaDB-client-debuginfo

      Debuginfo for client tools like mariadb CLI, mariadb-dump, and others

      MariaDB-columnstore-cmapi

      MariaDB ColumnStore cluster management API (CMAPI) and command line tool

      MariaDB-columnstore-engine

      The

      MariaDB-columnstore-engine-debuginfo

      Debuginfo for MariaDB-columnstore-engine

      MariaDB-common

      Character set files and /etc/my.cnf

      MariaDB-common-debuginfo

      Debuginfo for character set files and /etc/my.cnf

      MariaDB-cracklib-password-check

      The cracklib_password_check password validation plugin

      MariaDB-cracklib-password-check-debuginfo

      Debuginfo for the cracklib_password_check password validation plugin

      MariaDB-devel

      Development headers and static libraries

      MariaDB-devel-debuginfo

      Debuginfo for development headers and static libraries

      MariaDB-gssapi-server

      The gssapi authentication plugin

      MariaDB-gssapi-server-debuginfo

      Debuginfo for the gssapi authentication plugin

      MariaDB-hashicorp-key-management

      Encryption plugin that uses Hashicorp Vault for storing encryption keys for MariaDB Data-at-Rest encryption

      MariaDB-hashicorp-key-management-debuginfo

      Debuginfo for MariaDB-hashicorp-key-management

      MariaDB-provider-bzip2

      BZip2 compression support in the server and storage engines

      MariaDB-provider-bzip2-debuginfo

      Debuginfo for MariaDB-provider-bzip2

      MariaDB-provider-lz4

      LZ4 compression support in the server and storage engines

      MariaDB-provider-lz4-debuginfo

      Debuginfo for MariaDB-provider-lz4

      MariaDB-provider-lzma

      LZMA compression support in the server and storage engines

      MariaDB-provider-lzma-debuginfo

      Debuginfo for MariaDB-provider-lzma

      MariaDB-provider-lzo

      LZO compression support in the server and storage engines

      MariaDB-provider-lzo-debuginfo

      Debuginfo for MariaDB-provider-lzo

      MariaDB-provider-snappy

      Snappy compression support in the server and storage engines

      MariaDB-provider-snappy-debuginfo

      Debuginfo for MariaDB-provider-snappy

      MariaDB-rocksdb-engine

      The

      MariaDB-rocksdb-engine-debuginfo

      Debuginfo for the MyRocks storage engine

      MariaDB-s3-engine

      The , which allows one to archive MariaDB tables in Amazon S3 (or any third-party public or private cloud that implements S3 API), but still have them accessible in MariaDB in read-only mode

      MariaDB-s3-engine-debuginfo

      Debuginfo for the S3 storage engine

      MariaDB-server

      The server and server tools, like myisamchk and mariadb-hotcopy are here

      MariaDB-server-compat

      Symbolic links from old MySQL server executable names to MariaDB, like mysqld -> mariadbd or mysql_install_db -> mariadb-install-db. Good to have if you are using MySQL tool names in your scripts

      MariaDB-server-debuginfo

      Debuginfo for the server and server tools, like myisamchk and mariadb-hotcopy are here

      MariaDB-shared

      Dynamic client libraries

      MariaDB-shared-debuginfo

      Debuginfo for dynamic client libraries

      MariaDB-spider-engine

      The

      MariaDB-spider-engine-debuginfo

      Debuginfo for the Spider storage engine

      Additionally, the following RPMs are available in the MariaDB Enterprise Unsupported repository:

      Package Name
      Description

      MariaDB-connect-engine

      The CONNECT storage engine

      MariaDB-connect-engine-debuginfo

      Debuginfo for the CONNECT storage engine

      MariaDB-connect-engine-jdbc

      Connect storage engine JDBC interface used to interact with external DBMS via Java connector

      MariaDB-test

      The following RPMs are in MariaDB Community Server 12.1:

      Package Name
      Description

      galera-4

      The WSREP provider for Galera 4

      galera-4-debuginfo

      Debuginfo for galera-4

      galera-4-debugsource

      galera-4

      The WSREP provider for Galera 4

      galera-4-debuginfo

      Debuginfo for galera-4

      MariaDB-backup

      MariaDB-compat

      Old shared client libraries, removed in MariaDB 11.4 as they were no longer needed

      MariaDB-tokudb-engine

      The TokuDB storage engine. It was disabled in MariaDB 10.5 and removed in MariaDB 10.6

      spinner

      is a command-line utility for creating consistent and reliable backups of MariaDB databases, supporting full and incremental backup options

      AddressSanitizer (aka ASAN)arrow-up-right

    • UndefinedBehaviourSanitizer (aka UBSAN)arrow-up-right

    • ThreadSanitizer (aka TSAN)arrow-up-right

    • MemorySanitizer (aka MSAN)arrow-up-right

    • hashtag
      How to Compile MariaDB with Sanitizers

      Before using ASAN locally, please ensure that it is installed on the system:

      You can use one of the two following build commands:

      Additionally, UBSAN, TSAN, and MSAN can be enabled in a similar way:

      UBSAN:

      TSAN:

      MSAN:

      Important to note MSAN requires instrumented c++ and system libraries to have a functioning build per container guide below.

      hashtag
      Buildbot's MSAN container

      The time consuming aspect of building with MSAN is having instrumented system librariesarrow-up-right. To help with this MariaDB Foundation has built the MSAN container for buildbot, but this is reusable locally.

      The MariaDB Buildbot MSAN container, quay.io/mariadb-foundation/bb-worker:debian12-msan-clang-20 is a container with:

      • the instrumented libraries required for MSAN

      • a very modern clang version

      • a stable Debian as a base image

      • a compiled for debugging

      The build of this container isn't hard coded to MSAN so it can be used for:

      • A general Debian build container

      • Using the gcc/g++ of Debian (by removing the CC and CXX environment variables

      • Compiling with a latest clang

      • Compiling with the ASAN/UBSAN feature available in the latest clang

      hashtag
      Running the MSAN container

      First, run the container where your current directory is the source directory.

      For Podman:

      The /build options for Docker Engine are slightly different as they default to noexec and a root ownership by default.

      The purposes of these, and other options include:

      Command Component
      Purpose
      Notes

      podman run / docker run

      run a container

      other implementations use docker syntax (or at least close)

      --rm

      remove container on termination

      Notes:

      • /dev/shm is mounted no-exec so it rr recording here cannot be replayed while in that location

      • optionally can make /build a filesystem mount to preserve the build.

      There are environment variables that affect the cmake configure options and mtr are:

      Note: Galera WSREP_PROVIDER isn't instrumented with any sanitizer

      Check the latest version of these running env.

      hashtag
      Running an MSAN Build

      Once you have started the MSAN container this is how you perform a MSAN build.

      The time consuming aspect of building with MSAN is having instrumented system librariesarrow-up-right.

      All the following instructions are executed within the container - there is a document in /etc/motd that contains the latest information. Start by running the configure stage of cmake:

      MSAN is a clang only compile options and other compilers will not work.

      CMake Options
      Why

      UPDATE_SUBMODULES=OFF

      The source directory is read-only so cannot be updated from within the container

      WITH_MSAN=ON

      Enables MSAN build in compile options

      CMAKE_{EXE,MODULE}_LINKER_FLAGS

      links executables and shared libraries against the instrumented libraries with a rpath so a LD_LIBRARY_PATH environment variable isn't required

      WITH_INNODB_{BZIP2,LZ4,LZMA,LZO,SNAPPY}=OFF

      Run the build stage:

      As the MSAN has rpath defined in its compile option there is no need for LD_LIBRARY_PATH manipulation.

      To run tests:

      As newer versions occur and improvements happen these instructions may change. Look at the execution on the buildbot builderarrow-up-right to see if any changes have been made.

      hashtag
      Bug Reporting

      Use the MSAN in the label when reporting bugs.

      Current outstanding MSAN bugs can be found on JIRA by searching for this labelarrow-up-right.

      hashtag
      Running an combined ASAN and UBSAN Build

      The clang implemented instrumentation of the MemorySanitizer (MSAN) conflicts with the AddressSanitizer (ASAN) and UndefinedBehaviour (UBSAN) mechanisms, however ASAN and UBSAN can be combined into the same build.

      After starting the MSAN container the following will configure a combined ASAN and UBSAN build:

      CMake Options
      Why

      UPDATE_SUBMODULES=OFF

      The source directory is read-only so cannot be updated from within the container

      WITH_ASAN=ON

      Enables Address Sanitizer build in compile options

      WITH_ASAN_SCOPED=ON

      Enables Address Sanitizer Use after Scope checking

      WITH_UBSAN=ON

      Build and test run are standard.

      Note: list of unfixed UBSAN issues by MariaDB Corporation Testingarrow-up-right.

      hashtag
      Bug Reporting

      UBSAN bugs are labelled with UBSAN and also the short form of the undefined behaviour.

      For example in the following output, the insufficient-object-size would be used as the additional short form of the label.

      Likewise for ASAN, should use ASAN as the label with the short form of the ASAN type from the output.

      hashtag
      Using RR

      In the MSAN container, there is a build version of the latest rr at the time of the container build.

      A recording of the execution can be make with the mariadb-test-run.pl option --rr. Or alternately you can execute:

      To replay a recording adjust per the test worker and instance used in the test:

      Using curl in the container its possible to save up this directory for another user or developer to use with the same container. This can also be shared with our public ftp server for assistance diagnosing validating a bug report.

      hashtag
      ASAN Options

      To run mariadbd with instrumentation you have to set the ASAN_OPTIONS environment variable before starting mariadbd including starting mariadbd when running mtr.

      The above command will abort any instrumented executable if any errors are found, which is good for debugging. If you set abort_on_error=0 all server errors are logged to your error log file (mysqld.err).

      To catch errors for other processes than the server, you can set more options, like this:

      If you are seeing an incomplete stack trace for a memory allocation, you may rerun the failing test with

      To get core dumps of failures:

      To see all the options (or to check if an executable is instrumented), you may try the following:

      hashtag
      Using Valgrind

      The MariaDB test system can use Valgrindarrow-up-right for finding memory leaks and wrong memory accesses. Valgrind is an instrumentation framework for building dynamic analysis tools. If Valgrind is installed on your system, you can simply use mysql-test-run --valgrind to run the test under Valgrind.

      hashtag
      See Also

      This page is licensed: CC BY-SA / Gnu FDL

      spinner

      sudo systemctl enable mariadb

      Disable during startup

      sudo systemctl disable mariadb

      Status

      sudo systemctl status mariadb

      sudo systemctl enable mariadb

      Disable during startup

      sudo systemctl disable mariadb

      Status

      sudo systemctl status mariadb

      cmake  -DWITH_ASAN=ON /source
      cmake -DWITH_UBSAN=ON /source
      cmake -DWITH_TSAN=ON /source
      cmake -DWITH_MSAN=ON /source
      podman run -v $PWD:/source:z \
        --rm \
        -ti \
        --entrypoint bash \
        --mount=type=tmpfs,tmpfs-size=10G,dst=/build \
        --workdir /build \
         quay.io/mariadb-foundation/bb-worker:debian12-msan-clang-20
      docker run -v $PWD:/source:z \
        --rm \
        -ti \
        --entrypoint bash \
        --tmpfs /build:size=10G,exec,uid=1000 \
        --workdir /build \
        quay.io/mariadb-foundation/bb-worker:debian12-msan-clang-20
      CXX=clang++
      CC=clang
      MSAN_LIBDIR=/msan-libs
      CMAKE_GENERATOR=Ninja
      MSAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-20
      WSREP_PROVIDER=/usr/lib/galera/libgalera_smm.so
      MTR_PARALLEL=auto
      ASAN_OPTIONS=quarantine_size_mb=512:atexit=0:detect_invalid_pointer_pairs=3:dump_instruction_bytes=1:allocator_may_return_null=1
      UBSAN_OPTIONS=print_stacktrace=1:report_error_type=1
      MSAN_OPTIONS=abort_on_error=1:poison_in_dtor=0
      cmake \
            -DUPDATE_SUBMODULES=OFF \
            -DWITH_MSAN=ON  \
            -DCMAKE_{EXE,MODULE}_LINKER_FLAGS="-L${MSAN_LIBDIR} -Wl,-rpath=${MSAN_LIBDIR}" \
            -DHAVE_CXX_NEW=1  \
            -DWITH_INNODB_{BZIP2,LZ4,LZMA,LZO,SNAPPY}=OFF \
            -DWITH_ZLIB=bundled  \
            -DWITH_NUMA=NO  \
            -DWITH_SYSTEMD=no \
            -DHAVE_LIBAIO_H=0    \
            -DCMAKE_DISABLE_FIND_PACKAGE_{URING,LIBAIO}=1  \
            -DPLUGIN_{MROONGA,ROCKSDB,OQGRAPH}=NO  \
            -DWITH_EMBEDDED_SERVER=OFF \
            /source
      cmake --build . 
      ...
      [100%] Built target mariadbd
      [100%] Linking CXX executable mariadb-backup
      Creating mariadb-backup link
      [100%] Built target mariadb-backup
      mysql-test/mtr   (usual mtr options)
      cmake \
            -DUPDATE_SUBMODULES=OFF \
            -DWITH_ASAN=ON  \
            -DWITH_ASAN_SCOPED=ON \
            -DWITH_UBSAN=ON  \
            -DWITH_UNIT_TESTS=OFF \
           /source
      SUMMARY: UndefinedBehaviorSanitizer: insufficient-object-size /source/sql/item_strfunc.cc:5256:44 
       /source/sql/item_strfunc.cc:5256:44
      $ rr record sql/mariadbd ......
      $ rr replay mysql-test/var/log/mysqld.1.rr/mariadbd-0/
      export ASAN_OPTIONS=abort_on_error=1
      export ASAN_OPTIONS=abort_on_error=1:log_path=/tmp/asan
      export ASAN_OPTIONS=abort_on_error=1:log_path=/tmp/asan:fast_unwind_on_malloc=0
      export ASAN_OPTIONS=abort_on_error=1:disable_coredump=0
      ASAN_OPTIONS=help=1 extra/perror 0
      $ sudo zypper install MariaDB-spider-engine

      mysql-client-test executable, and mysql-test framework with the tests

      MariaDB-test-debuginfo

      Debuginfo for MariaDB-test

      Debug sources for package galera-4

      MariaDB-backup

      mariadb-backup is a command-line utility for creating consistent and reliable backups of MariaDB databases, supporting full and incremental backup options

      MariaDB-backup-debuginfo

      Debuginfo for mariadb-backup

      MariaDB-client

      Client tools like mariadb CLI, mariadb-dump, and others

      MariaDB-client-compat

      Symbolic links from old MySQL tool names to MariaDB, like mysqladmin -> mariadb-admin or mysql -> mariadb. Good to have if you are using MySQL tool names in your scripts

      MariaDB-client-debuginfo

      Debuginfo for client tools like mariadb CLI, mariadb-dump, and others

      MariaDB-columnstore-engine

      The

      MariaDB-columnstore-engine-debuginfo

      Debuginfo for MariaDB-columnstore-engine

      MariaDB-common

      Character set files and /etc/my.cnf

      MariaDB-common-debuginfo

      Debuginfo for character set files and /etc/my.cnf

      MariaDB-connect-engine

      The CONNECT storage engine

      MariaDB-connect-engine-debuginfo

      Debuginfo for the CONNECT storage engine

      MariaDB-connect-engine-jdbc

      Connect storage engine JDBC interface used to interact with external DBMS via Java connector

      MariaDB-cracklib-password-check

      The cracklib_password_check password validation plugin

      MariaDB-cracklib-password-check-debuginfo

      Debuginfo for the cracklib_password_check password validation plugin

      MariaDB-devel

      Development headers and static libraries

      MariaDB-devel-debuginfo

      Debuginfo for development headers and static libraries

      MariaDB-gssapi-server

      The gssapi authentication plugin

      MariaDB-gssapi-server-debuginfo

      Debuginfo for the gssapi authentication plugin

      MariaDB-hashicorp-key-management

      Encryption plugin that uses Hashicorp Vault for storing encryption keys for MariaDB Data-at-Rest encryption

      MariaDB-hashicorp-key-management-debuginfo

      Debuginfo for MariaDB-hashicorp-key-management

      MariaDB-oqgraph-engine

      The Open Query GRAPH computation engine, or OQGRAPH, storage engine

      MariaDB-oqgraph-engine-debuginfo

      Debuginfo for the OQGRAPH storage engine

      MariaDB-provider-bzip2

      BZip2 compression support in the server and storage engines

      MariaDB-provider-bzip2-debuginfo

      Debuginfo for MariaDB-provider-bzip2

      MariaDB-provider-lz4

      LZ4 compression support in the server and storage engines

      MariaDB-provider-lz4-debuginfo

      Debuginfo for MariaDB-provider-lz4

      MariaDB-provider-lzma

      LZMA compression support in the server and storage engines

      MariaDB-provider-lzma-debuginfo

      Debuginfo for MariaDB-provider-lzma

      MariaDB-provider-lzo

      LZO compression support in the server and storage engines

      MariaDB-provider-lzo-debuginfo

      Debuginfo for MariaDB-provider-lzo

      MariaDB-provider-snappy

      Snappy compression support in the server and storage engines

      MariaDB-provider-snappy-debuginfo

      Debuginfo for MariaDB-provider-snappy

      MariaDB-rocksdb-engine

      The MyRocks storage engine

      MariaDB-rocksdb-engine-debuginfo

      Debuginfo for the MyRocks storage engine

      MariaDB-s3-engine

      The S3 storage engine, which allows one to archive MariaDB tables in Amazon S3 (or any third-party public or private cloud that implements S3 API), but still have them accessible in MariaDB in read-only mode

      MariaDB-s3-engine-debuginfo

      Debuginfo for the S3 storage engine

      MariaDB-server

      The server and server tools, like myisamchk and mariadb-hotcopy are here

      MariaDB-server-compat

      Symbolic links from old MySQL server executable names to MariaDB, like mysqld -> mariadbd or mysql_install_db -> mariadb-install-db. Good to have if you are using MySQL tool names in your scripts

      MariaDB-server-debuginfo

      Debuginfo for the server and server tools, like myisamchk and mariadb-hotcopy are here

      MariaDB-shared

      Dynamic client libraries

      MariaDB-shared-debuginfo

      Debuginfo for dynamic client libraries

      MariaDB-test

      mysql-client-test executable, and mysql-test framework with the tests

      MariaDB-test-debuginfo

      Debuginfo for MariaDB-test

      mariadb-backup
      MyRocks storage engine
      S3 storage engine
      Spider storage engine

      -ti

      a tty and a stdin are connected

      for interactive container use

      -v "$PWD":/source:z

      mount current directory as /source inside the container - :z - read selinux label

      --mount=type=tmpfs,tmpfs-size=10G,dst=/build

      a 10G build directory and mtr under podman

      keeps as transient, big enough for some mtr tests

      --tmpfs /build:size=10G,exec,uid=1000

      a 10G build directory and mtr for docker

      keeps as transient, big enough for some mtr tests, exec and uid needed by build/tests

      --workdir /build

      default directory

      --entrypoint bash

      Ensure the cmd of buildbot start isn't executed

      --cap-add=SYS_PTRACE

      capability for tracing used by gdb and rr

      for debugging

      Extra options

      --name containername

      useful if running multiple to keep track

      Used as a name for a new session in the container (podman exec -ti containername bash)

      --shm-size=10g

      Size of /dev/shm as alternate for mtr tests

      Default is unsable 64k, This is large enough for most --big-tests with some parallelism

      --privileged

      Allow rr recording

      Note security impacting, don't run untrusted code as root

      -v $DATADIR:/var/lib/mysql:Z

      Mount an existing datadir

      For testing against some prepared data

      system libraries for these haven't been MSAN instrumented currently

      HAVE_CXX_NEW

      Works around a ODR violation

      WITH_ZLIB=bundled

      This hasn't been MSAN instrumented currently

      WITH_NUMA / WITH_SYSTEMD

      both uninstrumented

      HAVE_LIBAIO_H=0 / CMAKE_DISABLE_FIND_PACKAGE_LIBAIO

      AIO currently not MSAN instrumented

      CMAKE_DISABLE_FIND_PACKAGE_URING=NO

      Uninstrumented MDEV-36482arrow-up-right, and required seccomp adjustment or --privileged to work

      PLUGIN_OQGRAPH (and PLUGIN_COLUMNSTORE)

      Dependency on boost libraries are instrumented

      WITH_EMBEDDED_SERVER=OFF

      reduce build time

      WITH_DBUG_TRACE=OFF

      reduce runtime overhead if CMAKE_BUILD_TYPE=Debug chosen

      Enables UBSAN build in compile options

      WITH_UNIT_TESTS=OFF or PLUGIN_PERFSCHEMA=OFF

      clang is incompatible with performance schema unit tests, at least one must be disabled (ref: MDEV-22940arrow-up-right)

      rrarrow-up-right

      Compatibility and Breaking Changes for MariaDB Enterprise Server 10.5

      circle-info

      hashtag
      Guide Overview

      This page acts as a technical reference, highlighting the logical impacts, architectural changes, and potential breaking points when upgrading to MariaDB Enterprise Server 10.5. It focuses on technical issues identified through customer support and engineering audits. This guide aims to supplement the comprehensive feature summaries available in the page for MariaDB Enterprise Server 10.5.

      For a full rundown of new features and overall improvements, users should consult the What's New guide. Note that for better clarity and accessibility, the technical specifics here may be integrated into the What's New guide in future documentation updates.

      hashtag
      Architectural Changes

      hashtag
      Binary and Process Renaming

      MariaDB Enterprise Server 10.5 completes the transition to MariaDB-prefixed names for all executables.

      • Process Identification: While symbolic links (e.g., mysqld) are provided for backward compatibility, the primary server binary is now mariadbd.

      • Monitoring Alert: When started via systemd or mariadbd-safe, the process will identify as mariadbd in the system process list.

      hashtag
      Security and Privileges

      hashtag
      Granularity (The "SUPER" Split)

      In 10.5, the SUPER privilege has been deconstructed into several smaller, granular privileges to improve security.

      hashtag
      Configuration and Include Paths

      hashtag
      Debian and Ubuntu Path Logic

      Beginning with 10.5, the configuration loading logic on Debian and Ubuntu has shifted:

      • Directory Priority: The directory /etc/mysql/mariadb.conf.d/ now uses numeric prefixes to dictate loading order.

      • Enterprise Overrides: The mariadb-enterprise.cnf file is typically loaded last, potentially overriding user-defined settings in 50-server.cnf.

      hashtag
      Pre-Upgrade Requirements

      hashtag
      Mandatory Clean Shutdown

      Upgrading from 10.4 to 10.5 after a crash is not supported if the redo log was created in 10.4.

      • Requirement: You must perform a clean shutdown (setting SET GLOBAL innodb_fast_shutdown = 0 is recommended) before initiating the upgrade.

      • Redo Log Adjustment: If innodb-log-files-in-group is set to 2, it must be changed to 1 on the 10.4 instance, followed by a restart and a final clean shutdown before moving to 10.5.

      hashtag
      Critical Parameter Shifts

      Installing Galera from source

      Impact: Custom monitoring scripts using ps, pidof, or pgrep to look for mysqld will fail and must be updated to look for mariadbd.

      REPLICATION CLIENT

      REPLICATION MASTER ADMIN

      PURGE BINARY LOGS

      SUPER

      BINLOG ADMIN

      "all" was found to cause performance loss in certain workloads.

      innodb_log_files_in_group

      2

      1

      Redo logs are no longer split; additional files are ignored.

      innodb_buffer_pool_instances

      8

      1

      Multiple instances no longer reduce contention and are ignored.

      slave_parallel_mode

      conservative

      optimistic

      Speeds up replication by default.

      Command / Operation

      Legacy Privilege (10.4)

      New Required Privilege (10.5)

      SHOW REPLICA STATUS

      REPLICATION CLIENT

      REPLICA MONITOR

      SHOW BINLOG EVENTS

      REPLICATION SLAVE

      BINLOG MONITOR

      Parameter

      10.4 Default

      10.5 Default

      Impact

      innodb_adaptive_hash_index

      ON

      OFF

      Disabled to prevent potential performance issues.

      innodb_change_buffering

      all

      SHOW SLAVE HOSTS

      none

      Moving from MySQL to MariaDB in Debian 9

      A guide on migrating from MySQL 5.5 to MariaDB 10.1 during an operating system upgrade to Debian 9 (Stretch).

      circle-exclamation

      This page is obsolete. The information is old, outdated, or otherwise currently incorrect. We are keeping the page for historical reasons only. Do not rely on the information in this article.

      MariaDB 10.1arrow-up-right is now the default mysql server in Debian 9 "Stretch". This page provides information on this change and instructions to help with upgrading your Debian 8 "Jessie" version of MySQL or MariaDB to MariaDB 10.1arrow-up-right in Debian 9 "Stretch".

      hashtag
      Background information

      The version of MySQL in Debian 8 "Jessie" is 5.5. When installing, most users will install the mysql-server package, which depends on the mysql-server-5.5 package. In Debian 9 "Stretch" the mysql-server package depends on a new package called default-mysql-server. This package in turn depends on mariadb-server-10.1. There is no default-mysql-server package in Jessie.

      In both Jessie and Stretch there is also a mariadb-server package which is a MariaDB-specific analog to the mysql-server package. In Jessie this package depends on mariadb-server-10.0 and in Stretch this package depends on mariadb-server-10.1 (the same as the default-mysql-server package).

      So, the main repository difference in Debian 9 "Stretch" is that when you install the mysql-server package on Stretch you will get instead of MySQL, like you would with previous versions of Debian. Note that mysql-server is just an empty transitional meta-package and users are encouraged to install MariaDB using the actual package mariadb-server.

      All apps and tools, such as the popular LAMP stack, in the repositories that depend on the mysql-server package will continue to work using MariaDB as the database. For new installs there is nothing different that needs to be done when installing the mysql-server or mariadb-server packages.

      hashtag
      Before you upgrade

      If you are currently running MySQL 5.5 on Debian 8 "Jessie" and are planning an upgrade to on Debian 9 "Stretch", there are some things to keep in mind:

      hashtag
      Backup before you begin

      This is a major upgrade, and so complete database backups are strongly suggested before you begin. is compatible on disk and wire with MySQL 5.5, and the MariaDB developer team has done extensive development and testing to make upgrades as painless and trouble-free as possible. Even so, it's always a good idea to do regular backups, especially before an upgrade. As the database has to shut down anyway for the upgrade, this is a good opportunity to do a backup!

      hashtag
      Changed, renamed, and removed options

      Some default values have been changed, some have been renamed, and others have been removed between MySQL 5.5 and . The following sections detail them.

      hashtag
      Options with changed default values

      Most of the following options have increased a bit in value to give better performance. They should not use much additional memory, but some of them do use a bit more disk space. []

      Option
      Old default value
      New default value

      hashtag
      Options that have been removed or renamed

      The following options should be removed or renamed if you use them in your config files:

      Option
      Reason

      hashtag
      Suggested upgrade procedure for replication

      If you have a , the normal procedure is to first upgrade your slaves to MariaDB, then move one of your slaves to be the master and then upgrade your original master. In this scenario you can upgrade from MySQL to MariaDB or upgrade later to a new version of MariaDB without any downtime.

      hashtag
      Other resources to consult before beginning your upgrade

      It may also be useful to check out the section. It contains several articles on upgrading from MySQL to MariaDB and from one version of MariaDB to another. For upgrade purposes, MySQL 5.5 and are very similar. In particular, see the and articles.

      If you need help with upgrading or setting up replication, you can always to find experts to help you with this.

      hashtag
      Upgrading to from MySQL 5.5

      hashtag
      Pre-Upgrade Preparation

      1. Set InnoDB for a Full Shutdown Set innodb_fast_shutdown to 0. This is to ensure that if you make a backup as part of the upgrade, all data is written to the InnoDB data files, which simplifies any restore in the future.

      2. Shutdown MySQL Shutdown your MySQL 5.5 server.

      OS and Database Upgrade

      1. Perform the OS Upgrade Proceed with the upgrade from Debian 8 to Debian 9.

        • Automatic Database Upgrade Process During the Debian upgrade, the mysql_upgrade script will be run automatically. This script does two things:

      Post-Upgrade Configuration

      1. Update Configuration and Restart You can now add new options to your my.cnf file to enable new features.

        • After changing my.cnf, you must restart the mysqld service.

        or

      hashtag
      Upgrading to from an older version of MariaDB

      If you have installed or on your Debian 8 "Jessie" machine from the MariaDB repositories you will need to upgrade to when upgrading to Debian 9 "Stretch". You can choose to continue using the MariaDB repositories or move to using the Debian repositories.

      If you want to continue using the MariaDB repositories edit the MariaDB entry in your sources.list and change every instance of 5.5 or 10.0 to 10.1. Then upgrade as suggested .

      If you want to move to using from the Debian repositories, delete or comment out the MariaDB entries in your sources.list file. Then upgrade as suggested .

      If you are already using on your Debian 8 "Jessie" machine, you can choose to continue to use the MariaDB repositories or move to using the Debian repositories as with and 10.0. In either case, the upgrade will at most be just a minor upgrade from one version of to a newer version. In the case that you are already on the current version of MariaDB that exists in the Debian repositories or a newer one) MariaDB will not be upgraded during the system upgrade but will be upgraded when future versions of MariaDB are released.

      You should always perform a compete backup of your data prior to performing any major system upgrade, even if MariaDB itself is not being upgraded!

      hashtag
      MariaDB Galera Cluster

      If you have been using MariaDB Galera Cluster 5.5 or 10.0 on Debian 8 "Jessie" it is worth mentioning that is included by default in , there is no longer a need to install a separate mariadb-galera-server package.

      hashtag
      Configuration options for advanced database users

      To get better performance from MariaDB used in production environments, here are some suggested additions to which in Debian is at /etc/mysql/mariadb.d/my.cnf:

      The reason for the above change is that MariaDB is using the newer storage engine for disk based temporary files instead of MyISAM. The main benefit of Aria is that it can cache both indexes and rows and thus gives better performance than MyISAM for large queries.

      hashtag
      Secure passwordless root accounts only on new installs

      Unlike the old MySQL packages in Debian, onwards in Debian uses unix socket authentication on new installs to avoid root password management issues and thus be more secure and easier to use with provision systems of the cloud age.

      This only affects new installs. Upgrades from old versions will continue to use whatever authentication and user accounts already existed. This is however good to know, because it can affect upgrades of dependant systems, typically e.g. require users to rewrite their Ansible scripts and similar tasks. The new feature is much easier than the old, so adjusting for it requires little work.

      hashtag
      See also

      hashtag
      Comments and suggestions

      If you have comments or suggestions on things we can add or change to improve this page. Please add them as comments below.

      hashtag
      Notes

      1. The innodb-open-files variable defaults to the value of table-open-cache (400 is the default) if it is set to any value less than 10 so long as innodb-file-per-table is set to 1 or TRUE (the default). If innodb_file_per_table is set to 0 or FALSE

      This page is licensed: CC BY-SA / Gnu FDL

      bootstrapped
      bootstrapped

      500

      5000

      5M

      48M

      ON

      OFF

      0

      1000

      300

      400

      20

      300

      ON

      20

      128K

      256K

      1M

      4M

      10

      100

      0

      1024M

      8M

      128M

      ...

      Added extended_keys=on, exists_to_in=on

      8192

      16384

      0

      1M

      ON

      OFF

      8192

      24576

      OFF

      ON

      No longer affects replication of events in a Galera cluster.

      empty

      NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

      0

      10000

      0

      10000

      0

      10000

      400

      2000

      500

      1000

      innodb-buffer-pool-pages

      Removed by XtraDB

      innodb-buffer-pool-pages-blob

      Removed by XtraDB

      innodb-buffer-pool-pages-index

      Removed by XtraDB

      innodb-buffer-pool-restore-at-startup

      Removed by XtraDB

      innodb-buffer-pool-shm-checksum

      Removed by XtraDB

      innodb-buffer-pool-shm-key

      Removed by XtraDB

      innodb-checkpoint-age-target

      Removed by XtraDB

      innodb-dict-size-limit

      Removed by XtraDB

      innodb-doublewrite-file

      Removed by XtraDB

      innodb-fast-checksum

      Renamed to

      innodb-flush-neighbor-pages

      Renamed to

      innodb-ibuf-accel-rate

      Removed by XtraDB

      innodb-ibuf-active-contract

      Removed by XtraDB

      innodb-ibuf-max-size

      Removed by XtraDB

      innodb-import-table-from-xtrabackup

      Removed by XtraDB

      innodb-index-stats

      Removed by XtraDB

      innodb-lazy-drop-table

      Removed by XtraDB

      innodb-merge-sort-block-size

      Removed by XtraDB

      innodb-persistent-stats-root-page

      Removed by XtraDB

      innodb-read-ahead

      Removed by XtraDB

      innodb-recovery-stats

      Removed by XtraDB

      innodb-recovery-update-relay-log

      Removed by XtraDB

      innodb-stats-auto-update

      Renamed to

      innodb-stats-update-need-lock

      Removed by XtraDB

      innodb-sys-stats

      Removed by XtraDB

      innodb-table-stats

      Removed by XtraDB

      innodb-thread-concurrency-timer-based

      Removed by XtraDB

      innodb-use-sys-stats-table

      Removed by XtraDB

      Unused in 10.0+

      xtradb-admin-command

      Removed by XtraDB

      Take a Full Backup
      • When the server is shut down is the perfect time to take a backup of your databases.

      • Store a copy of the backup on external media or a different machine for safety.

      Upgrades the permission tables in the mysql database with some new fields.

    • Does a very quick check of all tables and marks them as compatible with MariaDB 10.1.

      • In most cases, this should be a fast operation (depending of course on the number of tables).

    • General instructions for upgrading from MySQL to MariaDB

      and
      innodb-open-files
      is set to a value less than
      10
      , the default is
      300

      aria-sort-buffer-size

      128M

      256M

      back_log

      50

      150

      engine-condition-pushdown

      Replaced with set optimizer_switch='engine_condition_pushdown=on'

      innodb-adaptive-flushing-method

      Removed by XtraDB

      innodb-autoextend-increment

      Removed by XtraDB

      innodb-blocking-buffer-pool-restore

      MariaDB 10.1arrow-up-right
      MariaDB 10.1arrow-up-right
      MariaDB 10.1arrow-up-right
      MariaDB 10.1arrow-up-right
      1
      master-slave setup
      Upgrading MariaDB
      MariaDB 5.5arrow-up-right
      Upgrading from MariaDB 5.5 to MariaDB 10.0
      Upgrading from MariaDB 10.0 to MariaDB 10.1
      contact the MariaDB corporationarrow-up-right
      MariaDB 10.1arrow-up-right
      MariaDB 10.1arrow-up-right
      MariaDB 5.5arrow-up-right
      MariaDB 10.0arrow-up-right
      MariaDB 10.1arrow-up-right
      above
      MariaDB 10.1arrow-up-right
      above
      MariaDB 10.1arrow-up-right
      MariaDB 5.5arrow-up-right
      MariaDB 10.1arrow-up-right
      Galera Clusterarrow-up-right
      MariaDB 10.1arrow-up-right
      your configuration file
      Aria
      MariaDB 10.0arrow-up-right
      Differences in MariaDB in Debian (and Ubuntu)
      Configuring MariaDB for optimal performance
      New features in MariaDB you should considering usingarrow-up-right
      What is MariaDB 10.1arrow-up-right
      ↑
      spinner

      Removed by XtraDB

      Installing MariaDB .deb Files

      Complete .deb installation guide: add repo via mariadb_repo_setup, import GPG keys, apt install mariadb-server galera-4, and APT configuration.

      hashtag
      Installing MariaDB with APT

      On Debian, Ubuntu, and other similar Linux distributions, it is highly recommended to install the relevant .deb packages from MariaDB's repository using aptarrow-up-right, aptitudearrow-up-right, Ubuntu Software Centerarrow-up-right, Synaptic Package Managerarrow-up-right, or another package manager.

      This page walks you through the simple installation steps using apt.

      hashtag
      Adding the MariaDB APT repository

      We currently have APT repositories for the following Linux distributions:

      • Debian 11 (Bullseye)

      • Debian 12 (Bookworm)

      • Debian 13 (Trixie)

      • Debian Unstable (Sid)

      hashtag
      Using the MariaDB Package Repository Setup Script

      If you want to install MariaDB with apt, then you can configure apt to install from MariaDB Corporation's MariaDB Package Repository by using the .

      MariaDB Corporation provides a MariaDB Package Repository for several Linux distributions that use apt to manage packages. This repository contains software packages related to MariaDB Server, including the server itself, , , , and . The MariaDB Package Repository setup script automatically configures your system to install packages from the MariaDB Package Repository.

      To use the script, execute the following command:

      Note that this script also configures a repository for and a repository for MariaDB Tools, which currently only contains and its dependencies.

      See for more information.

      hashtag
      Using the MariaDB Repository Configuration Tool

      If you want to install MariaDB with apt, then you can configure apt to install from MariaDB Foundation's MariaDB Repository by using the .

      The MariaDB Foundation provides a MariaDB repository for several Linux distributions that use apt-get to manage packages. This repository contains software packages related to MariaDB Server, including the server itself, , , , and . The MariaDB Repository Configuration Tool can easily generate the appropriate commands to add the repository for your distribution.

      There are several ways to add the repository.

      Executing add-apt-repository

      One way to add an apt repository is by using the command. This command will add the repository configuration to /etc/apt/sources.list.

      For example, if you wanted to use the repository to install on Ubuntu 18.04 LTS (Bionic), then you could use the following commands to add the MariaDB apt repository:

      And then you would have to update the package cache by executing the following command:

      Creating a Source List File

      Another way to add an apt repository is by creating a file in /etc/apt/sources.list.d/.

      For example, if you wanted to use the repository to install on Ubuntu 18.04 LTS (Bionic), then you could create the MariaDB.list file in /etc/apt/sources.list.d/ with the following contents to add the MariaDB apt repository:

      And then you would have to update the package cache by executing the following command:

      Using Ubuntu Software Center

      Another way to add an apt repository is by using .

      You can do this by going to the Software Sources window. This window can be opened either by navigating to Edit > Software Sources or by navigating to System > Administration > Software Sources.

      Once the Software Sources window is open, go to the Other Software tab, and click the Add button. At that point, you can input the repository information provided by the .

      See for more information.

      Using Synaptic Package Manager

      Another way to add an apt repository is by using .

      You can do this by going to the Software Sources window. This window can be opened either by navigating to System > Administrator > Software Sources or by navigating to Settings > Repositories.

      Once the Software Sources window is open, go to the Other Software tab, and click the Add button. At that point, you can input the repository information provided by the .

      See for more information.

      hashtag
      Pinning the MariaDB Repository to the repository of a Specific Minor Release

      If you wish to pin the apt repository to a specific minor release, or if you would like to downgrade to a specific minor release, then you can create an apt repository with the URL hard-coded to that specific minor release.

      If you used to generate your repository configuration, simply re-run the script and specify the full version number to use with the --mariadb-server-version option.

      See on the page for details.

      The full list of MariaDB Enterprise Server releases can be found on the page.

      If you used the , then you need to update the repository file you created to include the full version number. By default the Foundation's tool configures repositories with just the main series of MariaDB, e.g. mariadb-11.8, and to pin to a specific version you need to specify the full version, for example mariadb-11.8.6

      hashtag
      Updating the MariaDB APT repository to a New Major Release

      MariaDB's apt repository can be updated to a new major release. How this is done depends on how you originally configured the repository.

      hashtag
      Updating the Major Release with the MariaDB Package Repository Setup Script

      If you configured apt to install from MariaDB Corporation's MariaDB Package Repository by using the , then you can update the major release that the repository uses by running the script again.

      hashtag
      Updating the Major Release with the MariaDB Foundation's Repository Configuration Tool

      If you configured apt to install from MariaDB Foundation's MariaDB Repository by using the , then you can update the major release in various ways, depending on how you originally added the repository.

      Updating a Repository with add-apt-repository

      If you added the apt repository by using the command, then you can update the major release that the repository uses by using the command again.

      First, look for the repository string for the old version in /etc/apt/sources.list.

      And then, you can remove the repository for the old version by executing the command and providing the --remove option. For example, if you wanted to remove a repository, then you could do so by executing something like the following:

      After that, you can add the repository for the new version with the command. For example, if you wanted to use the repository to install on Ubuntu 18.04 LTS (Bionic), then you could use the following commands to add the MariaDB apt repository:

      And then you would have to update the package cache by executing the following command:

      After that, the repository should refer to and you can .

      Updating a Source List File

      If you added the apt repository by creating a file in /etc/apt/sources.list.d/, then you can update the major release that the repository uses by updating the source list file in-place. For example, if you wanted to change the repository from to , and if the source list file was at /etc/apt/sources.list.d/MariaDB.list, then you could execute the following:

      And then you would have to update the package cache by executing the following command:

      After that, the repository should refer to and you can .

      hashtag
      Importing the MariaDB GPG Public Key

      Before MariaDB can be installed, you also have to import the GPG public key that is used to verify the digital signatures of the packages in our repositories. This allows the apt utility to verify the integrity of the packages that it installs.

      For MariaDB Community Server, see the section of the page for details on how to import the key used by those repositories on your Debian or Ubuntu system.

      For MariaDB Enterprise Server, see the section of the page for details on how to import the key used by those repositories on your Debian or Ubuntu system.

      circle-info

      Starting with Debian 9 (Stretch), the package needs to be installed before the GPG public key can be imported. To install it, execute: sudo apt install dirmngr

      Once the GPG public key is imported, you are ready to install packages from the repository.

      hashtag
      Installing MariaDB Packages with APT

      After the apt repository is configured, you can install MariaDB by executing the command. The specific command that you would use would depend on which specific packages that you want to install.

      hashtag
      Installing the Most Common Packages with APT

      To Install the most common packages, first you would have to update the package cache by executing the following command:

      To Install the most common packages, execute the following command:

      hashtag
      Installing MariaDB Server with APT

      To Install MariaDB Server, first you would have to update the package cache by executing the following command:

      Then, execute the following command:

      hashtag
      Installing MariaDB Galera Cluster with APT

      The process to install MariaDB Galera Cluster with the MariaDB apt-get repository is practically the same as installing standard MariaDB Server.

      Galera Cluster support is included in the standard MariaDB Server packages, so you will need to install the mariadb-server package, as you normally would.

      You also need to install the galera-4 package to obtain the 4 wsrep provider library.

      To install MariaDB Galera Cluster, first you would have to update the package cache by executing the following command:

      To install MariaDB Galera Cluster, you could execute the following command:

      MariaDB Galera Cluster also has a separate package that can be installed on arbitrator nodes. The package is called galera-arbitrator-4. This package should be installed on whatever node you want to serve as the arbitrator. It can either run on a separate server that is not acting as a cluster node, which is the recommended configuration, or it can run on a server that is also acting as an existing cluster node.

      To install the arbitrator package, you could execute the following command:

      See for more information on MariaDB Galera Cluster.

      hashtag
      Installing MariaDB Clients and Client Libraries with APT

      is included as the client library.

      To Install the clients and client libraries, first you would have to update the package cache by executing the following command:

      Then, execute the following command:

      hashtag
      Installing mariadb-backup with APT

      To install , first you would have to update the package cache by executing the following command:

      Then, execute the following command:

      hashtag
      Installing Plugins with APT

      Some may also need to be installed.

      For example, to install the password validation plugin, first you would have to update the package cache by executing the following command:

      Then, execute the following command:

      hashtag
      Installing Older Versions from the Repository

      The MariaDB apt repository contains the last few versions of MariaDB. To show what versions are available, use the command:

      There will be a lot of output, but in the "Provides" section at the end of the output you will see the available versions. For example:

      In the above example there are four versions available, two from the MariaDB repositories, and two from the Ubuntu repositories. The versions from MariaDB have "maria" in the version number, and the versions from Ubuntu have "ubuntu" in the version number.

      To install an older version of a package instead of the latest version we just need to specify the package name, an equal sign, and then the complete version number. From the example above, the complete version number for MariaDB 12.0.2 is: 1:12.0.2+maria~ubu2404

      However, when installing an older version of a package, apt will automatically choose to install the latest versions of any dependencies, which doesn't work for dependencies of the mariadb-server package like mariadb-client and mariadb-server-core.

      To ensure that all MariaDB packages are on the same version in this scenario, it is necessary to specify them all. Therefore, to install the 12.0.2 version of the mariadb-server package from this apt repository, we would do the following (using a variable to hold the version number, and putting each package on its own line so things are cleaner):

      For MariaDB Enterprise, version numbers are similar, but have an extra point. For example, MariaDB Enterprise Server 11.8.5-2 for Ubuntu 24.04 Noble has the version number: 1:11.8.5.2+maria~ubu2404 .

      The rest of the install and setup process is as normal.

      hashtag
      Installing MariaDB with dpkg

      While it is not recommended, it is possible to download and install the.deb packages manually. However, it is generally recommended to use a package manager like apt-get.

      A tarball that contains the .deb packages can be downloaded from the following URL:

      For example, to install the .deb packages on Ubuntu 18.04 LTS (Bionic), you could execute the following:

      hashtag
      After Installation

      After the installation is complete, you can start MariaDB.

      If you are using , then keep in mind that the first node will have to be .

      hashtag
      Upgrading to a new version of MariaDB

      After updating your repository configuration to move from the repository of one version of MariaDB to a newer version, as per the previous instructions, you will need to upgrade the MariaDB packages, this is done with:

      Alternatively you can also run the following to installing the new version:

      The reason for specifying the galera-4 package is to ensure the correct updated version of Galera is installed along with the new server version, replacing the versions that were there before.

      hashtag
      Available DEB Packages

      The available DEB packages depend on the specific MariaDB release series.

      hashtag
      Available DEB Packages

      For MariaDB, the following DEBs are available:

      Package Name
      Description

      hashtag
      Actions Performed by DEB Packages

      hashtag
      Users and Groups Created

      When the mariadb-server DEB package is installed, it will create a user and group named mysql, if they do not already exist.

      hashtag
      See Also

      This page is licensed: CC BY-SA / Gnu FDL

      Compiling MariaDB From Source: The Master Guide

      Complete step-by-step guide for compiling and building MariaDB from source on various flavors of Linux and on macOS.

      circle-info

      This guide covers compiling MariaDB on Unix-like systems, including Linux and macOS. If you are building on Windows, please refer to the dedicated guide.

      This guide provides the universal workflow for building MariaDB Server from source code. While specific dependencies may vary by operating system, the core build process remains consistent across all modern platforms.

      hashtag

      spinner
      sudo service mysql restart
      sudo service mariadb restart
      [[mysqld]]
      # Cache for disk based temporary files
      aria_pagecache_buffer_size=128M
      # If you are not using MyISAM tables directly (most people are using InnoDB)
      key_buffer_size=64K
      innodb-concurrency-tickets
      innodb-log-file-size
      innodb_log_compressed_pages
      innodb-old-blocks-time
      innodb-open-files
      [2]
      innodb-purge-batch-size
      innodb-undo-logs
      join_buffer_size
      max_allowed_packet
      max-connect-errors
      max-relay-log-size
      myisam-sort-buffer-sizearrow-up-right
      optimizer-switch
      query_alloc_block_size
      query_cache_size
      query_cache_type
      query_prealloc_size
      secure_auth
      sql_log_bin
      sql_mode
      sync_master_info
      sync_relay_log
      sync_relay_log_info
      table_open_cache
      thread_pool_max_threads
      innodb-checksum-algorithm
      innodb-flush-neighbors
      innodb-stats-auto-recalc
      rpl_recovery_rank

      Ubuntu 22.04 (Jammy)

    • Ubuntu 24.04 (Noble)

    • . The full list of MariaDB Community Server releases can be found on the
      page.

      Archives are only of the distros and architectures supported at the time of release. For example, MariaDB Community Server 10.6.21 exists for Ubuntu bionic, focal, jammy, and kinetic, and the list of what distributions are available is obtained by looking in the dists folder of the 10.6.21 Debianarrow-up-right or Ubuntuarrow-up-right repositories.

      For example, if you wanted to pin your repository to on Ubuntu 20.04 LTS (Focal), then you would have to first remove any existing MariaDB repository source list file from /etc/apt/sources.list.d/. And then you could use the following commands to add the MariaDB apt-get repository:

      Ensure you have the signing key installed.

      Ubuntu Xenial and older will need:

      And then you would have to update the package cache by executing the following command:

      libmysqlclient18

      Virtual package to satisfy external depends

      mariadb-backup

      mariadb-client

      Client tools like , , and others.

      mariadb-client-core

      Core client tools

      mariadb-common

      Character set files and /etc/my.cnf

      mariadb-plugin-connect

      The storage engine.

      mariadb-plugin-cracklib-password-check

      The password validation plugin.

      mariadb-plugin-gssapi-client

      The client-side component of the authentication plugin.

      mariadb-plugin-gssapi-server

      The server-side component of the authentication plugin.

      mariadb-plugin-rocksdb

      The storage engine.

      mariadb-plugin-spider

      The storage engine.

      mariadb-plugin-tokudb

      The storage engine.

      mariadb-server

      The server and server tools, like and are here.

      mariadb-server-core

      The core server.

      mariadb-test

      mysql-client-test executable, and mysql-test framework with the tests.

      mariadb-test-data

      MariaDB database regression test suite - data files

      galera-4

      The WSREP provider for Galera 4.

      libmariadb3

      Dynamic client libraries.

      libmariadb-dev

      Development headers and static libraries.

      libmariadbclient18

      MariaDB Package Repository setup script
      clients and utilities
      client libraries
      plugins
      mariadb-backup
      MariaDB MaxScalearrow-up-right
      Percona XtraBackup
      MariaDB Package Repository Setup and Usage
      MariaDB Repository Configuration Toolarrow-up-right
      clients and utilitiesarrow-up-right
      client libraries
      plugins
      mariadb-backuparrow-up-right
      add-apt-repositoryarrow-up-right
      MariaDB 10.6arrow-up-right
      source listarrow-up-right
      MariaDB 10.6arrow-up-right
      Ubuntu Software Centerarrow-up-right
      MariaDB Repository Configuration Toolarrow-up-right
      herearrow-up-right
      Synaptic Package Managerarrow-up-right
      MariaDB Repository Configuration Toolarrow-up-right
      herearrow-up-right
      MariaDB Corporation's mariadb_repo_setup or mariadb_es_repo_setup scripts
      Pinning the Repository to a Specific Minor Release
      MariaDB Package Repository Setup and Usage
      MariaDB Foundation's Repository Configuration toolarrow-up-right
      MariaDB Package Repository setup script
      MariaDB Repository Configuration Toolarrow-up-right
      add-apt-repositoryarrow-up-right
      add-apt-repositoryarrow-up-right
      add-apt-repositoryarrow-up-right
      MariaDB 10.6arrow-up-right
      add-apt-repositoryarrow-up-right
      MariaDB 10.6arrow-up-right
      MariaDB 10.6arrow-up-right
      upgrade to the new version of MariaDB
      source listarrow-up-right
      MariaDB 10.6arrow-up-right
      MariaDB 10.6arrow-up-right
      upgrade to the new version of MariaDB
      MariaDB Community Server Debian / Ubuntu key
      GPG
      MariaDB Enterprise GPG Keys
      GPG
      dirmngrarrow-up-right
      apt-getarrow-up-right
      Galera Cluster
      MariaDB Connector/Carrow-up-right
      mariadb-backup
      plugins
      cracklib_password_checkarrow-up-right
      apt-cachearrow-up-right
      downloads.mariadb.comarrow-up-right
      MariaDB 10.6.21arrow-up-right
      Differences in MariaDB in Debian
      Installing MariaDB .deb Files with Ansible
      spinner
      Galera
      MariaDB Galera Cluster
      bootstrapped

      Virtual package to satisfy external depends

      Major Steps
      1

      hashtag
      Prepare Your Environment

      Before you begin, your system must have the necessary compilers, build tools, and library headers.

      For details, see Install Build Dependencies.

      2

      hashtag
      Obtain the Source Code

      Decide whether you need the latest development branch or a specific stable release.

      • Option A: Git clone (best for developers)

      3

      hashtag
      Configure the Build (CMake)

      MariaDB uses out-of-source builds to keep the source tree clean. This is where you define installation paths and features.

      1. Create a build directory: mkdir build && cd build

      4

      hashtag
      Compile

      Once configured, use the CMake build tool to compile the binaries. Using the --parallel flag speeds this up by using multiple CPU cores.

      5

      hashtag
      Install and Initialize

      After a successful build, you must prepare the data directory and system tables before the server can start.

      1. Install: sudo cmake --install .

      6

      hashtag
      Start and Verify

      Launch the server and check that it is responsive.

      7

      hashtag
      Test the Build

      Before putting your fresh build into production, verify it against the official test suite. MariaDB includes for this purpose.

      1. Run Unit Tests: Quickly check the core logic.

      8

      hashtag
      After Building

      After successfully building MariaDB from source, additional tasks can be found under .

      hashtag
      Summary of the Build Workflow

      Step

      Action

      Primary Tool

      1

      Install Build Tools

      apt / dnf / brew

      2

      Download Source

      git / wget

      hashtag
      Preparing Your Environment: Install Build Dependencies

      This section covers the details of step 1 (Prepare Your Environment).

      To compile MariaDB, you need a set of core build tools and development headers for various libraries.

      hashtag
      Setting up the MariaDB Source Repository

      circle-info

      Setting up the MariaDB source repository is optional but recommended. If you want to build the MariaDB version that comes with your operating system, you can skip this subsection, though.

      Adding the MariaDB Repository Tool into the workflow ensures that you are getting the dependencies specifically tailored for the version of MariaDB you want to build (for instance, 11.8), rather than whatever outdated version happens to be in your operating system's default upstream repository.

      hashtag
      Using the MariaDB Repository Tool

      While your operating system's default repositories contain many build tools, they may lack the specific library versions required for the latest MariaDB releases. Using the MariaDB Repository Tool ensures your environment is perfectly synced with the version you intend to build.

      1. Configure the Repository

      Use the MariaDB Repository Configuration Tool to generate the setup commands for your specific operating system and desired MariaDB version.

      Example for Ubuntu 24.04 and MariaDB 11.8 (don't copy this blindly – the example uses the 11.8 release and a specific mirror; adjust these strings based on the output of the Repository Configuration Tool):

      2. Install Tailored Dependencies

      Once the repository is active and the source lines are enabled, you can use the package manager to pull exactly what that specific MariaDB version requires:

      Advantages of Using the Repository Tool

      1. Version Accuracy: If MariaDB 11.x requires a newer libssl or zstd than what your operating system provides by default, the MariaDB repo often provides the correct headers.

      2. Completeness: It automatically handles the "Source Repositories" issue because the add-apt-repository command includes the --enable-source flag by default.

      3. Automation: It reduces the "Manual Package Table" from a primary task to a fallback for users who cannot or will not add external repositories.

      hashtag
      The "Shortcut" Command

      Most Linux distributions allow you to install all necessary dependencies for the "official" build with a single command.

      This requires that "source repositories" are enabled in your package manager. Enable them like this:

      Run this command:

      Edit /etc/apt/sources.list and uncomment lines starting with deb-src.

      Run dnf config-manager --set-enabled baseos-source appstream-source .

      Source repos are usually enabled by default, but check dnf repolist to verify.

      The shortcut command itself varies by operating system:

      sudo apt build-dep mariadb-server

      sudo dnf builddep mariadb (or yum-builddep mariadb-server)

      sudo zypper source-install -d mariadb

      Homebrew does not have a direct build-dep command. You can install the standard MariaDB build stack using:

      hashtag
      Manual Package Table

      If you are building a specific version or don't want to use the shortcut, use the list below to install the mandatory packages.

      Use apt to install these tools:

      • Build tools: build-essential git cmake

      • Parser tools: bison flex

      • Terminal/UI: libncurses-dev

      • Security/SSL: libssl-dev or gnutls-dev

      • Compression: zlib1g-dev

      • Miscellaneous headers: libaio-dev libboost-all-dev

      Use dnf (or yum) to install these tools:

      • Build tools: gcc-c++ git cmake

      • Parser tools: bison flex

      Use zypper to install these tools:

      • Build tools: gcc-c++ git cmake

      • Parser tools: bison flex

      Use brew to install these tools:

      • Build tools: cmake git

      • Parser tools: bison flex

      hashtag
      Optional Dependencies (Plugins & Features)

      If you plan to enable specific storage engines or features, install these additional packages:

      Feature

      Dependency

      Package Name (Generic)

      S3 Storage Engine

      libcurl

      libcurl-devel / libcurl4-openssl-dev

      GSSAPI (Kerberos)

      krb5

      krb5-devel / libkrb5-dev

      hashtag
      Obtaining the Source Code

      This section covers the details of step 2 (Obtain the Source Code).

      Depending on your goal, you can either clone the repository using Git or download a stable source tarball.

      hashtag
      Option A: Git Clone (Recommended for Developers)

      Using Git allows you to easily switch between versions and contribute patches. MariaDB uses submodules for certain components; you must initialize these for the build to succeed.

      1. Clone the specific branch:

        Choose a branch that matches the major version you need (for instance, 11.8).

      2. Initialize Submodules:

        This command downloads the source code for external storage engines and connectors.

      hashtag
      Option B: Source Tarball (Best for Stability)

      If you do not need version control, downloading a pre-packaged source tarball is simpler. Submodules are already included in the tarball, so no extra steps are required.

      1. Download: Visit the MariaDB Downloads pagearrow-up-right and select the "Source" tab.

      2. Extract:

      hashtag
      Key Takeaway: Git vs. Tarball

      Feature
      Git Clone
      Source Tarball

      Updates

      Easy (git pull)

      Manual (download new version)

      Submodules

      Requires manual initialization

      Pre-included

      hashtag
      Common CMake Configuration Flags

      This section covers the details of step 3 (Configure the Build).

      When running cmake .., you can pass these options (using the -D prefix) to customize how MariaDB is built.

      Category
      Flag
      Description

      Install Path

      -DCMAKE_INSTALL_PREFIX=/opt/mariadb

      Defines where the server is installed (default: /usr/local).

      Build Type

      -DCMAKE_BUILD_TYPE=RelWithDebInfo

      Options: Release, Debug, RelWithDebInfo (recommended).

      hashtag
      Pro-Tip: Managing Plugins

      Most plugins are auto-detected based on the dependencies you installed in step 1. To see a full list of available options and their current status, run:

      hashtag
      The Quick Way: Using BUILD Scripts

      This section covers alternative details of step 3 (Configure the Build).

      If you don't want to manually toggle CMake flags, MariaDB includes a BUILD/ directory containing pre-configured scripts for common development environments. These are especially useful for developers who need a specific setup (like a Debug build with Valgrind support) quickly.

      hashtag
      How to Use a BUILD Script

      These scripts must be run from the root of the source directory (unlike the manual "out-of-source" CMake method).

      hashtag
      Common Script Variants

      Most scripts follow a naming convention: compile-[architecture]-[type].

      Script
      Best For...

      compile-pentium64-debug

      Standard 64-bit development with debug symbols.

      compile-pentium64-max

      Enables almost all features and plugins (highest compatibility).

      compile-pentium64-valgrind-max

      Optimized for memory testing with Valgrind.

      compile-amd64-debian-build

      hashtag
      Adding Extra Flags

      You can still pass custom CMake flags to these scripts using environment variables or arguments, though most users find the defaults sufficient for testing.

      hashtag
      Troubleshooting Common Build Errors

      This section covers details of step 4 (Compile).

      Compiling from source often hits roadblocks. Here are the most common issues and how to fix them.

      Error Message
      Likely Cause
      Solution

      CMAKE_CXX_COMPILER not found

      Missing C++ compiler.

      Install g++ (Linux) or clang (macOS).

      Bison version is too old

      macOS default bison is outdated.

      brew install bison and update your PATH.

      hashtag
      The "Clean Slate" Command

      If you changed your CMake flags and things are getting weird, the best fix is to wipe the cache and start over.

      circle-info

      Do not delete the source directory, only the contents of the build folder.

      hashtag
      Notes

      hashtag
      Conventional Data Directory Locations

      This table lists typical locations of --datadir.

      Platform
      Conventional Data Directory

      Linux (General)

      /var/lib/mysql

      macOS (Homebrew)

      /opt/homebrew/var/mysql

      macOS (Intel/Legacy)

      /usr/local/var/mysql

      FreeBSD

      hashtag
      Post-Build

      This section covers optional additional things to do after building MariaDB successfully (step 8 (After Building)).

      hashtag
      Packaging

      If you need to deploy MariaDB to multiple servers, you don't have to compile it on every machine. Instead, use MariaDB’s built-in packaging support to create a distributable package.

      MariaDB uses CPackarrow-up-right (part of the CMakearrow-up-right suite) to generate these packages.

      1. Configure for Packaging: To ensure the package follows standard filesystem hierarchies, use the mysql_release configuration.

      2. Generate the Package: After the build is complete, run cpack from your build directory.

      3. Result: You will find a file like mariadb-11.x.x-linux-x86_64.deb in your build directory, which can be installed via dpkg -i or rpm -ivh.

      Building MariaDB on Windows
      curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
      sudo apt-get install software-properties-common
      sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.6/ubuntu bionic main'
      sudo apt update
      # MariaDB 10.6 repository list - created 2019-01-27 09:50 UTC
      # http://downloads.mariadb.org/mariadb/repositories/
      deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.6/ubuntu bionic main
      deb-src http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.6/ubuntu bionic main
      sudo apt update
      sudo add-apt-repository --remove 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.6/ubuntu bionic main'
      sudo apt-get install software-properties-common
      sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.6/ubuntu bionic main'
      sudo apt update
      sudo sed -i 's/10.5/10.6/' /etc/apt/sources.list.d/MariaDB.list
      sudo apt update
      sudo apt update
      sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common
      sudo apt update
      sudo apt-get install mariadb-server
      sudo apt update
      sudo apt-get install mariadb-server mariadb-client galera-4
      sudo apt install galera-arbitrator-4
      sudo apt update
      sudo apt-get install mariadb-client libmariadb3
      sudo apt update
      sudo apt-get install mariadb-backup
      sudo apt update
      sudo apt-get install mariadb-cracklib-password-check
      sudo apt-cache showpkg mariadb-server
      Package: mariadb-server
      Versions: 
      1:12.1.2+maria~ubu2404 (/var/lib/apt/lists/dlm.mariadb.com_repo_mariadb-server_12.rolling_repo_ubuntu_dists_noble_main_binary-amd64_Packages)
       Description Language:
       ...<extra-output-snipped>...
       Provides: 
      1:12.1.2+maria~ubu2404 - virtual-mysql-server (= ) default-mysql-server (= ) 
      1:12.0.2+maria~ubu2404 - virtual-mysql-server (= ) default-mysql-server (= ) 
      1:10.11.13-0ubuntu0.24.04.1 - virtual-mysql-server (= ) 
      1:10.11.7-2ubuntu2 - virtual-mysql-server (= ) 
      sudo apt install mariadb-server=1:12.0.2+maria~ubu2404
      Reading package lists... Done
      Building dependency tree... Done
      Reading state information... Done
      Some packages could not be installed. This may mean that you have
      requested an impossible situation or if you are using the unstable
      distribution that some required packages have not yet been created
      or been moved out of Incoming.
      The following information may help to resolve the situation:
      
      The following packages have unmet dependencies:
       mariadb-client : Breaks: mariadb-server (< 1:12.1.2+maria~ubu2404) but 1:12.0.2+maria~ubu2404 is to be installed
       mariadb-server-core : Breaks: mariadb-server (< 1:12.1.2+maria~ubu2404) but 1:12.0.2+maria~ubu2404 is to be installed
      E: Unable to correct problems, you have held broken packages.
      ver="1:12.0.2+maria~ubu2404"
      sudo apt install \
        mariadb-server=${ver} \
        mariadb-client=${ver} \
        mariadb-server-core=${ver} \
        mariadb-client-core=${ver}
      sudo apt-get update
      sudo apt-get install libdbi-perl libdbd-mysql-perl psmisc libaio1 socat
      wget https://downloads.mariadb.com/MariaDB/mariadb-10.6.21/repo/ubuntu/mariadb-10.6.21-ubuntu-bionic-amd64-debs.tar
      tar -xvf mariadb-10.6.21-ubuntu-bionic-amd64-debs.tar
      cd mariadb-10.6.21-ubuntu-bionic-amd64-debs/
      sudo dpkg --install ./mariadb-common*.deb \
         ./mysql-common*.deb \
         ./mariadb-client*.deb \
         ./libmariadb3*.deb \
         ./libmysqlclient18*.deb 
      sudo dpkg --install ./mariadb-server*.deb \
         ./mariadb-backup*.deb \
         ./galera-4*.deb
      sudo apt upgrade mariadb-server
      sudo apt install mariadb-server galera-4
      sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el,s390x] http://archive.mariadb.org/mariadb-10.5.9/repo/ubuntu/ focal main main/debug'
      sudo apt-get install -y apt-transport-https
      sudo apt update
      sudo apt-get build-dep mariadb-11.8  # Replace with your target version
      sudo dnf builddep mariadb-server
      sudo add-apt-repository --update --yes --enable-source
      git clone --branch 11.8 https://github.com/MariaDB/server.git
      cd server
      git submodule update --init --recursive
      tar -xf mariadb-11.8.x.tar.gz
      cd mariadb-11.8.x
      cmake .. -DBUILD_CONFIG=mysql_release
      # To create the default package for your OS (DEB on Ubuntu/Debian, RPM on RHEL)
      cpack -G DEB   # For Debian-based
      cpack -G RPM   # For RedHat-based
      cpack -G TGZ   # For a generic binary tarball
      sudo apt-get install software-properties-common dirmngr
      sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
      sudo add-apt-repository --update --yes --enable-source \
      'deb [arch=amd64] https://mirrors.xtom.com/mariadb/repo/11.8/ubuntu noble main'
      cmake .. -LH
      # Example: Build an optimized 64-bit version with debugging symbols
      ./BUILD/compile-pentium64-debug
      ./BUILD/compile-pentium64-debug --extra-configs="-DCMAKE_INSTALL_PREFIX=/tmp/mariadb"
      # Inside your build directory
      rm -rf *
      cmake .. [your flags]
      Compiling MariaDB for debuggingarrow-up-right
      Option B: Source tarball (best for stability)

      Download the .tar.gz from the official MariaDB downloadsarrow-up-right and extract it:

      For details on both options, see Obtaining the Source Code.

    • Run CMake:

      • Common flags like -DCMAKE_INSTALL_PREFIX or debug options go here.

    • For common CMake configuration flags, see Common CMake Configuration Flags.

      For a configuration alternative to configuring CMake, see The Quick Way: Using BUILD Scripts.

      For CMake 3.13+, run this:

      Without a number, modern CMake automatically picks an appropriate number of jobs.

      If you encounter build errors, see Troubleshooting Common Build Errors.

      (or run directly from the build directory for testing).
    • Create Data Directory: Ensure the mysql user exists and has permissions.

    • Initialize System Tables.

      1. If running from the build directory (use this if you did not run the cmake install command – in that case, you must run the script from within your build folder):

      2. If you installed to the system (sudo cmake --install ..., in which case the PATH to mariadb-install-db is set):

    • See this section for conventional locations of the data directory (--datadir).

      Run Integration Tests (MTR): This launches actual server instances and runs thousands of SQL tests.

      • Pro-Tip: If a specific test fails, you can run it individually: ./mysql-test-run.pl alias.

      • Note: You do not need to install MariaDB to the system to run these tests; they run entirely within the build directory.

      Terminal/UI: ncurses-devel

    • Security/SSL: openssl-devel

    • Compression: zlib-devel

    • Miscellaneous headers: libaio-devel boost-devel

    • Terminal/UI: ncurses-devel
    • Security/SSL: libopenssl-devel

    • Compression: libzlib-devel

    • Miscellaneous headers: libaio-devel boost-devel

    • Terminal/UI: ncurses
    • Security/SSL: openssl

    • Compression: zlib

    • Miscellaneous headers: boost

    • The system-provided version of bison on macOS is often too old. After running brew install bison, you may need to add it to your PATH:

      3

      Configure Features

      cmake

      4

      Compile Binaries

      cmake --build

      5

      Initialize Database

      mariadb-install-db

      RocksDB / MyRocks

      snappy, lz4, zstd

      snappy-devel, lz4-devel,

      libzstd-devel

      Systemd Support

      systemd

      systemd-devel / libsystemd-dev

      Authentication

      pam

      pam-devel / libpam0g-dev

      History

      Full commit history available

      No history included

      Size

      Larger (includes .git data)

      Smaller

      Features

      -DWITH_EMBEDDED_SERVER=ON

      Builds the libmariadbd embedded library.

      Storage Engines

      -DPLUGIN_ROCKSDB=NO

      Explicitly disables a specific storage engine (use YES to force enable).

      Security

      -DWITH_SSL=system

      Use the system's OpenSSL (default). Options: system, openssl, gnutls.

      Debugging

      -DWITH_ASAN=ON

      Enables AddressSanitizer to find memory leaks.

      Standardization

      -DBUILD_CONFIG=mysql_release

      Configures the build to match the official MariaDB release binaries.

      Mimics the configuration used for official Debian/Ubuntu packages.

      Could not find GSSAPI

      Missing Kerberos headers.

      Install libkrb5-dev or krb5-devel.

      Could not find Curses

      Missing terminal headers.

      Install libncurses-dev or ncurses-devel.

      No space left on device

      /tmp or build dir is full.

      MariaDB requires ~5GB to 10GB of disk space for a full build.

      /var/db/mysql

      Custom/Dev Build

      ~/mariadb-data (or any folder owned by your user)

      MTR (MariaDB Test Run)
      Post-Build
      cmake --build . --parallel $(nproc)
      cmake --build . --parallel $(sysctl -n hw.logicalcpu)
      cmake --build . --parallel 
      mariadb-backup
      mariadb CLI
      mariadb-dump
      CONNECT
      cracklib_password_check
      gssapi
      gssapi
      MyRocks
      SPIDER
      TokuDB
      myisamchk
      mariadb-hotcopy

      MariaDB Package Repository Setup and Usage

      Complete guide to MariaDB package repositories. Complete setup instructions for APT, YUM, Zypper with GPG keys and configurations for production use.

      hashtag
      Overview

      If you are looking to set up MariaDB Server, it is often easiest to use a repository. MariaDB Foundation has a repository configuration tool and MariaDB Corporation provides two convenient shell scripts to configure access to their MariaDB Package Repositories:

      • mariadb_es_repo_setup

      debugging a problemarrow-up-right
      debugging a problemarrow-up-right
      cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
      ./scripts/mariadb-install-db --user=mysql --datadir=[path]
      cd mysql-test
      ./mysql-test-run.pl --parallel=$(nproc)
      git clone --branch 11.8 https://github.com/MariaDB/server.git
      cd server
      ./bin/mariadbd-safe --user=mysql &
      ./bin/mariadb -u root -p
      cmake --build . --target test
      brew install cmake git bison flex openssl zlib boost
      tar -xf mariadb-11.8.x.tar.gz
      cd mariadb-11.8.x
      export PATH="/opt/homebrew/opt/bison/bin:$PATH"
      mariadb-install-db --user=mysql --datadir=[path]
      for MariaDB Enterprise Server, which can be downloaded from:
      • https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setuparrow-up-right

    • mariadb_repo_setup for MariaDB Community Server, which can be downloaded from:

      • https://r.mariadb.com/downloads/mariadb_repo_setuparrow-up-right

    • hashtag
      Using MariaDB Foundation's Repository Configuration Tool

      Visit https://mariadb.org/download/?t=repo-configarrow-up-right and follow the instructions from there. It will ask for your Linux distribution, desired MariaDB version, and the mirror to use, and will show what files to edit and what commands to run to configure a repository.

      hashtag
      Using MariaDB Corporation's Repository Setup Scripts

      Alternatively, you can run a convenient shell script that will automatically configure a repository for you.

      hashtag
      Download and Verify the Script

      The repository setup script can be downloaded and verified in the following way:

      Download the script:

      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup

      Verify the checksum of the script:

      echo "${checksum} mariadb_es_repo_setup" | sha256sum -c

      Download the script:

      curl -LsSO https://r.mariadb.com/downloads/mariadb_repo_setup

      Verify the checksum of the script:

      echo "${checksum} mariadb_repo_setup" | sha256sum -c
      circle-info

      Checksums of the various releases of the MariaDB Corporation's repository setup scripts can be found in the Versions section at the bottom of this page. Substitute ${checksum} in the example above with the checksum of the version of the script you are using.

      hashtag
      Prerequisites

      For the script to work, the curl package needs to be installed on your system. Additionally, on Debian and Ubuntu, the apt-transport-https package needs to be installed. The script will check if these are installed and let you know before it attempts to create the repository configuration on your system.

      They can be installed on your system as follows:

      hashtag
      Run the Script

      After the script is downloaded, you need to run it with root user permissions. This is normally accomplished by using the sudo command:

      Retrieve your customer downloads token:

      1. Navigate to https://customers.mariadb.com/downloads/token/arrow-up-right and log in

      2. Copy the Customer Download Token

      3. Substitute your token for ${token} when running the mariadb_es_repo_setup script, below

      4. Set the script to be executable:

      1. Run the script:

      1. Set the script to be executable:

      1. Run the script:

      hashtag
      Repositories

      The script will set up different repositories in a single repository configuration file.

      The default repositories set up by mariadb_es_repo_setup are:

      • MariaDB Enterprise Server Repository

        • A MariaDB Enterprise Server Debug Repository (Ubuntu only)

      • MariaDB Enterprise MaxScale Repository

      • MariaDB Enterprise Tools Repository

      • MariaDB Tools Repository

      The default repositories set up by mariadb_repo_setup are:

      • MariaDB Community Server Repository

      • MariaDB Community Server Debug Repository (Ubuntu only)

      • MariaDB MaxScale Repository

      • MariaDB Tools Repository

      circle-info

      Ubuntu needs a separate debug repository for MariaDB Server debug packages. Other Linux distributions include the debug packages in the main repository. Debug packages should normally only be installed for specific purposes under the direction of a qualified support engineer.

      hashtag
      MariaDB Community Server Repository

      The MariaDB Community Server Repository contains software packages related to MariaDB Server, including the server itself, clients and utilities, client libraries, plugins, and mariadb-backup.

      The binaries in MariaDB Corporation's MariaDB Repository are identical to the binaries in MariaDB Foundation's MariaDB Repository that is configured with the MariaDB Foundation's Repository Configuration Toolarrow-up-right.

      By default, the mariadb_repo_setup script will configure your system to install from the 12.rolling repository, which contains the latest stable version of MariaDB Community server.

      The mariadb_es_repo_setup script will set up the current latest stable version of MariaDB Enterprise Server.

      If you would like to stick to a specific release series, then you will need to either manually edit the repository configuration file to point to that specific version or series, or run the MariaDB Package Repository setup script again using the --mariadb-server-version option. For example, if you wanted to specifically use the 11.4 series, you would do: --mariadb-server-version=11.4.

      If you do not want to configure the MariaDB Repository on your system, for example, if you are setting up a server just running MariaDB MaxScale, then you can use the --skip-server option to prevent the setup script from configuring the server repository.

      hashtag
      MariaDB MaxScale Repository

      circle-exclamation

      hashtag
      Note

      MaxScale releases, as of 2025-12-09, are now signed with a new key. The mariadb_repo_setup and mariadb_es_repo_setup scripts have been updated to automatically install the new key, but for existing repositories, you'll need to do the following.

      On Debian and Ubuntu:

      On RHEL & friends:

      The MariaDB MaxScale Repository contains software packages related to MariaDB MaxScale.

      By default, the script will configure your system to install from the repository of the latest GA version of MariaDB MaxScale. When a new major GA release occurs, the repository will automatically switch to the new version. If instead you would like to stay on a particular version, you will need to manually edit the repository configuration file and change 'latest' to the version you want (e.g., '6.1') or run the MariaDB Package Repository setup script again, specifying the particular version or series you want.

      Older versions of the MariaDB Package Repository setup script would configure a specific MariaDB MaxScale series in the repository (i.e., 24.02), so if you used the script in the past to set up your repository and want MariaDB MaxScale to automatically use the latest GA version, then change 24.02 or whatever version it is set to in the repository configuration to latest. Or download the current version of the setup script and re-run it to set up the repository again.

      The script can configure your system to install from the repository of an older version of MariaDB MaxScale if you use the --mariadb-maxscale-version option. For example, --mariadb-maxscale-version=25.01.

      If you do not want to configure the MariaDB MaxScale Repository on your system, then you can use the --skip-maxscale option to prevent the setup script from configuring it.

      hashtag
      Supported Distributions

      The MariaDB Package Repository setup script is designed for Linux distributions that meet MariaDB's current platform support policy. Supported platforms may vary over time and can differ across different MariaDB release series.

      For a comprehensive and current list of supported platforms, refer to:

      • MariDB Engineering Policyarrow-up-right

      • The MariaDB Downloadsarrow-up-right page for your specific version

      If the setup script does not support your distribution, you can install MariaDB using the MariaDB Foundation's Repository Configuration Toolarrow-up-right or check your distribution's native repositories for MariaDB packages.

      hashtag
      Options

      To provide options to the script, you must tell your script to expect them by executing bash with the options -s --, for example:

      Option
      Description

      --help

      Display a usage message and exit

      --mariadb-server-version=

      Override the default MariaDB Server version. By default, the script will use '11.rolling'

      --mariadb-maxscale-version=

      Override the default MariaDB MaxScale version. By default, the script will use 'latest'

      --os-type=

      hashtag
      --mariadb-server-version

      By default, the script will configure your system to install from the repository of the latest GA version of MariaDB. If a new major GA release occurs and you would like to upgrade to it, then you will need to either manually edit the repository configuration file to point to the new version or run the MariaDB Package Repository setup script again.

      The script can also configure your system to install from the repository of a different version of MariaDB if you use the --mariadb-server-version option.

      hashtag
      Usage Example

      With mariadb_es_repo_setup for MariaDB Enterprise Server, to configure your system to install from the MariaDB Enterprise Server 11.8 repository you would do:

      To specify a specific MariaDB Enterprise Server release, you need to put in the full version number, e.g. for MariaDB Enterprise Server 11.8.5-2:

      For more details see Pinning the Repository to a Specific Minor Release

      With mariadb_repo_setup for MariaDB Community Server, the string mariadb- has to be prepended to the version number. For example, to configure your system to install from the repository of MariaDB 11.8, that would be:

      To specify a specific MariaDB Community Server release, you need to put in the full version number, e.g. for MariaDB Community Server 11.8.5:

      For more details see

      hashtag
      Current Supported Major Versions

      The following MariaDB Enterprise Server versions are currently supported:

      • 10.6

      • 11.4

      • 11.8

      The following MariaDB Community Server versions are currently supported:

      • mariadb-10.6

      • mariadb-10.11

      hashtag
      Pinning the Repository to a Specific Minor Release

      If you want to pin the repository of a specific minor release, such as , then you need to specify the full release version number, e.g. 11.8.5-2. This may be helpful if you want to avoid automatic upgrades. However, avoiding upgrades is not recommended, since minor maintenance releases may contain important bug fixes and fixes for security vulnerabilities.

      circle-info

      Note: MariaDB Enterprise Server version numbers include a 'release' suffix that differs from MariaDB Community Server version numbers, e.g. -2 for MariaDB Enterprise Server 11.8.5-2 whereas the equivalent MariaDB Community Server release is just 11.8.5. This suffix is required when specifying the full Enterprise Server version number.

      To get a list of all MariaDB Enterprise Server releases, see the page. The Version column in the tables on that page list the version numbers of every MariaDB Enterprise Server release.

      See the section above for an example of pinning the repository to a specific version.

      If you want to pin the repository of a specific minor release, such as , then you need to specify the complete release version, e.g. mariadb-11.8.5. This may be helpful if you want to avoid upgrades. However, avoiding upgrades is not recommended, since minor maintenance releases may contain important bug fixes and fixes for security vulnerabilities.

      circle-info

      To get a list of all MariaDB Community Server releases, see the page. The Version column in the tables on that page list the version numbers of every MariaDB Community Server release.

      See the section above for an example of pinning the repository to a specific version.

      hashtag
      --mariadb-maxscale-version

      By default, the script will configure your system to install from the repository of the latest GA version of MariaDB MaxScale.

      If you would like to pin the repository to a specific version of MariaDB MaxScale, then you will need to either manually edit the repository configuration file to point to the desired version or use the --mariadb-maxscale-version option.

      For example, to configure your system to install from the repository of MariaDB MaxScale 6.1, that would be:

      The following MariaDB MaxScale versions are currently supported:

      • MaxScale 25.10

      • MaxScale 25.01

      • MaxScale 24.02

      • MaxScale 23.08

      • MaxScale 23.02

      • MaxScale 22.08

      The special identifiers latest (for the latest GA release) and beta (for the latest beta release) are also supported. By default, the mariadb_repo_setup script uses latest as the version.

      hashtag
      --os-type and --os-version

      If you want to run this script on an unsupported OS that you believe to be package-compatible with an OS that is supported, then you can use the --os-type and --os-version options to override the script's OS detection. If you use either option, then you must use both options.

      The supported values for --os-type are:

      • rhel

      • debian

      • ubuntu

      • sles

      If you use a non-supported value, then the script will fail, just as it would fail if you ran the script on an unsupported OS.

      The supported values for --os-version are entirely dependent on the OS type.

      For Red Hat Enterprise Linux (RHEL): 8, 9, and 10 are valid options.

      For Debian and Ubuntu, the version must be specified as the codename of the specific release. For example, Debian 13 must be specified as trixie, and Ubuntu 24.04 must be specified as noble.

      These options can be useful if your distribution is a fork of another distribution. As an example, Pop!_OS 24.04 LTS is based on and is fully compatible with Ubuntu 24.04 LTS (noble). Therefore, if you are using Pop!_OS, then you can configure your system to install from the repository of Ubuntu 24.04 LTS (noble) by specifying --os-type=ubuntu`` ``--os-version=noble to the MariaDB Package Repository setup script.

      For example, to manually set the --os-type and --os-version to RHEL 10, you could do:

      hashtag
      --write-to-stdout

      The --write-to-stdout option will prevent the script from modifying anything on the system. The repository configuration will not be written to the repository configuration file. Instead, it will be printed to standard output. That allows the configuration to be reviewed, redirected elsewhere, consumed by another script, or used in some other way.

      The --write-to-stdout option automatically enables --skip-key-import.

      For example:

      hashtag
      Platform-Specific Behavior

      Platform-Specific Behavior on RHEL and equivalents

      On Red Hat Enterprise Linux (RHEL) and equivalents, the MariaDB Package Repository setup script performs the following tasks:

      1. Creates a repository configuration file at /etc/yum.repos.d/mariadb.repo

      2. Imports the GPG public key used to verify the signature of MariaDB software packages with rpm --import from supplychain.mariadb.com

      Platform-Specific Behavior on Debian and Ubuntu

      On Debian and Ubuntu, the MariaDB Package Repository setup script performs the following tasks:

      1. Creates a repository configuration file at /etc/apt/sources.list.d/mariadb.list

      2. Creates a package preferences file at /etc/apt/preferences.d/mariadb-enterprise.pref, which gives packages from MariaDB repositories a higher priority than packages from OS and other repositories, which can help avoid conflicts. It looks like the following:

      Platform-Specific Behavior on SLES

      On SUSE Linux Enterprise Server (SLES), the MariaDB Package Repository setup script performs the following tasks:

      1. Creates a repository configuration file at /etc/zypp/repos.d/mariadb.repo

      2. Imports the GPG public key used to verify the signature of MariaDB software packages with rpm --import from supplychain.mariadb.com

      hashtag
      Installing Packages With the MariaDB Package Repository

      After setting up the MariaDB Package Repository, you can install the software packages in the supported repositories.

      Installing Packages on RHEL and equivalents

      To install MariaDB on Red Hat Enterprise Linux (RHEL) and equivalents, see the instructions in the Installing MariaDB Packages with YUM. For example:

      To install MariaDB MaxScale on Red Hat Enterprise Linux (RHEL) and equivalents, see the instructions at MariaDB MaxScale Installation Guidearrow-up-right. For example:

      Installing Packages on Debian and Ubuntu

      To install MariaDB on Debian and Ubuntu, see the instructions at Installing MariaDB Packages with APT. For example:

      To install MariaDB MaxScale on Debian and Ubuntu, see the instructions at . For example:

      Installing Packages on SLES

      To install MariaDB on SUSE Linux Enterprise Server (SLES), see the instructions at . For example:

      To install MariaDB MaxScale on SUSE Linux Enterprise Server (SLES), see the instructions at . For example:

      hashtag
      Versions

      mariadb_es_repo_setup Versions

      Version
      sha256sum

      2025-12-10

      62a28aa1f060b4055751d93a88bc11c5556c2b23103c6a6287a8fcb0a4b8a13f

      2025-10-22

      1f584ffd368d18c64b8820bf6cd9b1114dda11a0ecf9524be3c967a3a5be941b

      2025-09-08

      mariadb_repo_setup Versions

      Version
      sha256sum

      This page is licensed: CC BY-SA / Gnu FDL

      spinner

      Using MariaDB with TCMalloc or jemalloc

      Instructions on building and configuring MariaDB to use alternative memory allocators like TCMalloc or jemalloc for improved performance and profiling.

      circle-info

      Read the page for more information on how to debug high memory consumption.

      hashtag
      Using tcmalloc or jemalloc

      sudo dnf install curl
      sudo apt update
      sudo apt install curl apt-transport-https
      sudo zypper install curl
      ./mariadb_es_repo_setup --token=$token --mariadb-server-version="11.8"
      ./mariadb_es_repo_setup --token=$token --mariadb-server-version="11.8.5-2"
      ./mariadb_repo_setup --mariadb-server-version="mariadb-11.8"
      ./mariadb_repo_setup --mariadb-server-version="mariadb-11.8.5"
      sudo dnf install MariaDB-server MariaDB-client MariaDB-backup
      sudo dnf install maxscale
      sudo apt install mariadb-server mariadb-client mariadb-backup galera-4
      sudo apt install maxscale
      curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --help
      curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-maxscale-version="6.1"
      curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --os-type=rhel --os-version=10
      curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --write-to-stdout
      mariadb-11.4
    • mariadb-11.8

    • mariadb-11.rolling

    • mariadb-11.rc

    • mariadb-12.1

    • mariadb-12.2

    • mariadb-12.rolling

    • mariadb-12.rc

      1. Imports the GPG public key used to verify the signature of MariaDB software package

      2. Updates the package cache with package definitions from the MariaDB Package Repository with apt update

      2025-02-13

      c4a0f3dade02c51a6a28ca3609a13d7a0f8910cccbb90935a2f218454d3a914a

      2024-11-14

      ceaa5bd124c4d10a892c384e201bb6e0910d370ebce235306d2e4b860ed36560

      2024-08-14

      6083ef1974d11f49d42ae668fb9d513f7dc2c6276ffa47caed488c4b47268593

      2024-05-30

      26e5bf36846003c4fe455713777a4e4a613da0df3b7f74b6dad1cb901f324a84

      2024-02-16

      30d2a05509d1c129dd7dd8430507e6a7729a4854ea10c9dcf6be88964f3fdc25

      2023-11-21

      2d7291993f1b71b5dc84cc1d23a65a5e01e783aa765c2bf5ff4ab62814bb5da1

      2023-08-21

      935944a2ab2b2a48a47f68711b43ad2d698c97f1c3a7d074b34058060c2ad21b

      2023-08-14

      f5ba8677ad888cf1562df647d3ee843c8c1529ed63a896bede79d01b2ecc3c1d

      2023-06-09

      3a562a8861fc6362229314772c33c289d9096bafb0865ba4ea108847b78768d2

      2023-02-16

      ad125f01bada12a1ba2f9986a21c59d2cccbe8d584e7f55079ecbeb7f43a4da4

      2022-11-17

      367a80b01083c34899958cdd62525104a3de6069161d309039e84048d89ee98b

      2022-08-22

      733cf126b03f73050e242102592658913d10829a5bf056ab77e7f864b3f8de1f

      2022-08-15

      f99e1d560bd72a3a23f64eaede8982d5494407cafa8f995de45fb9a7274ebc5c

      2022-06-14

      d4e4635eeb79b0e96483bd70703209c63da55a236eadd7397f769ee434d92ca8

      2022-02-08

      b9e90cde27affc2a44f9fc60e302ccfcacf71f4ae02071f30d570e6048c28597

      2022-01-18

      c330d2755e18e48c3bba300a2898b0fc8ad2d3326d50b64e02fe65c67b454599

      -
      -

      Override detection of OS type. Acceptable values include debian, ubuntu, rhel, and sles

      --os-version=

      Override detection of OS version. Acceptable values depend on the OS type you specify

      --skip-key-import

      Skip importing GPG signing keys

      --skip-maxscale

      Skip the 'MaxScale' repository

      --skip-server

      Skip the 'MariaDB Server' repository

      --skip-tools

      Skip the 'Tools' repository

      --skip-verify

      Skip verification of MariaDB Server versions. Use with caution, as this can lead to an invalid repository configuration file being created

      --skip-check-installed

      Skip tests for required prerequisites for this script

      --skip-eol-check

      Skip tests for versions that are past their EOL date

      --skip-os-eol-check

      Skip tests for operating system versions past the EOL date

      --write-to-stdout

      Write output to stdout instead of to the OS's repository configuration file. This will also skip importing GPG public keys and updating the package cache on platforms where that behavior exists

      c33b022c2cc325fa50be62eae070ea0bdcaf85367f840accac7acaeea1e8a972

      2025-06-04

      4d483b4df193831a0101d3dfa7fb3e17411dda7fc06c31be4f9e089c325403c0

      2025-01-16

      99ea6c55dbf32bfc42cdcd05c892aebc5e51b06f4c72ec209031639d6e7db9fe

      2025-01-07

      b98c6436e01ff33d7e88513edd7b77a965c4500d6d52ee3f106a198a558927af

      2024-11-19

      97e5ef25b4c4a4bd70b30da46b1eae0b57db2f755ef820a28d254e902ab5a879

      2024-11-13

      0c181ada4e7a4cd1d7688435c478893502675b880be2b918af7d998e239eb325

      2024-09-20

      c12da6a9baa57eab7fa685aa24bf76e6929a8c67f4cd244835520c0181007753

      2024-09-09

      733f247c626d965304b678b62a4b86eb4bb8bf956f98a241b6578dedc6ca4020

      2024-06-12

      b96fcd684a84bbe1080b6276f424537fc9d9c11ebe243ad8b9a45dd459f6ee4f

      2023-07-27

      f8eb9c1b59ccfd979d27e39798d2f2a98447dd29e2149ce92bf606aab4493ad9

      2023-03-13

      8dfef0ec98eb03a4455df07b33107a6d4601425c9df0ab5749b8f10bf3abdcbb

      2022-10-26

      3f4a9d1c507a846a598e95d6223871aade69a9955276455324e7cc5f54a87021

      2022-09-12

      713a8f78ea7bab3eccfb46dc14e61cd54c5cf5a08acb5c320ef5370d375e48bd

      2022-06-14

      cfcd35671125d657a212d92b93be7b1f4ad2fda58dfa8b5ab4b601bf3afa4eae

      2022-03-11

      53efddb84ea12efa7d521499a7474065bd4a60c721492d0e72b4336192f4033f

      2021-12-13

      5feb2aac767c512cc9e2af674d1aef42df0b775ba2968fffa8700eb42702bd44

      2021-10-13

      4f266ff758fe15eeb9b8b448a003eb53e93f3064baf1acb789dd39de4f534b1d

      2021-09-14

      b741361ea3a0a9fcaa30888a63ff3a8a4021882f126cf4ef26cf616493a29315

      2021-08-26

      a49347a4e36f99c5b248403ed9fb9b33a2f07f5e24605a694b1b1e24d7199f28

      2021-06-29

      99e768b24ae430b37dec7cb69cdd625396630dba18f5e1588ee24d3d8bb97064

      2021-06-14

      ec08f8ede524f568b3766795ad8ca1a0d0ac4db355a18c3d85681d7f9c0f8c09

      2021-05-04

      bf67a231c477fba0060996a83b197c29617b6193e1167f6f062216ae13c716c7

      2021-03-15

      99c7f4a3473a397d824d5f591274c2a4f5ebf6dc292eea154800bbaca04ddc7e

      2021-02-12

      c78db828709d94876406a0ea346f13fbc38e73996795903f40e3c21385857dd4

      2020-12-16

      c01fa97aed71ca0cd37cba7036ff80ab40efed4cc261c890aa2aa11cd8ab4e2f

      2020-12-15

      e42f1f16f2c78a3de0e73dcc2a9081e2f771b3161f4f4ceecb13ea788d84673b

      2020-12-14

      4aaf495606633a47c55ea602829e67e702aec0a5c6ff6b1af90709c19ee9f322

      2020-10-07

      93fa0df3d6491a791f5d699158dcfe3e6ce20c45ddc2f534ed2f5eac6468ff0a

      2020-09-08

      eeebe9e08dffb8a4e820cc0f673afe437621060129169ea3db0790eb649dbe9b

      2020-07-16

      957bc29576e8fd320fa18e35fa49b5733f3c8eeb4ca06792fb1f05e089c810ff

      2025-12-10

      73f4ab14ccc3ceb8c03bb283dd131a3235cfc28086475f43e9291d2060d48c97

      2025-11-18

      7a3e1610fee91347e198214e3672a6d3932ccbbf67905d9e892e9255baaec292

      2025-08-07

      Pinning the Repository to a Specific Minor Release
      Usage Example - MariaDB Enterprise Server
      Usage Example - MariaDB Community Server
      Installing MariaDB Packages with ZYpp
      MariaDB MaxScale Installation Guidearrow-up-right

      923eea378be2c129adb4d191f01162c1fe5473f1114d7586f096b5f6b9874efe

      is a malloc replacement library optimized for multi-threaded usage. It features a built-in heap debugger and profiler. Another malloc replacement that can speed up MariaDB is
      .

      The procedures to use one of these libraries with MariaDB are the same. Many other malloc replacement libraries (as well as heap debuggers and profilers) can be used with MariaDB in a similar fashion.

      hashtag
      Prerequisites

      jemalloc is a powerhouse for reducing memory fragmentation and improving concurrency, but it isn't a "one-size-fits-all" drop-in for every environment. Its availability and stability depend heavily on how the operating system handles memory pages and how MariaDB was compiled.

      hashtag
      Operating System Availability

      • Linux: Jemalloc is most at home here. Most major distributions (Ubuntu, Debian, CentOS/RHEL, Arch) include it in their official repositories (libjemalloc2 or jemalloc). It is the standard recommendation for high-traffic MariaDB setups on Linux.

      • Windows: Jemalloc does not have the same "native" presence on Windows. While the jemalloc source code can technically be compiled for Windows using MSVC or MinGW, MariaDB for Windows is almost exclusively used with the default Windows system allocator. Most DBAs do not use jemalloc on Windows production servers.

      • FreeBSD: This is the "birthplace" of jemalloc – it replaced the system malloc in FreeBSD back in 2005. If you are running MariaDB on FreeBSD, you are likely using jemalloc by default at the OS level.

      hashtag
      Hardware and Architecture Hurdles

      One of the most common "hidden" failures occurs on non-x86 architectures:

      • Raspberry Pi (ARM): On newer devices like the Raspberry Pi 5, jemalloc often fails to start with the error: <jemalloc>: Unsupported system page size. This happens because jemalloc is frequently compiled assuming a 4KB page size, while many ARM kernels now use 16KB or 64KB pages for better performance.

      • Cloud Instances: Small instances (like AWS t2.micro) can sometimes behave unpredictably with jemalloc if they lack sufficient swap space or if the memory overhead of the jemalloc metadata conflicts with the tiny RAM footprint.

      hashtag
      Compatibility Matrix Summary

      Platform

      Jemalloc Support

      Typical Usage

      Linux (x86_64)

      Excellent

      Highly recommended; installed via apt or yum.

      FreeBSD

      Native

      It is the system default.

      hashtag
      Check if it's Ready to Use

      Before trying to force it via LD_PRELOAD, check if the library even exists on your system paths:

      If these commands return nothing, you need to install the package first (sudo apt install libjemalloc2 or sudo dnf install jemalloc).

      hashtag
      Why Use it

      The main reason to switch isn't just speed, but fragmentation. Standard malloc can leave small gaps of unused memory that the OS can't reclaim, leading to "memory bloat" where MariaDB appears to use 10GB of RAM even if the data only needs 6GB. Jemalloc is much better at packing these allocations tightly.

      hashtag
      Checking the malloc Implementation in Use

      To check which malloc implementation is used, run this query:

      A value of system indicates the system default, which is normally malloc. If another library is used, the name and version of the library is shown.

      hashtag
      Building MariaDB With an Alternative to malloc

      To build MariaDB with TCMalloc, you need to use the following command:

      To use jemalloc, specify -ljemalloc instead of -ltcmalloc.

      hashtag
      Starting mariadbd-safe With an Alternative to malloc

      Start a standard MariaDB server with TCmalloc like this:

      To configure mariadbd-safe to use tcmalloc or jemalloc, add this to your configuration file:

      hashtag
      Starting mariadbd With an Alternative to malloc

      Locate the library file that needs to be used:

      Pass that library file to mariadbd using the LD_PRELOAD variable:

      hashtag
      Configuring systemd

      If you use systemd to run MariaDB, locate the library as explained above, then locate the service configuration file:

      Edit the mariadb.service file by adding a line to the [Service] group:

      For example, add this:

      Reload the configuration for the news setting to take effect, and restart MariaDB:

      hashtag
      Dockerfile

      If you run MariaDB on Docker and use an image from a Dockerfile that is publicly available, most probably you have an entry point that is a bash script, which starts mariadbd directly. Edit that bash script, or set the LD_PRELOAD variable from the Dockerfile:

      To find the library file, run one of these commands while the container is running:

      Example:

      hashtag
      Vagrantfile

      Usually Vagrant is used to start a complete system in a virtual machine. In that case, you can use one of the methods above, for example you can modify your Vagrantfile to copy a modified version of the mariadb.service file to the guest system to configure systemd.

      If you use Vagrant with the Docker provider, you can follow the instructions above to modify the Dockerfile.

      hashtag
      Making jemalloc Persistent

      To make MariaDB use jemalloc persistently, set it up like this. These instructions work on Linux using systemd and running on an x86 architecture.

      hashtag
      Steps

      1

      hashtag
      Identify the jemalloc library path.

      Identify the jemalloc library path, to find the exact location of the jemalloc shared library on your system:

      Take a note of the output path. Typically, it is something like /usr/lib64/libjemalloc.so.2.

      2

      hashtag
      Create or edit the MariaDB Systemd override file.

      This is the crucial step for persistence. Use systemctl edit to manage the override file:

      If an override file already exists for MariaDB, it opens in the editor. If not, the editor creates a new, empty file, typically at /etc/systemd/system/mariadb.service.d/override.conf

      3

      hashtag
      Restart services and MariaDB.

      4

      hashtag
      Reboot the computer, and verify that jemalloc is used.

      You can verify this on various levels.

      MariaDB:

      Operating system:

      Operating system processes:

      hashtag
      Notes

      systemctl edit creates a separate configuration file (/etc/systemd/system/mariadb.service.d/override.conf). systemd always prioritizes settings in override files over the main service file (/usr/lib/systemd/system/mariadb.service).

      When upgrading MariaDB, the package manager only replaces or updates the main service file. Your custom override file in /etc/systemd/system/mariadb.service.d/ remains untouched, thus preserving your jemalloc configuration.

      systemd reads all its service configurations, including override files, on system start. This means the LD_PRELOAD environment variable is set for MariaDB automatically each time the service starts, making the change persistent across reboots.

      hashtag
      Finding memory leaks with jemalloc

      jemalloc provides a report of memory leaks at program exit:

      This produces output like this:

      You can learn more about the memory leaks with jeprof, which is shipped with jemalloc:

      You can also generate a PDF call graph of the leak:

      hashtag
      See Also

      • Profiling memory usage

      • Jemalloc leak checkingarrow-up-right

      This page is licensed: CC BY-SA / Gnu FDL

      Profiling Memory Usage
      TCMallocarrow-up-right
      jemallocarrow-up-right
      spinner
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="${token}" --apply
      chmod +x mariadb_repo_setup
      sudo ./mariadb_repo_setup
      curl -LsSO https://supplychain.mariadb.com/mariadb-keyring-2025.gpg
      sudo mv mariadb-keyring-2025.gpg /etc/apt/trusted.gpg.d/
      sudo apt update
      sudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025
      sudo zypper install MariaDB-server MariaDB-client MariaDB-backup
      sudo zypper install maxscale
      Package: *
      Pin: origin downloads.mariadb.com
      Pin-Priority: 1000
      find /usr -name "libjemalloc.so.*"
      # On Debian/Ubuntu
      find /usr/lib -name "libjemalloc.so.*"
      
      # On RHEL/CentOS
      find /usr/lib64 -name "libjemalloc.so.*"
      SHOW GLOBAL VARIABLES LIKE 'version_malloc_library';
      +------------------------+--------+
      | Variable_name          | Value  |
      +------------------------+--------+
      | version_malloc_library | system |
      +------------------------+--------+
      cmake -DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'  -DWITH_SAFEMALLOC=OFF
      /usr/sbin/mariadbd-safe --malloc-lib=tcmalloc
      [mariadbd-safe]
      malloc-lib=tcmalloc
      # jemalloc
      find /usr/lib -name "libjemalloc.so.*"
      # tcmalloc
      find /usr/lib -name "libtcmalloc.so.*"
      LD_PRELOAD=/path/to/library mariadbd
      systemctl status mariadb | grep Loaded
      [Service]
      Environment=LD_PRELOAD=<path-to-library>
      [Service]
      Environment=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
      systemctl daemon-reload
      systemctl restart mariadb
      ENV LD_PRELOAD=<path-to-library>
      # jemalloc
      docker exec -ti <container-name> find /usr/lib -name "libjemalloc.so.*"
      # tcmalloc
      docker exec -ti <container-name> find /usr/lib -name "libtcmalloc.so.*"
      docker run -P -d --name mariadb --env LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libjemalloc.so.2" --env MARIADB_ROOT_PASSWORD=Password123! mariadb:latest
      MALLOC_CONF=prof_leak:true,lg_prof_sample:0,prof_final:true \
      LD_PRELOAD=${JEMALLOC_PATH}/lib/libjemalloc.so.2  path-to-mariadbd
      <jemalloc>: Leak summary: 267184 bytes, 473 objects, 20 contexts
      <jemalloc>: Run jeprof on "jeprof.19678.0.f.heap" for leak detail
      jeprof --show_bytes path-to-mariadbd jeprof.19678.0.f.heap
      jeprof --show_bytes --pdf path-to-mariadbd  jeprof.19678.0.f.heap > /tmp/mariadbd.pdf
      . Add the following content to the file:

      Replace /usr/lib64/libjemalloc.so.2 with the actual path you noted in step 1. Save the file and exit the editor.

      Windows

      Poor/Partial

      Rarely used; usually requires custom builds.

      ARM (RPi/M1/M2)

      Conditional

      Depends on the kernel page size (4KB vs 16KB).

      Solaris/Illumos

      Experimental

      Possible but lacks the robust testing seen on Linux.

      sudo systemctl edit mariadb
      sudo systemctl daemon-reexec 
      sudo systemctl daemon-reload 
      sudo systemctl restart mariadb
      mariadb -e "SHOW GLOBAL VARIABLES LIKE 'version_malloc_library';"
      +------------------------+------------------------------------------------------------+ 
      | Variable_name          | Value                                                      | 
      +------------------------+------------------------------------------------------------+ 
      | version_malloc_library | jemalloc 5.2.1-0-gea6b3e973b477b8061e0076bb257dbd7f3faa756 | 
      +------------------------+------------------------------------------------------------+
      sudo cat /proc/$MARIADB_PID/environ | tr '\0' '\n' | grep LD_PRELOAD
      LD_PRELOAD=/usr/lib64/libjemalloc.so.2
      [Service] 
      Environment="LD_PRELOAD=/usr/lib64/libjemalloc.so.2"
      sudo cat /proc/$MARIADB_PID/maps | grep jemalloc
      7f6981c00000-7f6981c06000 r--p 00000000 fd:00 50981369 /usr/lib64/libjemalloc.so.2 
      7f6981c06000-7f6981c76000 r-xp 00006000 fd:00 50981369 /usr/lib64/libjemalloc.so.2 
      7f6981c76000-7f6981c81000 r--p 00076000 fd:00 50981369 /usr/lib64/libjemalloc.so.2 
      7f6981c81000-7f6981c87000 r--p 00080000 fd:00 50981369 /usr/lib64/libjemalloc.so.2 
      7f6981c87000-7f6981c88000 rw-p 00086000 fd:00 50981369 /usr/lib64/libjemalloc.so.2
      spinner
      MariaDB ColumnStore storage engine
      MariaDB ColumnStore storage engine

      Upgrading from MariaDB Enterprise Server 10.6 to 11.8

      This guide outlines the process for performing a major version upgrade from MariaDB Enterprise Server (ES) 10.6 directly to MariaDB Enterprise Server 11.8.

      circle-info

      This guide assumes you are running on a variant of Linux that uses systemd to manage services (such as RHEL, CentOS, AlmaLinux, Rocky Linux, Debian, Ubuntu, or SLES).

      hashtag
      Prerequisites

      Before beginning the upgrade, ensure these precautionary measures and environment checks are completed to protect your data.

      hashtag
      Data Backup and Integrity

      • Perform a Full Backup: Use mariadb-backup to create a complete copy of your current data.

      • Prepare the Backup: Consolidate the backup files so they are ready for immediate restoration if required.

      • Verify Recoverability: Test your backup by restoring it to a non-production environment before proceeding.

      hashtag
      Service and Plugin Preparation

      • Audit Plugin Transition: If you currently use the MariaDB 10.6 Audit Plugin (server_audit.so), it is recommended to transition to the MariaDB Enterprise Audit Plugin during this upgrade. If you maintain the Community version, ensure your configuration explicitly loads it to avoid conflicts.

      • Commit or Roll Back XA Transactions: Run XA RECOVER; to identify any external XA transactions in a prepared state; these must be finalized before the service is stopped.

      hashtag
      Compatibility & Legacy Support

      This ensures the team can maintain 10.6 behavior for applications that aren't ready for the new defaults.

      • Handling Non-Default Character Sets: If your 10.6 instance uses latin1 or utf8mb3, do not switch to utf8mb4 immediately. You must explicitly define your existing character set in the new my.cnf to override the 11.8 defaults.

      • The OLD_MODE Tip: Set old_mode = UTF8_IS_UTF8MB3 in your configuration; this ensures that

      hashtag
      Environment Compatibility

      • Engineering Policy: Verify your operating system version is still supported for the 11.8 series by checking the .

      • Customer Token: Have your Customer Download Token ready for the repository configuration step.

      hashtag
      The Upgrade Procedure

      1

      hashtag
      Perform a Controlled Shutdown of 10.6

      1. Initiate Fast Shutdown to ensure the InnoDB engine closes cleanly.

      hashtag
      Incompatible and Significant Changes

      The following variables from version 10.6 have been removed, renamed, or deprecated in the 11.8 release series.

      hashtag
      New Variables Added in 11.8

      circle-info

      Once the , update your to define these new variables.

      hashtag
      Optimizer Cost Model Variables

      circle-exclamation

      Handle with care

      Because the 11.8 engine uses a completely new "weighting" system designed for modern storage (SSDs), altering these variables without extensive benchmarks can lead to severe performance degradation or inefficient query execution plans. It is strongly recommended to keep these at their defaults upon upgradation unless you are performing expert-level performance tuning.

      These variables define the weights of the new optimizer. If query execution plans change after the upgrade, these parameters are the primary audit points and represent .

      Variable Name
      11.8 Default
      Note

      hashtag
      InnoDB Variables

      InnoDB used complex buffering (like the "Change Buffer") to delay writes because hard drives were slow at random I/O. In version 11.8, these legacy layers are being stripped back. The following allow MariaDB to communicate more directly with modern SSD/NVMe storage, reducing the "middleman" overhead of the Operating System's cache.

      Variable Name
      11.8 Default

      hashtag
      Replication & Binlog Variables

      As clusters grow, managing the Global Transaction ID (GTID) list becomes a performance bottleneck. 11.8 introduces "GTID Indexing," which treats the replication and log more like a database table, allowing for near-instant lookups when a replica reconnects. See to learn more about the variables.

      Variable Name
      11.8 Default
      Note

      hashtag
      Advanced Logging Variables

      Slow logging was often a "blunt instrument" that could either miss critical spikes or flood the disk with useless data. Version 11.8 introduces granular filters. You can now tell the engine to ignore queries that touch many rows but are still fast, or to ensure that queries exceeding a specific "emergency" duration are always captured, regardless of other filters. See to learn more about the following variables

      Variable Name
      11.8 Default

      hashtag
      Security & Authentication Variables

      MariaDB 11.8 shifts toward modern cryptographic standards. This includes better handling of User Defined Functions (UDFs) and a transition toward the plugin, which provides significantly stronger protection against "man-in-the-middle" and brute-force attacks compared to legacy authentication.

      Variable Name
      11.8 Default

      hashtag
      Resource Limits Variables

      A single unoptimized query could theoretically consume all available disk space by creating a massive temporary table, crashing the entire operating system. Version 11.8 introduces "Safety Valves" that allow administrators to set hard limits on how much temporary space a single session or the entire server can use.

      Variable Name
      11.8 Default

      hashtag
      Vector Search / MHNSW Variables

      MariaDB 11.8 introduces a native Vector Search engine using the Metadata-HNSW (Hierarchical Navigable Small Worlds) algorithm. This allows the database to store and query "embeddings" (mathematical representations of text/images), enabling AI-powered semantic search directly within the SQL layer.

      circle-info

      A feature entirely absent in MariaDB 10.6, MariaDB 11.8 introduced native Vector Search (MHNSW).

      • Primary Config: Use MHNSW_DEFAULT_DISTANCE to define semantic search logic (default: euclidean).

      Variable Name
      11.8 Default

      hashtag
      General Architecture Changes Variables

      The final group of changes focuses on renaming legacy variables for industry compliance (SQL Standard) and adding features that improve how the database communicates with external tools, such as proxies or system-versioning audit logs.

      Variable Name
      11.8 Default
      Note
      triangle-exclamation

      #Handle them with extra care

      These variables have the highest impact on system stability and performance; please review during your configuration updates.

      circle-exclamation

      ^Caution

      These variables may impact system stability and performance; please review during your configuration updates.

      hashtag
      Options to Remove, Rename, or Update in 11.8

      hashtag
      Removed, Superseded or Renamed Options

      During the maintenance window (after stopping 10.6 and before starting 11.8), you must scrub your my.cnf of all removed, superseded and renamed options.

      Variable Name
      10.6 Default
      Technical Action / Replacement
      triangle-exclamation

      ¹Fatal Error

      MariaDB 11.8 will abort startup if these legacy parameters are detected in the configuration file. These parameters MUST be removed prior to restart to prevent upgrade failure.

      Example: [ERROR] /usr/sbin/mariadbd: unknown variable 'MAX_TMP_TABLES=32'

      circle-exclamation

      ²Warning:

      MariaDB 11.8 will start but log a warning if these legacy parameters are detected in the configuration file. Scrub the file of these parameter during the upgrade to maintain configuration hygiene and ensure settings reflect active 11.8 features.

      Warning Example: [Warning] 'innodb-change-buffering' was removed. It does nothing now and exists only for compatibility with old my.cnf files.

      hashtag
      Options That Have Changed Default Values

      circle-info

      For variables that have existed in both versions but have different defaults (e.g., innodb_purge_batch_size), the 11.8 engine will automatically apply the new value. If you require identical behavior to your 10.6 environment during the initial cutover, you must explicitly hardcode the 10.6 values into your new configuration file.

      Options
      10.6 Default
      11.8 Default
      Impact / Note

      hashtag
      Deprecated Options

      Option
      Reason / Recommendation

      hashtag
      Reverse Replication (11.8 to 10.6)

      If a critical regression is discovered, you can use an existing 10.6 machine in your setup as a failback safety net.

      circle-exclamation

      Replicating from a MariaDB 11.8 Primary to a MariaDB 10.6 Replica is NOT officially supported by MariaDB Engineering. This configuration should only be used as a temporary emergency safety net during the upgrade window.

      hashtag
      Required 11.8 Primary Configuration

      To prevent the 10.6 replica from crashing due to modern metadata (such as the #2304 character set ID), the 11.8 Primary must be configured to "downgrade" its binary log output using a compatibility file.

      hashtag
      The rollback_compat.cnf Setup

      Create a standalone configuration file to house these temporary reversion settings at /etc/my.cnf.d/rollback_compat.cnf

      To activate these settings, append the following line to the end of the [mariadb] section in your primary /etc/my.cnf file: !include /etc/my.cnf.d/rollback_compat.cnf

      triangle-exclamation

      Critical Compatibility Step

      MariaDB 11.8 uses a new default collation ID (#2304) that version 10.6 does not recognize. To prevent the 10.6 replica from crashing, you must set character_set_collations = '' on the 11.8 Primary. This forces the Primary to use legacy IDs that the 10.6 machine can process

      hashtag
      Known "Breaking" Factors

      Certain 11.8 features will immediately break the 10.6 replication link if used:

      • Vector Data Types: Any INSERT or UPDATE involving a VECTOR(N) column.

      • New Functions: Use of VEC_Distance or other 11.8-specific SQL functions.

      circle-info

      Note on Existing Nodes

      You do not need a new machine for reverse replication. You can use an existing 10.6 node already in your setup. Simply stop replication on that node before the upgrade, and resume it once the 11.8 Primary is configured for compatibility.

      hashtag
      Operational Steps for the Safety Net

      1

      hashtag
      Isolate a 10.6 Node

      Before upgrading your entire environment, identify one existing replica to remain on version 10.6. Stop the replication on this node just before you upgrade the Primary to 11.8.

      2

      hashtag
      Post-Upgrade Verification

      After the data upgrade is complete, verify the functionality of 11.8 features:

      • Confirm Version: SELECT VERSION(); should reflect the 11.8 GA series.

      • Confirm Vector Search: Verify the new VECTOR(N) data type and conversion functions.

      • Verify Optimizer Performance: Prefix any SQL query with ANALYZE FORMAT=JSON on upgraded 11.8 instances to audit the new SSD-aware cost model:

      utf8
      remains an alias for the legacy 3-byte character set instead of the new 4-byte standard.
    • Maintaining SSL Compatibility: Version 11.4+ enables "Zero-configuration TLS" by default. If your application does not support SSL, set require_secure_transport = OFF in the [mariadb] section of your my.cnf to prevent connection refusals.

    • Stop the Service mariadb.

      2

      hashtag
      Purge Legacy 10.6 Packages

      Remove the old version to prevent package manager conflicts before installing 11.8.

      • YUM (RHEL/CentOS/Alma/Rocky): sudo yum remove "MariaDB-*" galera-enterprise-4

      • APT (Debian/Ubuntu): sudo apt-get remove "mariadb-*" galera-enterprise-4

      • ZYpp (SLES): sudo zypper remove "MariaDB-*" galera-enterprise-4

      3

      hashtag
      Switch to 11.8 Enterprise Repositories

      Download and run the setup script, specifying version 11.8.

      4

      hashtag
      Install the 11.8 Release Series

      The repository setup only configures the source; you must explicitly install the new binaries.

      • YUM: sudo yum install MariaDB-server MariaDB-backup

      • APT: sudo apt update && sudo apt install mariadb-server mariadb-backup

      • ZYpp: sudo zypper install MariaDB-server MariaDB-backup

        {% endstep %}

      5

      hashtag
      Implement Version-Specific Configuration Changes

      circle-info

      Do not apply 11.8-specific variables while the 10.6 service is active. During the package swap, update my.cnf to adopt the 11.8 defaults for the . These variables replace legacy hardcoded logic and are essential for the new engine's performance.

      • Scrub: Remove legacy 10.6 variables (old_alter_table, etc.).

      • Adopt: Add the new using their 11.8 defaults.

      • Stabilize: Set NEW_MODE = OFF to prevent unpredictable execution plan changes on Day 1.

      circle-check

      Recommended my.cnf for Version 11.8 section

      6

      hashtag
      Bring the Service Online and Finalize Data

      1. Start the New Service: sudo systemctl start mariadb.

      2. Execute the Data Upgrade Utility: This corrects system table structures and marks data files as compatible with version 11.8.

      0.02

      OPTIMIZER_EXTRA_PRUNING_DEPTH

      8

      OPTIMIZER_INDEX_BLOCK_COPY_COST

      0.0356

      OPTIMIZER_KEY_COMPARE_COST

      0.011361

      OPTIMIZER_KEY_COPY_COST

      0.015685

      OPTIMIZER_KEY_LOOKUP_COST

      0.435777

      OPTIMIZER_KEY_NEXT_FIND_COST

      0.082347

      OPTIMIZER_ROWID_COMPARE_COST

      0.002653

      OPTIMIZER_ROWID_COPY_COST

      0.002653

      OPTIMIZER_ROW_COPY_COST

      0.060866

      OPTIMIZER_ROW_LOOKUP_COST

      0.130839

      OPTIMIZER_ROW_NEXT_FIND_COST

      0.045916

      OPTIMIZER_SCAN_SETUP_COST

      10

      OPTIMIZER_WHERE_COST

      0.032

      INNODB_DATA_FILE_BUFFERING

      OFF

      INNODB_DATA_FILE_WRITE_THROUGH

      OFF

      INNODB_LINUX_AIO

      auto

      INNODB_LOG_CHECKPOINT_NOW

      OFF

      INNODB_LOG_FILE_BUFFERING

      OFF

      INNODB_LOG_FILE_MMAP

      OFF

      INNODB_LOG_FILE_WRITE_THROUGH

      OFF

      INNODB_LOG_SPIN_WAIT_DELAY

      0

      INNODB_TRUNCATE_TEMPORARY_TABLESPACE_NOW

      OFF

      ON

      #

      4096

      #

      65536

      BINLOG_IGNORE_DB

      (None)

      BINLOG_LARGE_COMMIT_THRESHOLD

      134217728

      #

      OFF

      #

      8192

      Packet Safety: Ensure this value on the 11.8 Primary is strictly lower than the MAX_ALLOWED_PACKET setting on your 10.6 Replicas. If an 11.8 row event exceeds the legacy replica's packet limit, replication will fail with a "Packet too large on slave" error.

      BINLOG_SPACE_LIMIT

      0

      #

      (None)

      SLAVE_ABORT_BLOCKING_TIMEOUT

      31536000

      #

      1

      Binary Log Purge Safety:

      The default value is 1. If your topology requires that binary logs be retained until they are acknowledged by multiple replicas, increase this value to prevent the primary from purging logs before all critical slaves have synchronized the data.

      SLAVE_MAX_STATEMENT_TIME

      0

      LOG_SLOW_QUERY_TIME

      10

      Compatibility Warning: Legacy 10.6 replicas cannot process vector data types or SQL functions; using them will break the replication link.

      aes-128-ecb

      High; Block_encryption_mode default on 11.8 is fine, but we should be careful when calling AES_ENCRYPT and AES DECRYPT_FUNCTION as syntax is different in 10.6

      #

      utf8mb4=...

      Character_set_collations should be empty for 11.8 -> 10.6

      #

      REPEATABLE-READ

      #

      OFF

      WSREP_ALLOWLIST

      (None)

      WSREP_STATUS_FILE

      (None)

      OFF

      Remove. Retired legacy debug code.

      INNODB_CHANGE_BUFFERING²

      none

      Scrub. Logic replaced by SSD-optimized write paths.

      INNODB_CHANGE_BUFFER_MAX_SIZE¹

      25

      Remove. Buffer size is now managed internally by the engine.

      INNODB_DEFRAGMENT²

      OFF

      Scrub. Manual defragmentation is no longer supported.

      INNODB_DEFRAGMENT_FILL_FACTOR²

      0.9

      Scrub. Feature retired; logic is now internal.

      INNODB_DEFRAGMENT_FILL_FACTOR_N_RECS²

      20

      Scrub. Feature retired; logic is now internal.

      INNODB_DEFRAGMENT_FREQUENCY²

      40

      Scrub. Feature retired; logic is now internal.

      INNODB_DEFRAGMENT_N_PAGES²

      7

      Scrub. Feature retired; logic is now internal.

      INNODB_DEFRAGMENT_STATS_ACCURACY²

      0

      Scrub. Feature retired; logic is now internal.

      INNODB_VERSION¹

      10.6.26

      Remove. Versioning is consolidated in global server metadata.

      MAX_TMP_TABLES¹

      32

      Remove. Internal temp table management is now automated.

      OLD_ALTER_TABLE¹

      DEFAULT

      Remove. Superseded by ALTER_ALGORITHM.

      TIME_FORMAT²

      %H:%i:%s

      Scrub. Enforced standard format.

      WSREP_CAUSAL_READS²

      OFF

      Scrub. Superseded by wsrep_sync_wait.

      WSREP_LOAD_DATA_SPLITTING¹

      OFF

      Remove. Legacy Galera splitting logic retired.

      WSREP_REPLICATE_MYISAM¹

      OFF

      Remove. Galera no longer supports MyISAM replication.

      WSREP_STRICT_DDL ¹

      OFF

      Remove. Replaced by wsrep_mode=STRICT_REPLICATION.

      Modern standard for client connections.

      CHARACTER_SET_CONNECTION

      latin1

      utf8mb4

      Modern standard for session connections.

      CHARACTER_SET_DATABASE

      latin1

      utf8mb4

      Modern standard for database storage.

      CHARACTER_SET_RESULTS

      latin1

      utf8mb4

      Modern standard for query results.

      collation_server

      latin1_swedish_ci

      utf8mb4_uca1400_ai_ci

      Transition to the modern Unicode collation standard.

      COLLATION_CONNECTION

      latin1_swedish_ci

      utf8mb4_uca1400_ai_ci

      Update to modern Unicode Collation Algorithm (UCA).

      COLLATION_DATABASE

      latin1_swedish_ci

      utf8mb4_uca1400_ai_ci

      Update to modern Unicode Collation Algorithm (UCA).

      EXPLICIT_DEFAULTS_FOR_TIMESTAMP

      OFF

      ON

      Impacts NULL handling in TIMESTAMPcolumns. Modify for reverse replication (11.8->10.6) to maintain same behavior on master and slave

      HAVE_SSL

      DISABLED

      YES

      SSL/TLS is now natively available and enabled by default.

      HISTOGRAM_TYPE

      (Empty)

      JSON_HB

      Optimizer now stores histogram stats in JSON format. Modify for reverse replication (11.8->10.6) to maintain same behavior on master and slave

      IGNORE_DB_DIRS

      #binlog_cache_files

      INNODB_BUFFER_POOL_CHUNK_SIZE

      134217728

      0

      Set to 0 to enable automatic calculation.

      INNODB_LOG_WRITE_AHEAD_SIZE

      8192

      4096

      Optimized for modern storage block alignment.

      innodb_snapshot_isolation

      OFF

      ON

      Enabled by default for improved consistency.

      innodb_undo_tablespaces

      0

      3

      Enables online truncation of undo logs.

      optimizer_prune_level

      1

      2

      Red Flag: Primary audit point for plan changes.

      OPTIMIZER_SWITCH

      index_merge=on index_merge_union=on index_merge_sort_union=on index_merge_intersection=on index_merge_sort_intersection=offengine_condition_pushdown=off index_condition_pushdown=on derived_merge=on derived_with_keys=on firstmatch=on loosescan=onmaterialization=on in_to_exists=on

      index_merge=on index_merge_union=on index_merge_sort_union=on index_merge_intersection=on index_merge_sort_intersection=offindex_condition_pushdown=on derived_merge=on derived_with_keys=on firstmatch=on loosescan=on materialization=on in_to_exists=onsemijoin=on

      Added hash_join_cardinality=on, sargable_casefold=on.

      OPTIMIZER_ADJUST_SECONDARY_KEY_COSTS

      fix_reuse_range_for_ref fix_card_multiplier

      0

      Weights for secondary key lookups simplified.

      SESSION_TRACK_SYSTEM_VARIABLES

      autocommit character_set_client character_set_connection character_set_results

      time_zone

      autocommit character_set_client character_set_connection character_set_results

      time_zone

      Added redirect_url to the tracking list.

      VERSION

      10.6.26-MariaDB-log

      11.8.7-MariaDB-log

      Metadata only

      Large Row Events: If binlog_row_event_max_size is tuned significantly higher than 10.6 defaults.
      hashtag
      Configure 11.8 for Compatibility

      Immediately after installing version 11.8 on your Primary, apply the rollback_compat.cnf settings (such as character_set_collations = '' and binlog_checksum = CRC32).

      3

      hashtag
      Start 11.8 and Rotate Logs

      Start the 11.8 service and run FLUSH LOGS;. This ensures the Primary begins writing its binary logs in a format the 10.6 replica can understand.

      4

      hashtag
      Connect the 10.6 Node

      Point your existing 10.6 machine to the new 11.8 Primary. Because the data on the 10.6 node is already consistent with the pre-upgrade state, it can simply "pick up" the new changes from the 11.8 Primary.

      This captures real-time execution metrics like engine_cost (measured in ms) and pages_accessed, verifying that the optimizer is correctly prioritizing high-speed storage over legacy 10.6 logic:
    • Check Replication Lag Fields: On a replica server, run SHOW REPLICA STATUS\G and look for the new Master_Slave_time_diff field.

    • NEW_MODE

      OFF

      OPTIMIZER_DISK_READ_COST

      10.24

      Optimizer Plan Consistency:

      Row-based replication (RBR) remains unaffected by these changes. However, because the 11.8 Primary uses the new cost model while legacy 10.6 nodes use hardcoded logic, query execution plans may differ significantly between the Master and Slave.

      ^

      34679

      INNODB_ALTER_COPY_BULK#

      ON

      INNODB_BUFFER_POOL_SIZE_AUTO_MIN

      134217728

      INNODB_BUFFER_POOL_SIZE_MAX

      BINLOG_ALTER_TWO_PHASE#

      OFF

      BINLOG_DO_DB

      (None)

      LOG_SLOW_ALWAYS_QUERY_TIME

      31536000

      LOG_SLOW_MIN_EXAMINED_ROW_LIMIT

      0

      LOG_SLOW_QUERY

      OFF

      LOG_SLOW_QUERY_FILE

      ALLOW_SUSPICIOUS_UDFS

      OFF

      SKIP_GRANT_TABLES#

      OFF

      MAX_BINLOG_TOTAL_SIZE

      0

      MAX_TMP_SESSION_SPACE_USAGE

      1099511627776 (1TB)

      MAX_TMP_TOTAL_SPACE_USAGE

      1099511627776 (1TB)

      MHNSW_DEFAULT_DISTANCE#

      euclidean

      MHNSW_DEFAULT_M

      6

      MHNSW_EF_SEARCH

      20

      MHNSW_MAX_CACHE_SIZE

      REDIRECT_URL#

      (None)

      Replication Redirection Safety:

      The REDIRECT_URL variable allows the server to send redirection hints to proxies or clients. Crucial: Configure this carefully on replicas to ensure that internal slave-to-primary connections are not redirected, as accidental redirection of replication traffic will break the sync link.

      SYSTEM_VERSIONING_INSERT_HISTORY#

      OFF

      System Versioning & Binlog Replay

      The default value for this variable is acceptable for standard operations. However, because MariaDB 11.8's mariadb-binlog utility explicitly prints this value in its output, replaying binary logs using the 11.8 version of the tool is not recommended during the transition period.

      DATETIME_FORMAT²

      %Y-%m-%d %H:%i:%s

      Scrub. 11.8 enforces standard internal format strings.

      DATE_FORMAT²

      %Y-%m-%d

      Scrub. Enforced standard format.

      character_set_server

      latin1

      utf8mb4

      Certified Change:Global default encoding shift.

      CHARACTER_SET_CLIENT

      latin1

      tx_isolation

      Replaced by transaction_isolation.

      tx_read_only

      Replaced by transaction_read_only.

      innodb_purge_rseg_truncate_frequency

      Obsolete due to lighter truncation operations.

      MariaDB Engineering Policiesarrow-up-right
      11.8 binaries are installed
      my.cnf
      the optimizer cost model
      InnoDB System Variables
      Replication and Binary Logging Variables
      Server System Variables
      caching_sha2_password

      OPTIMIZER_DISK_READ_RATIO

      134217728

      #

      (Host Specific)

      16777216

      ^

      DEBUG_NO_THREAD_ALARM¹

      utf8mb4

      sudo systemctl stop mariadb
      curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
      chmod +x mariadb_es_repo_setup
      sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply --mariadb-server-version="11.8"
      sudo mariadb-backup --backup \
            --user=mariadb-backup_user \
            --password=mariadb-backup_passwd \
            --target-dir=/data/backup/preupgrade_10.6_to_11.8
      sudo mariadb-backup --prepare --target-dir=/data/backup/preupgrade_10.6_to_11.8
      SET GLOBAL innodb_fast_shutdown = 1;
      [mariadb]
      # --- Core 10.6 Behavioral Reversion ---
      character_set_server            = latin1
      collation_server                = latin1_swedish_ci
      explicit_defaults_for_timestamp = OFF
      innodb_snapshot_isolation       = OFF
      
      # --- Mandatory Metadata Compatibility (SME "Red" List) ---
      # Prevents "Character set #2304" (utf8mb4_uca1400_ai_ci) errors on 10.6
      character_set_collations        = ''
      
      # Forces session metadata to legacy-compatible versions
      collation_connection            = utf8mb3_general_ci
      collation_database              = latin1_swedish_ci
      
      # Standardizes log checksums for the 10.6 parser
      binlog_checksum                 = CRC32
      CREATE TABLE test_vector (v VECTOR(3));
      SELECT VEC_ToText(VEC_FromText('[1,2,3]'));
      ANALYZE FORMAT=JSON SELECT * FROM orders WHERE total > 1000 AND status = 'shipped';
      "table": {
        "table_name": "orders",
        "access_type": "index_scan",
        "engine_cost": 4.12, // Actual cost in MILLISECONDS (ms)
        "r_engine_stats": {
          "pages_accessed": 142, // Real-world I/O footprint
          "pages_read_time_ms": 1.05 // Precise SSD latency
        }
      }
      semijoin=on
      partial_match_rowid_merge=on
      partial_match_table_scan=on
      subquery_cache=on
      mrr=offmrr_cost_based=off
      mrr_sort_keys=off
      outer_join_with_cache=on
      semijoin_with_cache=on
      join_cache_incremental=on
      join_cache_hashed=onjoin_cache_bka=on
      optimize_join_buffer_size=on
      table_elimination=on
      extended_keys=on
      exists_to_in=on
      orderby_uses_equalities=oncondition_pushdown_for_derived=on
      split_materialized=on
      condition_pushdown_for_subquery=on
      rowid_filter=oncondition_pushdown_from_having=on
      not_null_range_scan=off
      hash_join_cardinality=off
      cset_narrowing=off
      sargable_casefold=off
      partial_match_rowid_merge=on
      partial_match_table_scan=on
      subquery_cache=on
      mrr=off
      mrr_cost_based=off
      mrr_sort_keys=offouter_join_with_cache=on
      semijoin_with_cache=on
      join_cache_incremental=on
      join_cache_hashed=on
      join_cache_bka=onoptimize_join_buffer_size=on
      table_elimination=on
      extended_keys=on
      exists_to_in=on
      orderby_uses_equalities=oncondition_pushdown_for_derived=on
      split_materialized=on
      condition_pushdown_for_subquery=on
      rowid_filter=oncondition_pushdown_from_having=on
      not_null_range_scan=off
      hash_join_cardinality=on
      cset_narrowing=on
      sargable_casefold=on
      Optimizer Cost Model
      Optimizer Cost Model variables
      BINLOG_GTID_INDEX
      BINLOG_GTID_INDEX_PAGE_SIZE
      BINLOG_GTID_INDEX_SPAN_MIN
      BINLOG_LEGACY_EVENT_POS
      BINLOG_ROW_EVENT_MAX_SIZE
      REPLICATE_REWRITE_DB
      SLAVE_CONNECTIONS_NEEDED_FOR_PURGE
      BLOCK_ENCRYPTION_MODE
      CHARACTER_SET_COLLATIONS
      TRANSACTION_ISOLATION
      TRANSACTION_READ_ONLY
      [mariadb]
      # --- CHARACTER SETS & COLLATIONS ---
      # utf8mb4 is the modern default; UCA 14.0.0 is ID #2304
      character-set-server  = utf8mb4
      collation-server      = utf8mb4_uca1400_ai_ci
      # Use old_mode if your app requires 3-byte utf8 aliases
      old_mode              = UTF8_IS_UTF8MB3
      
      # --- OPTIMIZER COST MODEL (CRITICAL #) ---
      # Adopting 11.8 defaults replaces legacy hardcoded logic.
      # Set NEW_MODE = OFF to stabilize query plans during initial cutover.
      new_mode                      = OFF
      optimizer_disk_read_cost      = 10.24
      optimizer_disk_read_ratio     = 0.02
      optimizer_extra_pruning_depth = 8
      optimizer_index_block_copy_cost = 0.0356
      optimizer_key_compare_cost    = 0.011361
      optimizer_key_copy_cost       = 0.015685
      optimizer_key_lookup_cost     = 0.435777
      optimizer_key_next_find_cost  = 0.082347
      optimizer_rowid_compare_cost  = 0.002653
      optimizer_rowid_copy_cost     = 0.002653
      optimizer_row_copy_cost       = 0.060866
      optimizer_row_lookup_cost     = 0.130839
      optimizer_row_next_find_cost  = 0.045916
      optimizer_scan_setup_cost     = 10
      optimizer_where_cost          = 0.032
      
      # --- INNODB STORAGE ENGINE ---
      innodb_flush_method      = O_DIRECT
      innodb_undo_log_truncate = ON
      innodb_purge_batch_size  = 1000
      
      # --- REPLICATION SAFETY NET ---
      # REQUIRED for failing back to an existing 10.6 node.
      # Fixes "Character set #2304" errors on legacy replicas.
      character_set_collations = ''
      binlog_alter_two_phase   = 1
      
      # --- COMPLIANCE & CLEANUP ---
      transaction_isolation    = REPEATABLE-READ
      transaction_read_only    = OFF
      sudo mariadb-upgrade
      MariaDB Connector/C
      MariaDB Connector/C
      MariaDB Connector/C
      MariaDB Connector/C
      MariaDB Connector/C
      MariaDB Connector/C
      MariaDB MaxScale Installation & Configuration
      MariaDB 5.1.55
      Deprecated Package Platforms
      predictable release schedule
      MariaDB 5.5
      MariaDB 5.5
      MariaDB 10.1
      MariaDB 5.3.4
      MariaDB 5.5.33
      MariaDB 5.5.33a
      MariaDB 5.5.32
      MariaDB 5.5.33
      MariaDB 5.5
      MariaDB 5.5.32
      MariaDB 5.5.33a
      MariaDB 5.5
      MariaDB 5.5
      MariaDB 5.2
      MariaDB 5.5
      MariaDB 5.2
      MariaDB 5.3
      MariaDB 5.3
      MariaDB 5.3
      MariaDB 5.5
      MariaDB 5.5
      MariaDB 5.2
      Review What's New in MariaDB Enterprise Server 11.4
      MariaDB 10.2
      MariaDB 5.2.7
      MariaDB 11.6
      MariaDB 11.5
      MariaDB 11.6
      MariaDB 11.5.2
      MariaDB 10.4.3
      Enterprise Server - All Releases
      Community Server - All Releases
      Enterprise Server - All Releases
      Community Server - All Releases
      MariaDB 10.4
      What's New in MariaDB Enterprise Server 11.8
      What's New in MariaDB Enterprise Server 11.4
      What's New in MariaDB Enterprise Server 10.6
      What's New in MariaDB Enterprise Server 10.3
      What's New in MariaDB Enterprise Server 10.5
      What's New in MariaDB Enterprise Server 10.4
      ES 10.4.24-15
      ES 10.4.25-16
      ES 10.4.24-15
      ES 10.4.25-16
      ES 10.4.24-15
      ES 10.4.25-16
      ES 10.4.24-15
      ES 10.4.25-16
      What's New in MariaDB Enterprise Server 10.5
      Enterprise Server - All Releases
      MariaDB 10.5
      Community Server - All Releases
      MariaDB Community Server 10.5.9
      MariaDB Enterprise Server 11.8.5-2
      Enterprise Server - All Releases
      MariaDB Community Server 11.8.5
      Community Server - All Releases
      INNODB_ADAPTIVE_HASH_INDEX_CELLS