All pages
Powered by GitBook
1 of 66

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...

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.

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

Create A MariaDB ID

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

Register for a MariaDB ID account.

Create a 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.

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,

  • If you do not have a MariaDB ID or are unable to login,

\

MariaDB ID
open a support case
contact us
MariaDB Customer Portal

Compiling MariaDB From Source

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

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.

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 MDEV-9781, 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:

  • 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:

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 , above.

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

or

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

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

MariaDB MaxScale GPG Keys

In December 2025, 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:

Configuring Repositories

See the page for details on using the mariadb_repo_setup and mariadb_es_repo_setup scripts to configure repositories that use these keys.

See the on configuring MariaDB Foundation repositories that use these keys.

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

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 /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 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 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:

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.

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

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.

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 ldd --version to see which version is running on your distribution. Others are marked

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 .

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

Get, Build and Test Latest MariaDB the Lazy Way

A simplified guide to quickly fetching, building, and testing the latest MariaDB source from GitHub.

The intention of this documentation is show all the steps of getting, building and testing the latest MariaDB server (10.5 at time of writing) from GitHub. Each stage links to the full documentation for that step if you need to find out more.

MariaDB Source Configuration Options

Overview of CMake configuration options available when building MariaDB from source, helping customize the build.

All CMake configuration options for MariaDB can be displayed with:

See Also

  • (mariadb.org)

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):

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\

  2. Build MariaDB using\

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

[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 ...

Troubleshooting Installation Issues

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

Installing System Tables

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

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.

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.

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:

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 rpm 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

  • 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

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

  • 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

MariaDB Community Server Debian/Ubuntu Key section
MariaDB Package Repository Setup and Usage
details
MariaDB MaxScale
sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY
sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY
1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB
sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY-2010

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

mariadb-admin
mariadb-install-db
systemd
, which are for systems with
systemd
and GLIBC 2.19 or higher.

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.

Installing binary tarballs

To install the binaries, 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.

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!

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.

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:

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.

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

download
OpenSuse

Debian

Fetch and checkout the MariaDB source to a subdirectory of the current directory

Build It

The following command builds a server the same way that is used for building releases. Use cmake . -DCMAKE_BUILD_TYPE=Debug to build for debugging.

Check the Server (If You Want To)

Install the Default Databases

(Older MariaDB version use mysql_install_db)

Install the Server (If needed)

You can also run and test mariadb directly from the build directory, in which case you can skip the rest of the steps below.

Start the Server

Start the server in it's own terminal window for testing. Note that the directory depends on your system!

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

Install all tools needed to build MariaDB

Generic Build Instructions

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

cmake . -LH
Get the Code, Build it, Test it
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

emerge --sync
emerge mariadb
Installing MariaDB Server on macOS Using Homebrew

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

NO

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

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 cmake for a lot of things. In this specific case, MariaDB's build process relies on CMake CPack Package Generators to build RPMs. The specific package generator that it uses to build RPMs is called CPackRPM.

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

See also Building MariaDB from a Source RPM.

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.

Unsupported Versions of Windows

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

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

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

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.

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.

  • First, .

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

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

after which one can run

and collect bugs :-).

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).

  2. Run with a lower :

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:

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

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:

and

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.

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:

using dnf

On RHEL8 you might need to start with:

Then, on all dnf distributions:

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 where possible.

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

Replacing MySQL

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

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:

  • On systems where systemd is not enabled/supported

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

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

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
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
[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 |
+----------------+
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
sudo zypper install git gcc gcc-c++ make bison ncurses ncurses-devel zlib-devel libevent-devel cmake openssl
apt install -y build-essential bison libgnutls28-dev
apt build-dep mariadb-server
git clone https://github.com/MariaDB/server.git mariadb
cd mariadb
git checkout 11.4
cmake . -DBUILD_CONFIG=mysql_release && cmake --build . --parallel=8
mysql-test/mtr --parallel=8 --force
./scripts/mariadb-install-db --srcdir=.
cmake --install .
/usr/sbin/mariadbd

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.

any number of different MariaDB installations

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.

Recompile PHP with the MariaDB client libraries.

  • 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'
    $err_level = error_reporting(0);
    $conn = mysql_connect('params');
    error_reporting($err_level);
    mysqlnd driver
    error reporting level
    Alternatively, download the source and build it.

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

    > 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)
    > ./bin/mysqld --skip-grant &
    ./bin/mysqld: error while loading shared libraries: libwrap.so.0:
    cannot open shared object file: No such file or directory
    download page
    : 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

    # 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)
    MDEV-9382
    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

    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.

    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

    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
    repository-howto.en.html
    using yum

    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
    sudo dnf install rpm-build perl-generators
        dnf download --source MariaDB
        sudo dnf builddep MariaDB-*.src.rpm
        rpmbuild --rebuild MariaDB-*.src.rpm
    Why Source RPMs (SRPMs) Aren't Packaged For Some Platforms
    to
    /etc/my.cnf.rpmsave.

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

    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:

    See also

    • Installing with yum (recommended)

    • Installing MariaDB RPM Files

    • Checking MariaDB RPM Package Signatures

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

    install with yum
    RPM
    tar ball
    cmake/build_configurations/mysql_release.cmake
  • cmake/mariadb_connector_c.cmake

  • To build the packages you should execute:

    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

    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
    # sergey's MariaDB repository
    #
    deb file:///home/psergey/testrepo binary/
    deb-src file:///home/psergey/testrepo source/
    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 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
    mv /etc/my.cnf.rpmsave /etc/my.cnf
    skip-bdb
    $ umask 0022
    $ cmake --build . --target package

    Next, prepare your system to be able to compile the source.

    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
    cmake . -DWITHOUT_TOKUDB=1
    See Also

    replacing-builtin-innodb.html

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

    ./mysql-test-run --suite=innodb_plugin
    mysqld --ignore-builtin-innodb --plugin-load=innodb=ha_innodb.so \
    --plugin_dir=/usr/local/mysql/lib/mysql/plugin
    FATAL ERROR: OpenSCManager failed

    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.

    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.

    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.

    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.

    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.

    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

    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.

    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

    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

    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.

    4. Click the Download button.

    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, or zypper

    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.

    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.

    ldd $(which mysql) | grep mysql

    or

    ldd /path/to/the/binary | grep mysql

    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

    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:

    $ sudo apt-get install -y software-properties-common \
          devscripts

    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.

    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

    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

    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.

    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 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.

    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

    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.

    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

    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.

    The key we use has an id of 1BB943DB and the key fingerprint is:

    1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB

    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:

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

    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):

    See Also

    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

    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.

    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.

    # dnf builddep mariadb-server

    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.

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

    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

    Cross-compiling MariaDB

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

    Buildroot

    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.

    Details

    To cross-compile with cmake you will need a toolchain file. See, for example, . 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

    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.

    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

    Build Environment Setup for Linux

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

    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.

    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 .

    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 my.ini

    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, use the following syntax:

    For the options supported by , see .

    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

    Prior to , the following steps were required:

    make
    sudo make install
    me@mybox:~$ ldd $(which mysql)|grep mysql
            libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0xb74df000)
    $ sudo apt-get install software-properties-common \
          devscripts \
          equivs
    rpm -qa gpg-pubkey*
    rpm --checksig $(find . -name '*.rpm')
    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
    MariaDB Enterprise Server 11.4
  • MariaDB MaxScale 22.08

  • 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".

    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
    Fresh Ports
    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
    Repository Configuration
    Creating a Debian Repository
    Repository Configuration
    Creating a Debian Repository
    # dnf install git
    $ git clone --branch 10.3 https://github.com/MariaDB/server.git mariadb-server
    SET(STACK_DIRECTION -1)
      SET(HAVE_IB_GCC_ATOMIC_BUILTINS 1)
    here
    msg02911.html
    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.

    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
    mariadb-install-db
    mariadb-install-db: Options
    # 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
    $ 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
    $ 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
    $ mkdir mariadb-build
    $ cd mariadb-build
    $ cmake -DRPM=fedora ../mariadb-server
    $ make package
    $ 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
    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!

    Installing Build Dependencies for newer MariaDB versions

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

    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 Linux Build Environment.

    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:

    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

    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.

    More about CMake and CPackRPM

    See also building RPM packages from source

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

    gzip

  • tar

  • gcc/g++ 4.8.5 or later, recommend above 9 or clang/clang++

  • GNU make 3.75 or later or Ninja

  • bison (3.0)

  • libncurses or libncurses6

  • zlib-dev or zlib-devel

  • libevent-dev or libevent-devel

  • cmake above 2.8.7 though preferably above 3.3

  • gnutls or openssl

  • jemalloc (optional)

  • snappy (compression library, optional)

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

  • libcurl (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).

    See Also

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

    Building MariaDB on Ubuntu
    Building MariaDB on CentOS
    Building MariaDB on Gentoo
    git
    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

    Password of the root user

    -P, --port=#

    mysqld port

    -W, --socket=name

    named pipe name

    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).

    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

    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

    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 environment
    Build binaries
    cd mariadb-source
    ./scripts/make_binary_distribution
    Installing MariaDB RPM Files
    Troubleshooting MariaDB Installs on RedHat/CentOS

    Build Environment Setup for Mac

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

    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.sh

    Install Dependencies

    First, install the upstream dependencies, then clone MariaDB.

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

    Setup 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.

    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.)

    If CMake runs succesfully, 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

    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:

    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).

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

    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.

    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

    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.

    Available RPM Packages

    The available RPM packages depend on the specific MariaDB release series.

    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.

    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.

    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.

    If you ran into issues when moving from to

    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
    # 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
    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>
    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
    xcode-select --install
    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
    yum install rsync nmap lsof perl-DBI nmap-ncat

    -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

    Getting the MariaDB Source Code
    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
    cmake --build . --parallel 8
    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
    Available RPM Packages in MariaDB

    The following RPMs are available in current versions of MariaDB:

    Package Name
    Description

    galera-4

    The WSREP provider for 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.

    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.

    Actions Performed by RPM Packages

    Users and Groups Created

    When the mariadb-server RPM package is installed, it will create a user and group named mysql, if it does not already exist.

    See Also

    • Installing MariaDB with yum

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

    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.

    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

    Compatibility

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

    • MariaDB ColumnStore 5 (included with MariaDB Community Server 10.5)

    • MariaDB ColumnStore 6 (included with MariaDB Community Server 10.6)

    • MariaDB Community Server 10.2

    • MariaDB Community Server 10.3

    • MariaDB Community Server 10.4

    • MariaDB Community Server 10.5 (excluding ColumnStore 5)

    • MariaDB Community Server 10.6 (excluding ColumnStore 6)

    • MariaDB Enterprise ColumnStore 5 (included with MariaDB Enterprise Server 10.5)

    • MariaDB Enterprise ColumnStore 6 (included with MariaDB Enterprise Server 10.6)

    • MariaDB Enterprise Server 10.2

    • MariaDB Enterprise Server 10.3

    • MariaDB Enterprise Server 10.4

    • MariaDB Enterprise Server 10.5

    • MariaDB Enterprise Server 10.6

    • MariaDB Enterprise Server 11.4

    • MariaDB MaxScale 2.4

    • MariaDB MaxScale 2.5

    • MariaDB MaxScale 6

    • MariaDB MaxScale 22.08

    Operating System Package Managers

    The package manager depends on the operating system:

    Operating System
    Package Manager

    CentOS 7

    YUM

    Debian 9

    APT

    Debian 10

    APT

    Debian 11

    APT

    Red Hat Enterprise Linux 7 (RHEL 7)

    YUM

    Red Hat Enterprise Linux 8 (RHEL 8)

    YUM

    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: 23016

      • APT: debmirror, available at:

    3. Secure the repository mirror to prevent outside access.

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

    , look through each of the three scenarios to see which one applies to you and then follow the steps to apply that fix.

    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'):

    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):

    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):

    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

    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.

    Read the page for more information on how to debug high memory consumption.

    Using tcmalloc or jemalloc

    TCMalloc is a malloc replacement library optimized for multi-threaded usage. It also features a built-in heap debugger and profiler.

    Another malloc replacement that may speed up MariaDB is jemalloc.

    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.

    Checking the malloc Implementation in Use

    If you are unsure which malloc implementation is in use, or if you used one of the procedures explained in this page and you want to verify if it succeeded, you can run this query:

    A value of "system" indicates the system default, which is normally malloc. If another library is used, this query will return the name and version of the library.

    Building MariaDB with an alternative to malloc

    To build with TCMalloc, you need to use the following command

    To use jemalloc, the option should be -ljemalloc.

    Starting mariadbd-safe with an alternative to malloc

    If you want to do this only one time, as a test, you can also start a standard MariaDB server with TCmalloc with:

    If you want to configure to use tcmalloc or jemalloc, edit your , in the [mariadbd-safe] group:

    Starting mariadbd with an alternative to malloc

    First, locate the library file that needs to be used:

    Now pass it to mariadbd using the LD_PRELOAD variable:

    For example, on OpenSuse 15.4 one would do:

    Configuring systemd

    If you use systemd to run MariaDB, first locate the library as explained above. The locate the service configuration file:

    Now edit the mariadb.service file by adding a line to the [Service] group:

    For example:

    Now you should reload the configuration, so that the news setting will take effect, and restart MariaDB:

    Dockerfile

    If you run and use an image from a Dockerfile that is publicly available, most probably you have an entrypoint that is a Bash script, which starts mariadbd directly. You can edit this Bash script as explained above. Or you can set the LD_PRELOAD variable from the Dockerfile:

    To find the library file you can run one of these commands while the container is running:

    Example:

    Vagrantfile

    Usually is used to start a complete system in a virtual machine. If this is your 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 into the guest system to configure systemd.

    If you use Vagrant with the Docker provider, you can follow the instructions above to modify the Dockerfile.

    Finding memory leaks with jemalloc

    jemalloc can provide a report of memory leaks at program exit:

    This will produce something like:

    You can learn more about the memory leaks with jeprof, that is included with jemalloc:

    You can also generate a PDF call graph of the leak:

    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.

    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.

    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.

    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 packages provided by MariaDB Foundation's and MariaDB Corporation's repositories are not identical to the official 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 . 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.

    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 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 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:

    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-common

    Character set files and /etc/my.cnf

    mariadb-common-debuginfo

    Debuginfo for character set files and /etc/my.cnf

    mariadb-compat

    Old shared client libraries, may be needed by old mariadb or mysql clients

    mariadb-connect-engine

    The CONNECT storage engine.

    mariadb-connect-engine-debuginfo

    Debuginfo for the CONNECT storage engine.

    mariadb-cracklib-password-check

    The cracklib_password_check password validation plugin.

    mariadb-cracklib-password-check

    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-rocksdb-engine

    The MyRocks storage engine.

    mariadb-rocksdb-engine-debuginfo

    Debuginfo for the MyRocks 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 mysql-client-test executable, and mysql-test framework with the tests.

    mariadb-tokudb-engine

    The TokuDB storage engine.

    mariadb-tokudb-engine-debuginfo

    Debuginfo for the TokuDB storage engine.

    Rocky Linux 8

    YUM

    SUSE Linux Enterprise Server 12 (SLES 12)

    ZYpp

    SUSE Linux Enterprise Server 15 (SLES 15)

    ZYpp

    Ubuntu 18.04 LTS (Bionic Beaver)

    APT

    Ubuntu 20.04 LTS (Focal Fossa)

    APT

    Setup#Debian_Repository_Mirroring_Tools

    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 mariadb-admin 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 mariadb client program. Issuing the command mariadb should give you the MariaDB cursor.

    See Also

    • Installing MariaDB with yum

    • Troubleshooting MariaDB Installs on RedHat/CentOS

    • Checking MariaDB RPM Package Signatures

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

    Install MariaDB with yum
    About the MariaDB RPM Files
    Checking MariaDB RPM Package Signatures
    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
    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%]

    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.iso

    • binary-hybrid-squeeze-amd64-mariadb52-text.iso

    • binary-hybrid-squeeze-i386-amd64-mariadb52-text.iso

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

    • binary-hybrid-squeeze-i386-mariadb53-text.iso

    • binary-hybrid-squeeze-amd64-mariadb53-text.iso

    • binary-hybrid-squeeze-i386-amd64-mariadb53-text.iso

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

    • binary-hybrid-squeeze-i386-mariadb53-lxde.iso

    • binary-hybrid-squeeze-amd64-mariadb53-lxde.iso

    • binary-hybrid-squeeze-i386-amd64-mariadb53-lxde.iso

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

    • binary-hybrid-squeeze-i386-mariadb53-gnome.iso

    • binary-hybrid-squeeze-amd64-mariadb53-gnome.iso

    • binary-hybrid-squeeze-i386-amd64-mariadb53-gnome.iso

    1. Live images

    • binary-hybrid-squeeze-amd64-mariadb55-text-bpo.iso

    • binary-hybrid-squeeze-amd64-mariadb55-lxde-bpo.iso

    • binary-hybrid-squeeze-amd64-mariadb55-gnome-bpo.iso

    • binary-hybrid-squeeze-amd64-mariadb55-awesome-bpo.iso

    1. Live images demonstration video

    • README-mariadb-video.txt

    • video-mariadb5.5-live-images-on-USB.ogv

    • video-mariadb5.5-live-images-on-USB.mp4

    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.

    Downloads

    To get the iso images you can use rsync:

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

    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)

    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

    Option File Locations
    • The option file located at /etc/mysql/my.cnf is handled by the update-alternatives 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 option files are therefore actually located in /etc/mysql/mariadb.d/.

    System Variables

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

    Variable
    MariaDB in Debian
    Standard MariaDB
    Notes

    utf8mb4

    latin1 (for <= )

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

    utf8mb4_general_ci (for < )

    latin1_swedish_ci

    has dominant effect hence removal from Debian default settings

    Options

    Option
    MariaDB in Debian
    Standard MariaDB
    Notes

    auth_socket.so

    -

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

    TLS

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

    • MariaDB Server binaries:

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

      • In contrast, MariaDB Server is dynamically linked with the system's libraries in packages provided by MariaDB Foundation and MariaDB Corporation.

    • MariaDB binaries:

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

      • MariaDB's clients and utilities and are dynamically linked with the system's libraries in packages provided by Debian's and Ubuntu's default repositories. is still statically linked with the bundled libraries.

    • See for more information about which libraries are used on which platforms.

    Authentication

    • The unix_socket authentication plugin is installed by default in new installations that use the .deb 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 mariadb-install-db will also be created to authenticate via the unix_socket authentication plugin in these builds.

    See Also

    • Moving from MySQL to MariaDB in Debian 9

    More Information

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

    • search?keywords=mariadb-server&searchon=names&suite=all§ion=all

    • search?keywords=mariadb-server&searchon=names&suite=all§ion=all

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

    .deb
    .deb
    source code
    mariadb-server
    mariadbd-safe
    configuration file
    MariaDB on Docker
    Vagrant
    Jemalloc leak checking

    Installing MariaDB MSI Packages on Windows

    Step-by-step instructions for installing MariaDB on Windows using the MSI installer, covering service configuration and security settings.

    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.

    Installation UI

    This is the typical mode of installation. To start the installer, click on the mariadb-...msi.

    Welcome

    License Agreement

    You must accept the terms in the license agreement. Proceed to the next dialog.

    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.

    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.

    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.

    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.

    Ready to Install

    At this point, all installation settings are collected. Click on the "Install" button.

    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.

    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.

    • Error log - Opens the database error log in Notepad.

    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.

    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:

    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.

    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

    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

    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).

    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:

    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:

    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 with yum/dnf

    Comprehensive guide to installing MariaDB using `yum` or `dnf` on RHEL, CentOS, and Fedora, covering repository configuration, GPG key import, and package installation.

    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 RPM packages from MariaDB's repository using yum or dnf. 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.

    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

    Using the MariaDB Package Repository Setup Script

    If you want to install MariaDB with yum, then you can configure yum 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 yum 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:

    The script also configures a repository for and a repository for MariaDB Tools, which currently only contains and its dependencies.

    See for more information.

    Using the MariaDB Repository Configuration Tool

    If you want to install MariaDB with yum, then you can configure yum to install from MariaDB Foundation's MariaDB Repository by using the .

    The MariaDB Foundation provides a MariaDB repository for several Linux distributions that use yum 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 configuration file to add the repository for your distribution.

    Once you have the appropriate repository configuration section for your distribution, add it to a file named MariaDB.repo under /etc/yum.repos.d/.

    For example, if you wanted to use the repository to install on RHEL (any version), then you could use the following yum repository configuration in /etc/yum.repos.d/MariaDB.repo:

    The example file above includes a gpgkey line to automatically fetch the GPG public key that is used to verify the digital signatures of the packages in our repositories. This allows the yum, dnf, and rpm utilities to verify the integrity of the packages that they install.

    Pinning the MariaDB Repository to a Specific Minor Release

    If you wish to pin the yum repository to a specific minor release, or if you would like to do a yum downgrade to a specific minor release, then you can create a yum repository configuration with a baseurl option set to that specific minor release.

    For example, if you wanted to pin your repository to on CentOS 7, then you could use the following yum repository configuration in /etc/yum.repos.d/MariaDB.repo:

    To change an existing repository configuration, you may execute the following command:

    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.

    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 , then you can update the major release that the repository uses by running the script again.

    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 , 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 to , 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 .

    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 .

    The MariaDB GPG Key

    See the page for information on the various keys used by MariaDB.

    Installing MariaDB Packages with YUM/DNF

    After the dnf/yum repository is configured, you can install MariaDB by executing the or command. The specific command that you would use would depend on which specific packages that you want to install.

    Installing the Most Common Packages

    To Install the most common packages, execute the following command:

    Installing MariaDB Server

    To Install MariaDB Server, execute the following command:

    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 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 for more information on MariaDB Galera Cluster.

    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:

    Installing mariadb-backup with YUM

    To install , execute the following command:

    Installing Plugins with YUM

    Some may also need to be installed.

    For example, to install the password validation plugin, execute the following command:

    Installing Debug Info Packages with YUM

    The MariaDB yum repository also contains packages. These package may be needed when .

    Installing Debug Info for the Most Common Packages with YUM

    To install for the most common packages, execute the following command:

    All packages have their debuginfo by appending -debuginfo to the package name.

    Installing Debug Info for MariaDB Server with YUM

    To install for MariaDB Server, execute the following command:

    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.

    After Installation

    After the installation is complete, you can with:

    If you are using , then keep in mind that the first node will have to be .

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

    Building MariaDB on Windows

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

    Build Requirements

    To build MariaDB you need the following:

    • Visual C++: 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 recent enough Windows SDK - latest Windows 11 SDK is recommended.

    • : We recommend the latest release. Older releases might not support your version of Visual Studio. Visual Studio 2019 requires cmake 3.14 at least.

    • : 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 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 . Instead, install into C:\GnuWin32.

      • Add C:\GnuWin32\bin to your system PATH

    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.

    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.

    Build Variations

    Debug Builds

    Building Debug version is done with:

    32bit and 64 bit Builds

    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.

    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.

    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.

    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.

    Building the MSI Package

    Including HeidiSQL in the MSI Installer

    Starting with , it is possible to build an installer which includes 3rd party products, as described in . Currently only 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.

    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.

    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.

    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

    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

    Alternatively:

    (devenv.exe needs to be in PATH)

    or, if you prefer WinDBG

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

    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 Installing MariaDB with YUM, then the directions below may help. The process is very straightforward.

    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:

      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

    Or:

    RPM Installation

    To install the RPMs, there is a quick and easy guide to . Follow the instructions there.

    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

    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 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.

    Adding the MariaDB ZYpp repository

    We currently have ZYpp repositories for the following Linux distributions:

    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, .

    Installing & Starting MariaDB

    Install MariaDB Server:

    Start MariaDB Server:

    Alternatively, and strongly recommended, automatically start MariaDB Server:

    rsync -avP rsync://rsync.it-infrastrukturen.org/ftp/public-mariadb/<image_or_file_name_as_above> .
    SHOW GLOBAL VARIABLES LIKE 'version_malloc_library';
    cmake -DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'  -DWITH_SAFEMALLOC=OFF
    /usr/sbin/mariadbd-safe --malloc-lib=tcmalloc
    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
    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
    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
    Installing MariaDB with the RPM Tool

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

    OpenSSL
    .deb
    client and utility
    clients and utilities
    GnuTLS
    .deb
    libmysqlclient
    wolfSSL
    GnuTLS
    .deb
    libmysqlclient
    yaSSL
    TLS and Cryptography Libraries Used by MariaDB
    character_set_server
    collation_server
    character_set_collations
    plugin-load-add
    unix_socket

    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.

  • 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.

  • 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

    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

    ALLOWREMOTEROOTACCESS

    Allow remote access for root user

    BUFFERPOOLSIZE

    RAM/8

    DBInstance

    yes

    Install database instance

    Client

    yes

    Command line client programs

    MYSQLSERVER

    yes

    Install server

    SharedLibraries

    yes

    mysql_install_db.exe
    --install
    --install-manual
    Welcome dialog
    License Agreement
    Custom Setup
    Database security properties
    Other database properties
    Ready Dialog
    Finish
    Start Menu
    UninstallChangeDialog_New
    KeepOrRemoveDataDialog_New

    Bufferpoolsize for innodb

    Install client shared library

    SUSE
    MariaDB Package Repository setup script
    clients and utilities
    client libraries
    plugins
    mariadb-backup
    Percona XtraBackup
    MariaDB Package Repository Setup and Usage
    MariaDB Repository Configuration Tool
    clients and utilities
    client libraries
    plugins
    mariadb-backup
    MariaDB 10.6
    MariaDB Package Repository setup script
    MariaDB Repository Configuration Tool
    MariaDB 10.6
    MariaDB 10.11
    MariaDB 10.11
    MariaDB Package Repository setup script
    GPG
    dnf
    yum
    mariadb-backup
    plugins
    cracklib_password_check
    debuginfo
    debuginfo
    debuginfo
    start MariaDB
    Galera
    MariaDB Galera Cluster
    MariaDB Galera Cluster
    after installation.
  • Strawberry perl: Used to run the test suite.ActiveState Perl 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 Windows Installer XML . If you build MSI with 10.4, also modify your Visual Studio installation, add "Redistributable MSMs" (see MDEV-22555)

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

  • CMake
    Git
    Bison from GnuWin32
    this bison bug
    MWL#200
    HeidiSQL
    debug-using-the-just-in-time-debugger?view=vs-2019#jit_errors

    SUSE Linux Enterprise Server (SLES) 12

  • SUSE Linux Enterprise Server (SLES) 15

  • OpenSUSE 15

  • OpenSUSE 42

  • 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-backup. 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.

    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 Tool.

    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-backup. 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.6 on SLES 15, then you could use the following commands to add the MariaDB zypper repository:

    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.

    So if you can't find the repository of a specific minor release at yum.mariadb.org, then it would be a good idea to check the archive.

    For example, if you wanted to pin your repository to MariaDB 10.6.21 on SLES 15, then you could use the following commands to add the MariaDB zypper repository:

    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.

    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.

    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 Tool, 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.6 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.6.

    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.

    The id of our GPG public key is 0xcbcb082a1bb943db. The short form of the id is 0x1BB943DB. The full key fingerprint is:

    The rpm 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.

    Installing MariaDB Packages with ZYpp

    After the zypper repository is configured, you can install MariaDB by executing the zypper command. The specific command that you would use would depend on which specific packages that you want to install.

    Installing the Most Common Packages with ZYpp

    To Install the most common packages, execute the following command:

    Installing MariaDB Server with ZYpp

    To Install MariaDB Server, execute the following command:

    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.

    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:

    Installing mariadb-backup with ZYpp

    To install mariadb-backup, execute the following command:

    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:

    Installing Debug Info Packages with ZYpp

    The MariaDB zypper repository also contains debuginfo packages. These package may be needed when .

    Installing Debug Info for the Most Common Packages with ZYpp

    To install debuginfo for the most common packages, execute the following command:

    Installing Debug Info for MariaDB Server with ZYpp

    To install debuginfo for MariaDB Server, execute the following command:

    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 debuginfo for the clients and client libraries, execute the following command:

    Installing Debug Info for mariadb-backup with ZYpp

    To install debuginfo for mariadb-backup, execute the following command:

    Installing Debug Info for Plugins with ZYpp

    For some plugins, debuginfo may also need to be installed.

    For example, to install debuginfo for the cracklib_password_check password validation plugin, execute the following command:

    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.21 from this zypper repository, we would do the following:

    The rest of the install and setup process is as normal.

    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
    zypper

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

    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.

    Upgrading MariaDB

    Update Homebrew packages:

    Then upgrade MariaDB Server:

    Notes & Further Information

    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, https://github.com/Homebrew/brew/releases/download/5.0.4/Homebrew-5.0.4.pkg)

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

    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).

    MariaDB Information

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

    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:

    Terminal User & MariaDB User

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

    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):

    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 version, 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.

    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.zip

    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.

    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:

    Other resources

    • mariadb.rb on github

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

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

    Homebrew
    see this section

    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 . 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

    Generic Build Instructions

    General guide for compiling MariaDB from source on various platforms using CMake and standard build tools.

    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.

    First, .

    Next, .

    If you don't want to run MariaDB as yourself, then you should create a mysql user. The example below uses this user.

    Using cmake

    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
    curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
    [mariadb]
    name = MariaDB
    baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
    gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    [mariadb]
    name = MariaDB-10.8.8
    baseurl= http://archive.mariadb.org/mariadb-10.8.8/yum/centos/$releasever/$basearch
    gpgkey= https://archive.mariadb.org/PublicKey
    gpgcheck=1
    sudo yum clean all
    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 
    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
    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.21/sles/15/x86_64 mariadb
    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
    1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB
    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
    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
    Homebrew website
    Homebrew documentation

    MariaDB deployment

    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.

    kubernetes-select
    1. Choose a plan: standard or free.

    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.

      2. Select Account settings, and click Add credit card.

      3. Enter your payment information, click Next, and submit your information.

    3. Choose between classic or VPC after reviewing the documentation to determine the most suitable option.

    infra-select
    1. Now choose your location settings, for more information please visit Locations

    2. Choose Geography (continent)

    location-geo
    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.

    location-avail
    1. Choose a Worker Zone if using Single zones or Metro if Multizone

    location-worker
    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 Worker node per zone.

    worker-pool
    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 endpoints.

    endpoints
    1. Give Cluster name

    name-new
    1. Give desired Tags to your cluster, for more information visit tags

    tasg-new
    1. Click Create

    create-new
    1. Wait for you cluster to be provisioned

    cluster-prepare
    1. Your cluster is ready for usage

    cluster-done

    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

    block-search
    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)

    block-cluster
    1. Give a Name to this workspace

    2. Click Install and wait for the deployment

    block-storage-create

    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

    search
    1. Please select IBM Kubernetes Service

    target-select
    1. On the application page, select the cluster you wish to use

    cluster-select
    1. Click on Enter or select namespace and choose the default Namespace or use a custom one

    details-namespace
    1. Give a unique name to workspace, which you can easily recognize

    details-name
    1. Select which Resource Group you want to use, it's for access controll and billing purposes. For more information please visit resource groups

    details-resource
    1. Give Tags to your MariaDB, for more information visit tags

    details-tags
    1. Click on Parameters with default values, You can set deployment values or use the default ones

    parameters
    1. Please set the MariaDB root password in the parameters

    root-password
    1. After finishing everything, tick the box next to the agreements and click Install

    aggreement-create
    1. The MariaDB workspace will start installing, wait a couple of minutes

    in-progress
    1. Your MariaDB workspace has been successfully deployed

    done

    Verify MariaDB installation

    1. Go to Resources in your browser

    2. Expand Clusters. Click on your cluster

    resource-select
    1. On the Overview page, click Actions, then select Web Terminal from the dropdown menu.

    cluster-main
    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:

    get-ns
    get-pods
    get-service
    1. Enter your pod with bash , please replace PODNAME with your mariadb pod's name

    bash
    1. After you are in your pod please enter Mariadb and enter your root password after the prompt

    welcome

    You have successfully deployed MariaDB IBM Cloud!

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

    register here
    and above is compiled using cmake.

    It is recommended to create a build directory beside your source directory

    After updating the MariaDB repository, make sure to thoroughly clean up old artifacts such as CMake configured files if you have previously built MariaDB.

    In the base repository run:

    You can configure your build simply by running cmake without any special options, like

    where server is where you installed MariaDB. If you are building in the source directory, just omit ../server.

    If you want it to be configured exactly as a normal MariaDB server release is built, use

    This will configure the build to generate binary tarballs similar to release tarballs from downloads.mariadb.org. Unfortunately this doesn't work on old platforms, like OpenSuse Leap 15.0, because MariaDB binary tarballs are built to minimize external dependencies, and that needs static libraries that might not be provided by the platform by default, and would need to be installed manually.

    To do a build suitable for debugging use:

    By default, MariaDB is compiled with the -Werror flag, which causes compiling to abort if there is a compiler warning. You can disable that by configuring with-DMYSQL_MAINTAINER_MODE=OFF.

    All cmake configuration options for MariaDB can be displayed with:

    To build and install MariaDB after running cmake use

    If the commands above fail, you can enable more compilation information by doing:

    If you want to generate a binary tarball, run

    Using BUILD Scripts

    There are also BUILD scripts for the most common systems for those that doesn't want to dig into cmake options. These are optimized for in source builds.

    The scripts are of type compile-#cpu#-how_to_build. Some common scripts:

    Script
    Description

    compile-pentium64

    Compile an optimized binary optimized for 64 bit pentium (works also for amd64)

    compile-pentium-debug

    Compile a debug binary optimized for 64 bit pentium

    compile-pentium-valgrind-max

    Compile a debug binary that can be used with to find wrong memory accesses and memory leaks. Should be used if one want's to run the mysql-test-run test suite with the --valgrind option

    Some common suffixes used for the scripts:

    Suffix
    Description

    32

    Compile for 32 bit cpu's

    64

    Compile for 64 bit cpu's

    -max

    Enable (almost) all features and plugins that MariaDB supports

    -gprof

    binary is compiled with profiling (gcc --pg)

    -gcov

    binary is compiled with code coverage (gcc -fprofile-arcs -ftest-coverage)

    -valgrind

    The binary is compiled for debugging and optimized to be used with .

    All BUILD scripts support the following options:

    Suffix
    Description

    -h, --help

    Show this help message.

    -n, --just-print

    Don't actually run any commands; just print them.

    -c, --just-configure

    Stop after running configure. Combined with --just-print shows configure options.

    --extra-configs=xxx

    Add this to configure options

    --extra-flags=xxx

    Add this C and CXX flags

    --extra-cflags=xxx

    Add this to C flags

    A typical compilation used by a developer would be:

    This configures the source for debugging and runs make. The server binary will be sql/mariadbd or sql/mysqld.

    Starting MariaDB for the First Time

    After installing MariaDB (using sudo make install), but prior to starting MariaDB for the first time, one should:

    1. Ensure the directory where you want MariaDB to store it's data is owned by the mariadb user (if the user doesn't exist, you'll need to create it)

    2. Create a MariaDB configuration config file (/.my.cnf or /etc/my.cnf) with the configuration options you desire. A suggested minimum configuration file, to specify where you want your data to be stored, would be:\

    3. run the mariadb-install-db script to generate the needed system tables

    If needed, you can also use the --datadir=/usr/local/mariadb/data/ options with mariadbd-install-db and mariadbd-safe

    Testing MariaDB

    If you want to test your compiled MariaDB, you can do either of:

    Run unit tests:

    Or run mtr tests:

    Each of the above are run from the build directory. There is no need to 'make install/cmake --install .' MariaDB prior to running them.

    For extensive testing or debugging of MariaDB using real application data and workloads, consider starting and running MariaDB directly from the source directory instead of installing it with sudo make install. For details, refer to Running MariaDB from the Source Directory.

    Increasing Version Number or Tagging a Version

    If you have made code changes and want to increase the version number or tag our version with a specific tag you can do this by editing the VERSION file. Tags are shown when running the 'mariadbd --version' command.

    Non-ascii Symbols

    MariaDB builds with readline; using an alternative such as Editline may result in problems with non-ascii symbols.

    Post-install Tasks

    • Installing system tables (mariadb-install-db)

    • Starting and Stopping MariaDB Automatically

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

    MariaDB
    source
    get a copy of the MariaDB source
    prepare your system to be able to compile the source
    $ 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
    [mariadbd]
    datadir=/usr/local/mariadb/data/
    mkdir build-mariadb
    cd build-mariadb
    git clean -xffd && git submodule foreach --recursive git clean -xffd
    cmake ../server
    cmake ../server -DBUILD_CONFIG=mysql_release
    cmake ../server -DCMAKE_BUILD_TYPE=Debug
    cmake ../server -DCMAKE_BUILD_TYPE=Debug -DMYSQL_MAINTAINER_MODE=OFF.
    cmake ../server -LH
    cmake --build .
    sudo cmake --install .
    cmake --build . --verbose
    cpack
    shell> ./BUILD/compile-pentium64-debug
    # The following assumes that the 'mariadb' user exists and that we installed MariaDB
    # in /usr/local/mariadb
    chown -R mariadb /usr/local/mariadb/
    cd /usr/local/mariadb/
    ./scripts/mariadb-install-db --user=mariadb
    /usr/local/mariadb/bin/mariadb-safe --user=mariadb &
    cmake --build . --target test
    mysql-test/mysql-test-run --force

    -debug

    The binary is compiled with all symbols (gcc -g) and the log system is enabled.

    --extra-cxxflags=xxx

    Add this to CXX flags

    --verbose

    Print out full compile lines

    --with-debug=full

    Build with full debug(no optimizations, keep call stack).

    valgrind
    valgrind

    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.

    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:

    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.

    Buildbot's MSAN container

    The time consuming aspect of building with MSAN is having . 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

    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

    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.

    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 .

    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

    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 to see if any changes have been made.

    Bug Reporting

    Use the MSAN in the label when reporting bugs.

    Current outstanding MSAN bugs can be found on .

    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

    Build and test run are standard.

    Note: list of unfixed .

    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.

    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 . 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.

    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:

    Using Valgrind

    The can use 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 to run the test under Valgrind.

    See Also

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

    Installing Galera from source
    clang

    --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

    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 , 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

    podman run / docker run

    run a container

    other implementations use docker syntax (or at least close)

    --rm

    remove container on termination

    -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

    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

    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

    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

    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-22940)

    AddressSanitizer (aka ASAN)
    UndefinedBehaviourSanitizer (aka UBSAN)
    ThreadSanitizer (aka TSAN)
    MemorySanitizer (aka MSAN)
    instrumented system libraries
    rr
    instrumented system libraries
    buildbot builder
    JIRA by searching for this label
    UBSAN issues by MariaDB Corporation Testing
    mariadb-test-run.pl option --rr
    MariaDB test system
    Valgrind
    mysql-test-run --valgrind

    bootstrapped
    bootstrapped
    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
    MDEV-36482

    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).

    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.1 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.1 in Debian 9 "Stretch".

    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.

    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:

    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!

    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.

    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

    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

    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.

    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.

    Upgrading to from MySQL 5.5

    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.

    3. Take a Full Backup

    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

    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!

    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.

    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.

    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.

    See also

    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.

    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 and innodb-open-files

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

    MariaDB Package Repository Setup and Usage

    Instructions on configuring and using the MariaDB package repository.

    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 for MariaDB Enterprise Server, which can be downloaded from:

    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

    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

  • 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
    is set to a value less than
    10
    , the default is
    300

    aria-sort-buffer-size

    128M

    256M

    back_log

    50

    150

    innodb-concurrency-tickets

    500

    5000

    innodb-log-file-size

    5M

    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

    Removed by XtraDB

    innodb-buffer-pool-pages

    Removed by XtraDB

    innodb-buffer-pool-pages-blob

    Removed by XtraDB

    MariaDB 10.1
    MariaDB 10.1
    MariaDB 10.1
    MariaDB 10.1
    1
    master-slave setup
    Upgrading MariaDB
    MariaDB 5.5
    Upgrading from MariaDB 5.5 to MariaDB 10.0
    Upgrading from MariaDB 10.0 to MariaDB 10.1
    contact the MariaDB corporation
    MariaDB 10.1
    MariaDB 10.1
    MariaDB 5.5
    MariaDB 10.0
    MariaDB 10.1
    above
    MariaDB 10.1
    above
    MariaDB 10.1
    MariaDB 5.5
    MariaDB 10.1
    Galera Cluster
    MariaDB 10.1
    your configuration file
    Aria
    MariaDB 10.0
    Differences in MariaDB in Debian (and Ubuntu)
    Configuring MariaDB for optimal performance
    New features in MariaDB you should considering using
    What is MariaDB 10.1
    ↑

    48M

    innodb-buffer-pool-pages-index

  • https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup

  • mariadb_repo_setup for MariaDB Community Server, which can be downloaded from:

    • https://r.mariadb.com/downloads/mariadb_repo_setup

  • Using MariaDB Foundation's Repository Configuration Tool

    Visit https://mariadb.org/download/?t=repo-config 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.

    Using MariaDB Corporation's Repository Setup Scripts

    Alternatively, you can run a convenient shell script that will automatically configure a repository for you.

    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 -

    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.

    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:

    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/ 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:

    Repositories

    The script will set up different repositories in a single repository configuration file.

    The default repositories setup 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

    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.

    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 Tool.

    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.

    MariaDB MaxScale Repository

    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.

    Supported Distributions

    The script supports Linux distributions that are officially supported by MariaDB Corporation's MariaDB TX subscription. However, a MariaDB TX subscription with MariaDB Corporation is not required to use the MariaDB Package Repository.

    The distributions currently supported by the script include:

    • Red Hat Enterprise Linux (RHEL and equivalents) 8, 9, and 10

    • Debian 11 (Bullseye), 12 (Bookworm), and 13 (Trixie, community server only)

    • Ubuntu 22.04 LTS (Jammy), and 24.04 LTS (Noble)

    • SUSE Linux Enterprise Server (SLES) 15

    To install MariaDB on distributions not supported by the MariaDB Package Repository setup script, please consider using MariaDB Foundation's MariaDB Repository Configuration Tool. Some Linux distributions also include MariaDB .

    Options

    To provide options to the script, you must tell your 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=

    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

    --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.

    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:

    The following MariaDB versions are currently supported:

    • mariadb-10.6

    • mariadb-10.11

    • mariadb-11.4

    • mariadb-11.8

    • mariadb-11.rolling

    • mariadb-11.rc

    • mariadb-12.1

    • mariadb-12.2

    • mariadb-12.rolling

    • mariadb-12.rc

    If you want to pin the repository of a specific minor release, such as MariaDB 11.8.5, then you can also specify the minor release. For example,mariadb-10.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.

    --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 themariadb_repo_setup script uses latest as the version.

    --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:

    --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:

    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:

    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

    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

    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 at 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 Guide. 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 Installing MariaDB Packages with ZYpp. For example:

    To install MariaDB MaxScale on SUSE Linux Enterprise Server (SLES), see the instructions at . For example:

    Versions

    mariadb_es_repo_setup Versions

    Version
    sha256sum

    2025-12-10

    62a28aa1f060b4055751d93a88bc11c5556c2b23103c6a6287a8fcb0a4b8a13f

    2025-10-22

    1f584ffd368d18c64b8820bf6cd9b1114dda11a0ecf9524be3c967a3a5be941b

    2025-09-08

    c33b022c2cc325fa50be62eae070ea0bdcaf85367f840accac7acaeea1e8a972

    2025-06-04

    4d483b4df193831a0101d3dfa7fb3e17411dda7fc06c31be4f9e089c325403c0

    2025-01-16

    mariadb_repo_setup Versions

    Version
    sha256sum

    Installing MariaDB .deb Files

    Step-by-step instructions for installing MariaDB on Debian, covering service configuration and security settings.

    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 apt, aptitude, Ubuntu Software Center, Synaptic Package Manager, or another package manager.

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

    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)

    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.

    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.

    Pinning the MariaDB Repository to 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 a apt repository with the URL hard-coded to that specific minor release.

    The MariaDB Foundation archives repositories of old minor releases at the following URL:

    Archives are only of the distros and architectures supported at the time of release. For example, exists for Ubuntu bionic, focal, jammy, kinetic, and #lunaris obtained looking in [dists](https://archive.mariadb.org/mariadb-10.6.21/repo/ubuntu/dists).

    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 .

    Ubuntu Xenial and older will need:

    And then you would have to update the package cache by executing the following command:

    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.

    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.

    Updating the Major Release with the MariaDB 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 .

    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.

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

    The utility can be used to import this key. For example:

    • Starting with Debian 9 (Stretch) and Ubuntu 16.04 LTS (Xenial), the id of our GPG public key is 0xF1656F24C74CD1D8. The full key fingerprint is:

    The utility can be used to import this key. For example:

    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

    If you are unsure which GPG public key you need, then it is perfectly safe to import both keys.

    The command used to import the GPG public key is the same on both Debian and Ubuntu. For example:

    Once the GPG public key is imported, you are ready to install packages from the repository.

    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.

    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:

    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:

    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 Galera for more information on MariaDB Galera Cluster.

    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:

    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:

    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:

    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.

    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:

    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 .

    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.

    Available DEB Packages

    The available DEB packages depend on the specific MariaDB release series.

    Available DEB Packages

    For MariaDB, the following DEBs are available:

    Package Name
    Description

    Actions Performed by DEB Packages

    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.

    See Also

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

    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
    sudo dnf install curl
    sudo apt update
    sudo apt install curl apt-transport-https
    sudo zypper install curl
    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
    sudo zypper install MariaDB-server MariaDB-client MariaDB-backup
    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-server-version="mariadb-11.8"
    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
    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-size
    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

    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

    --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 being past their EOL date

    --skip-os-eol-check

    Skip tests for operating system versions being past 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

    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

    923eea378be2c129adb4d191f01162c1fe5473f1114d7586f096b5f6b9874efe

    2025-02-13

    c4a0f3dade02c51a6a28ca3609a13d7a0f8910cccbb90935a2f218454d3a914a

    2024-11-14

    ceaa5bd124c4d10a892c384e201bb6e0910d370ebce235306d2e4b860ed36560

    MariaDB MaxScale Installation Guide
    Ubuntu 22.04 (Jammy)
  • Ubuntu 24.04 (Noble)

  • 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

    Virtual package to satisfy external depends

    libmysqlclient18

    Virtual package to satisfy external depends

    mariadb-backup

    mariadb-backup

    MariaDB Package Repository setup script
    clients and utilities
    client libraries
    plugins
    mariadb-backup
    MariaDB MaxScale
    Percona XtraBackup
    MariaDB Package Repository Setup and Usage
    MariaDB Repository Configuration Tool
    clients and utilities
    client libraries
    plugins
    mariadb-backup
    add-apt-repository
    MariaDB 10.6
    source list
    MariaDB 10.6
    Ubuntu Software Center
    MariaDB Repository Configuration Tool
    here
    Synaptic Package Manager
    MariaDB Repository Configuration Tool
    here
    MariaDB 10.6.21
    signing key installed
    MariaDB Package Repository setup script
    MariaDB Repository Configuration Tool
    add-apt-repository
    add-apt-repository
    add-apt-repository
    MariaDB 10.6
    add-apt-repository
    MariaDB 10.6
    MariaDB 10.6
    upgrade to the new version of MariaDB
    source list
    MariaDB 10.6
    MariaDB 10.6
    upgrade to the new version of MariaDB
    apt-key
    apt-key
    dirmngr
    apt-get
    MariaDB Connector/C
    mariadb-backup
    plugins
    cracklib_password_check
    apt-cache
    downloads.mariadb.com
    MariaDB 10.6.21
    Differences in MariaDB in Debian
    Installing MariaDB .deb Files with Ansible
    Galera
    MariaDB Galera Cluster
    bootstrapped
    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
    Package: *
    Pin: origin downloads.mariadb.com
    Pin-Priority: 1000
    sudo zypper install maxscale
    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 '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 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
    1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
    177F 4010 FE56 CA33 3630  0305 F165 6F24 C74C D1D8
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
    Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.ASyOPV87XC --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
    gpg: requesting key 1BB943DB from hkp server keyserver.ubuntu.com
    gpg: key 1BB943DB: "MariaDB Package Signing Key <package-signing-key@mariadb.org>" imported
    gpg: no ultimately trusted keys found
    gpg: Total number processed: 1
    gpg:               imported: 1
    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-get 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
    mariadb CLI
    mariadb-dump
    CONNECT
    cracklib_password_check
    gssapi
    gssapi
    MyRocks
    SPIDER
    TokuDB
    myisamchk
    mariadb-hotcopy

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

    Buildbot Setup for Solaris Sparc
    Buildbot Setup for Solaris x86
    Set Up git
    Compiling MariaDB for debugging
    Profiling Memory Usage
    Profiling memory usage
    Debugging a running server on Linux
    debugging a problem
    debugging a problem
    DBUG
    in their own repositories
    MariaDB Connector/C
    MariaDB Connector/C
    MariaDB Connector/C
    MariaDB Connector/C
    MariaDB Connector/C
    MariaDB Connector/C
    MariaDB MaxScale Installation & Configuration
    MariaDB MaxScale
    Deprecated Package Platforms
    MariaDB 5.5
    MariaDB 10.1
    MariaDB 5.1.55
    MariaDB 5.3.4
    MariaDB 5.5
    MariaDB 5.5
    MariaDB 5.5
    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.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
    MariaDB 10.4
    MariaDB 10.8.8
    MariaDB 10.2
    MariaDB 5.2.7
    MariaDB 11.6
    MariaDB 11.5
    MariaDB 11.6
    MariaDB 11.5.2
    MariaDB 10.4.3
    MariaDB 5.5
    MariaDB 10.5.9
    MariaDB 10.5