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...
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
Provides details on using MariaDB binary packages (tarballs, RPMs, DEBs) for installation, including repository configuration scripts.
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
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.
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,
\
Instructions for compiling MariaDB Server from source code using CMake, including obtaining the source and installing dependencies.
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.
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:
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
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
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:
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
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:
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
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
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
A simplified guide to quickly fetching, building, and testing the latest MariaDB source from GitHub.
Notes and configuration tips for building MariaDB on Solaris and OpenSolaris platforms, including buildbot setup.
Instructions for building MariaDB on Gentoo Linux using the `emerge` command.
MariaDB is in Gentoo, so the steps to build it are:
Synchronize your tree with\
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 ...A guide to diagnosing and resolving common installation and connection problems, such as socket errors, permission denied messages, and configuration conflicts.
Explains the necessity of initializing system tables (using mariadb-install-db) after installation and troubleshooting startup issues related to missing tables.
Install and manage MariaDB Server using RPM packages. This section provides detailed instructions for deploying and upgrading MariaDB on RPM-based Linux distributions.
A collection of troubleshooting articles specific to Debian and Ubuntu deployments, covering upgrade failures, repository conflicts, and migration issues.
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 D14EOn 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
sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEYsudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DBsudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY-2010Run upgrade script... but remember you will need to provide the socket option --socket=/opt/mariadb-data/mariadb.sock .
systemdsystemdBinary 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.
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.
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!
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.
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:
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.
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
Fetch and checkout the MariaDB source to a subdirectory of the current directory
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.
(Older MariaDB version use mysql_install_db)
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 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
This page is licensed: CC BY-SA / Gnu FDL
cmake . -LHThe 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 --syncemerge mariadbExplains 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
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
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
Common installation problems on Windows, such as issues with User Account Control (UAC) or unsupported Windows versions, and their solutions.
Recent versions of MariaDB may not install on unsupported Windows versions. See to find the final supported versions.
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
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 distThis 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
Guide for compiling MariaDB on Alpine Linux or other musl-based systems, noting limitations like TokuDB support.
Instructions on how to create a custom Debian repository for MariaDB packages using `dpkg-scanpackages`.
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:
Switch to using the in PHP (Recommended solution).
Run with a lower :
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 ):
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.
Instructions for building MariaDB binaries from a source RPM package using tools like `rpmbuild`, `yum`, or `dnf`.
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.
If you removed an MySQL RPM to install MariaDB, note that the MySQL RPM on uninstall renames /etc/my.cnf
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
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
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 0xF1656F24C74CD1D8sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2019.gpg https://supplychain.mariadb.com/mariadb-keyring-2019.gpgsudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2019.gpg https://supplychain.mariadb.com/mariadb-keyring-2019.gpgsudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEYsudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEYsudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2025.gpg https://supplychain.mariadb.com/mariadb-keyring-2025.gpgsudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025sudo 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.cnftar xfz /path-to/mariadb-VERSION-OS.tar.gz./bin/mariadbd-safe --defaults-file=~/.my.cnf &cp support-files/mysql.server /etc/init.d/mysql.servercp support-files/systemd/mariadb.service /usr/lib/systemd/system/mariadb.servicemkdir /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-reloadsystemctl start mariadb.servicesystemctl stop mariadb.servicesystemctl enable mariadb.servicesudo zypper install git gcc gcc-c++ make bison ncurses ncurses-devel zlib-devel libevent-devel cmake opensslapt install -y build-essential bison libgnutls28-dev
apt build-dep mariadb-servergit clone https://github.com/MariaDB/server.git mariadb
cd mariadb
git checkout 11.4cmake . -DBUILD_CONFIG=mysql_release && cmake --build . --parallel=8mysql-test/mtr --parallel=8 --force./scripts/mariadb-install-db --srcdir=.cmake --install ./usr/sbin/mariadbdCompile 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.
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);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 directoryMYSQLD_STARTUP_TIMEOUT/etc/default/mariadbMYSQLD_STARTUP_TIMEOUTOn 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)C:\zip_unpack\directory> bin\mariadb-install-db.exeC:\zip_unpack\directory> bin\mariadbd.exe --consoleapt-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.
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.gzyumOr (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-rpmssudo dnf install rpm-build perl-generators
dnf download --source MariaDB
sudo dnf builddep MariaDB-*.src.rpm
rpmbuild --rebuild MariaDB-*.src.rpm/etc/my.cnf.rpmsave.After installing MariaDB you should do the following to restore your 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:
This page is licensed: CC BY-SA / Gnu FDL
cmake/build_configurations/mysql_release.cmakecmake/mariadb_connector_c.cmake
To build the packages you should execute:
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.gpgsudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025sudo rpmkeys --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025sudo curl -LsSo /etc/apt/trusted.gpg.d/mariadb-keyring-2025.gpg https://supplychain.mariadb.com/mariadb-keyring-2025.gpgsudo rpm --import https://supplychain.mariadb.com/MariaDB-MaxScale-GPG-KEYsudo 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-serverdpkg --get-selections | grep mariadb
dpkg --get-selections | grep mysqldpkg --purge <packages>sudo yum install rpm-build yum-utils
yumdownloader --source MariaDB
sudo yum-builddep MariaDB-*.src.rpm
rpmbuild --rebuild MariaDB-*.src.rpmsudo zypper in rpm-build
sudo zypper si MariaDB
sudo rpmbuild -bb /usr/src/packages/SPECS/MariaDB.specsudo zypper in rpm-build
sudo zypper si -d MariaDB
zypper --pkg-cache-dir=`pwd` si --download-only MariaDB
rpmbuild --rebuild mariadb/srpms/MariaDB-*.src.rpmmv /etc/my.cnf.rpmsave /etc/my.cnfskip-bdb$ umask 0022
$ cmake --build . --target package 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
cmake . -DWITHOUT_TOKUDB=1This page is licensed: CC BY-SA / Gnu FDL
./mysql-test-run --suite=innodb_pluginmysqld --ignore-builtin-innodb --plugin-load=innodb=ha_innodb.so \
--plugin_dir=/usr/local/mysql/lib/mysql/pluginFATAL ERROR: OpenSCManager failedInstructions 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.
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.
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.
PoudrierePoudriere 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.
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.
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
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.
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
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
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.
Visit the MariaDB Downloads page.
Complete customer login.
Select the desired version and operating system.
Click the Download button.
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.
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 mysqlor
ldd /path/to/the/binary | grep mysqlFor 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
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 \
devscriptsMariaDB 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.
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 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
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.
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.
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
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 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
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 43DBTo check the signature you first need to import the public part of the key like so:
gpg --keyserver hkp://pgp.mit.edu --recv-keys 1BB943DBNext 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.ascYou 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):
This page is licensed: CC BY-SA / Gnu FDL
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
makeThis page is licensed: CC BY-SA / Gnu FDL
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.
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-serverRunning 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:
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
Instructions for cross-compiling MariaDB for different architectures, including using Buildroot and CMake toolchain files.
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.
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
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.
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
Lists required tools and dependencies for building MariaDB on Linux, and how to install them using package managers.
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 .
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
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 .
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 installme@mybox:~$ ldd $(which mysql)|grep mysql
libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0xb74df000)$ sudo apt-get install software-properties-common \
devscripts \
equivsrpm -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 OKMariaDB MaxScale 22.08
For additional information, see "Download Binary Files".
README fileTest packages before placement in an internal package repository for distribution to your servers. Secure this repository from outside access.
rpm -qf /path/to/filedpkg -S /path/to/fileme@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# dnf install git$ git clone --branch 10.3 https://github.com/MariaDB/server.git mariadb-serverSET(STACK_DIRECTION -1)
SET(HAVE_IB_GCC_ATOMIC_BUILTINS 1)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.
The Windows version of mariadb-install-db: mysql_install_db.exe
This page is licensed: CC BY-SA / Gnu FDL
# portsnap fetch extract# portsnap fetch update$ ls /usr/ports/databases | grep mariadbmariadb-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.txtdatabases/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.confFreeBSD: {
enabled: no
}# vi /usr/local/etc/pkg/repos/mariadb.confcustom: {
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
$ makemariadb-install-db --user=mysqlRunning 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!
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.
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:
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
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.
See also building RPM packages from source
This page is licensed: CC BY-SA / Gnu FDL
libncurses or libncurses6
zlib-dev or zlib-devel
libevent-dev or libevent-devel
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).
This page is licensed: CC BY-SA / Gnu FDL
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.
-?, --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
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
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
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 packagecd mariadb-source
./scripts/make_binary_distributionInstructions for setting up the build environment on macOS, including installing dependencies via Homebrew and configuring CMake.
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
First, install the upstream dependencies, then clone MariaDB.
Second, clone MariaDB from the GitHub repository: see the page for options.
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.
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
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:
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.
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.
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
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.
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.
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-serveryum 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_64yum install ccacheyum 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 mariadbdeb 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 contribsudo apt updatesudo zypper mr -er repo-sourcemariadb-install-db.exe --datadir=C:\db --service=MyDB --password=secretsc start MyDBsc 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.gzxcode-select --installjemalloc-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.rpmyum 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
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=bundledcmake --build . --parallel 8rpm -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_64yum install boost-devel.x86_64warning: galera-25.3.19-1.rhel7.el7.centos.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEYrpm --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_installationThe following RPMs are available in current versions of MariaDB:
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.
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.
When the mariadb-server RPM package is installed, it will create a user and group named mysql, if it does not already exist.
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.
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
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
The package manager depends on the operating system:
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
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.
Set up a repository mirroring tool, for example:
YUM: reposync, available at: 23016
APT: debmirror, available at:
Secure the repository mirror to prevent outside access.
This page is: Copyright © 2025 MariaDB. All rights reserved.
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'):
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):
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):
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
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.
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.
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.
To build with TCMalloc, you need to use the following command
To use jemalloc, the option should be -ljemalloc.
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:
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:
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:
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:
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.
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:
This page is licensed: CC BY-SA / Gnu FDL
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.
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.
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} maindeb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/debian wheezy maindeb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/ubuntu raring mainapt-cache show mariadb-server | grep VersionYou 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 installedsudo 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~wheezyThe 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 installedsudo 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~wheezyThe 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 installedsudo apt-get install \
libmysqlclient=5.5.32+maria-1~wheezy \
libmariadbclient=5.5.32+maria-1~wheezymariadb-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
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.
This page is licensed: CC BY-SA / Gnu FDL
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.rpmrpm --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.
Live iso images (text) for i386, amd64 or multi architectures.
Live iso images (text) for i386, amd64 or multi architectures.
Live iso images with LXDE for i386, amd64 or multi architectures.
Live iso images with Gnome for i386, amd64 or multi architectures.
Live images
Live images demonstration video
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.
To get the iso images you can use rsync:
or just use the links above (or go to:).
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)
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.
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]"
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.
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!
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!
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.
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
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/.
Since there is no system variable difference from the Standard MariaDB.
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
auth_socket.so
-
Before , MariaDB did not enable the authentication plugin by default.This is default in Debian, allowing passwordless login.
MariaDB Server binaries:
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.
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.
For details, check out the Debian and Ubuntu official repositories:
This page is licensed: CC BY-SA / Gnu FDL
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.
This is the typical mode of installation. To start the installer, click on the mariadb-...msi.
You must accept the terms in the license agreement. Proceed to the next dialog.
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.
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.
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.
At this point, all installation settings are collected. Click on the "Install" button.
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.
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.
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.
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:
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:
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:
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).
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:
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:
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
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.
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
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:
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.
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:
MariaDB's yum repository can be updated to a new major release. How this is done depends on how you originally configured the repository.
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.
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 .
See the page for information on the various keys used by MariaDB.
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.
To Install the most common packages, execute the following command:
To Install MariaDB Server, execute the following command:
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.
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:
To install , execute the following command:
Some may also need to be installed.
For example, to install the password validation plugin, execute the following command:
The MariaDB yum repository also contains packages. These package may be needed when .
To install for the most common packages, execute the following command:
All packages have their debuginfo by appending -debuginfo to the package name.
To install for MariaDB Server, execute the following command:
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 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
Guide to building MariaDB on Windows using Visual Studio, CMake, and Git, including creating ZIP and MSI packages.
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.
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.
Building Debug version is done with:
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.
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.
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.
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.
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.
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.
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.
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
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
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.
Or:
To install the RPMs, there is a quick and easy guide to . Follow the instructions there.
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
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.
We currently have ZYpp repositories for the following Linux distributions:
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, .
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=tcmallocmalloc-lib=tcmalloc# jemalloc
find /usr/lib -name "libjemalloc.so.*"
# tcmalloc
find /usr/lib -name "libtcmalloc.so.*"LD_PRELOAD=/path/to/library mariadbdsystemctl status mariadb |grep LoadedEnvironment=LD_PRELOAD=<path-to-library>[Service]
Environment=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2systemctl daemon-reload
systemctl restart mariadbENV 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:latestMALLOC_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 detailjeprof --show_bytes path-to-mariadbd jeprof.19678.0.f.heapjeprof --show_bytes --pdf path-to-mariadbd jeprof.19678.0.f.heap > /tmp/mariadbd.pdfStarting 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_errorssudo sed -i 's/^mysql_inst=yes/mysql_inst=no/' /usr/local/directadmin/custombuild/options.confIn 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.
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










Bufferpoolsize for innodb
Install client shared library
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.
SUSE Linux Enterprise Server (SLES) 12
SUSE Linux Enterprise Server (SLES) 15
OpenSUSE 15
OpenSUSE 42
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.
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:
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:
MariaDB's zypper repository can be updated to a new major release. How this is done depends on how you originally configured the repository.
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.
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.
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.
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.
To Install the most common packages, execute the following command:
To Install MariaDB Server, execute the following command:
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.
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:
To install mariadb-backup, execute the following command:
Some plugins may also need to be installed.
For example, to install the cracklib_password_check password validation plugin, execute the following command:
The MariaDB zypper repository also contains debuginfo packages. These package may be needed when .
To install debuginfo for the most common packages, execute the following command:
To install debuginfo for MariaDB Server, execute the following command:
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:
To install debuginfo for mariadb-backup, execute the following command:
For example, to install debuginfo for the cracklib_password_check password validation plugin, execute the following command:
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 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
Automatically starting MariaDB server installs a background service on macOS. Make sure to allow adding that background service. See this section for more information.
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.
Update Homebrew packages:
Then upgrade MariaDB Server:
Install Homebrew like this:
Open a Terminal (⌘ + Space to open Spotlight, type Terminal).
Issue this command:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
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)
Refer to the for more information, particularly to the .
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).
Find information about the MariaDB version, analytics, and more, using the brew info command:
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:
To find out which user is used, issue these commands in a shell like Terminal:
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):
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 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.
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:
This page is licensed: CC BY-SA / Gnu FDL
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
We will provision a new Kubernetes Cluster for you if, you already have one skip to step 2
We will deploy the IBM Cloud Block Storage plug-in, if already have it skip to step 3
General guide for compiling MariaDB from source on various platforms using CMake and standard build tools.
msiexec /i path-to-package.msi /qnmsiexec /i path-to-package.msi [PROPERTY_1=VALUE_1 ... PROPERTY_N=VALUE_N] /qnmsiexec /i path-to-package.msi SERVICENAME=MySQL DATADIR=C:\mariadb5.2\data PORT=3307 /qnmsiexec /i path-to-package.msi SERVICENAME=MySQL ADDLOCAL=DEBUGSYMBOLS REMOVE=DEVEL /qnmsiexec /i path-to-package.msi REMOVE=ALL /qnmsiexec /i path-to-package.msi REMOVE=ALL CLEANUPDATA="" /qnmsiexec.exe /i path-to-package.msi /l*v path-to-logfile.txtcurl -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=1sudo yum clean allsudo sed -i 's/10.6/10.11/' /etc/yum.repos.d/MariaDB.reposudo dnf install MariaDB-server galera-4 MariaDB-client MariaDB-shared MariaDB-backup MariaDB-commonsudo dnf install MariaDB-serversudo dnf install MariaDB-server MariaDB-client galera-4sudo dnf install MariaDB-client MariaDB-sharedsudo dnf install MariaDB-develsudo yum install MariaDB-backupsudo dnf install MariaDB-cracklib-password-checksudo dnf install MariaDB-server-debuginfo MariaDB-client-debuginfo MariaDB-shared-debuginfo MariaDB-backup-debuginfo MariaDB-common-debuginfosudo dnf install MariaDB-server-debuginfosudo dnf list --showduplicates MariaDB-serversudo 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 appstreamver=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 inputmkdir bld
cd bld
cmake ..
cmake --build . --config RelWithDebInfocmake --build . --config Debugcmake .. -A Win32cmake --build . --config relwithdebinfo --target packagecmake --build . --config relwithdebinfo --target win_packagecmake --build . --config relwithdebinfo
cmake --build . --config relwithdebinfo --target MSImkdir bld
cd bld
cmake .. -DSIGNCODE=1 -DWITH_THIRD_PARTY=HeidiSQL
cmake --build . --config relwithdebinfo --target win_package
cmake --build . --config relwithdebinfo --target MSIcd C:\server\bld\mysql-testperl mysql-test-run.pl --suite=main --parallel=autoperl mysql-test-run.pl <test_name> --vsjitdebuggerperl mysql-test-run.pl <test_name> --devenvperl mysql-test-run.pl <test_name> --windbgcurl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bashsudo zypper addrepo --gpgcheck --refresh https://yum.mariadb.org/10.6/sles/15/x86_64 mariadb
sudo zypper --gpg-auto-import-keys refreshsudo zypper removerepo mariadb
sudo zypper addrepo --gpgcheck --refresh https://yum.mariadb.org/10.6.21/sles/15/x86_64 mariadbsudo zypper removerepo mariadbsudo zypper addrepo --gpgcheck --refresh https://yum.mariadb.org/10.6/sles/15/x86_64 mariadb
sudo zypper --gpg-auto-import-keys refresh1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DBsudo rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDBsudo zypper install MariaDB-server galera-4 MariaDB-client MariaDB-shared MariaDB-backup MariaDB-commonsudo zypper install MariaDB-serversudo zypper install MariaDB-server MariaDB-client galera-4sudo zypper install MariaDB-client MariaDB-sharedsudo zypper install MariaDB-backupsudo zypper install MariaDB-cracklib-password-checksudo zypper install MariaDB-server-debuginfo MariaDB-client-debuginfo MariaDB-shared-debuginfo MariaDB-backup-debuginfo MariaDB-common-debuginfosudo zypper install MariaDB-server-debuginfosudo zypper install MariaDB-client-debuginfo MariaDB-shared-debuginfosudo zypper install MariaDB-backup-debuginfosudo zypper install MariaDB-cracklib-password-check-debuginfozypper search --details MariaDB-serversudo 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.21brew install mariadbmysql.server startbrew services start mariadbmariadbsudo mysql -u rootbrew updatebrew 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-sourcebrew install mariadb --devel


MariaDB deployment
Click the Catalog button on the top.
Select Service from the catalog.
Search for Kubernetes Service and click on it.
Choose a plan: standard or free.
To provision a standard cluster, upgrade your account to Pay-As-You-Go.
To upgrade to a Pay-As-You-Go account, follow these steps:
In the console, go to Manage > Account.
Select Account settings, and click Add credit card.
Enter your payment information, click Next, and submit your information.
Choose between classic or VPC after reviewing the documentation to determine the most suitable option.
Now choose your location settings, for more information please visit Locations
Choose Geography (continent)
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.
Choose a Worker Zone if using Single zones or Metro if Multizone
Set up your account with VRF or enable VLAN spanning to use Multizone.
If no Virtual LAN is available at your selected location, a new VLAN will be created for you.
Choose a Worker node setup or use the preselected one.
Set the Worker node per zone.
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.
Give Cluster name
Give desired Tags to your cluster, for more information visit tags
Click Create
Wait for you cluster to be provisioned
Your cluster is ready for usage
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).
Click the Catalog button on the top
Select Software from the catalog
Search for IBM Cloud Block Storage plug-in and click on it
On the application page, select the cluster you wish to use
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)
Give a Name to this workspace
Click Install and wait for the deployment
We will deploy MariaDB on our cluster
Click the Catalog button on the top
Select Software from the catalog
Search for MariaDB and click on it
Please select IBM Kubernetes Service
On the application page, select the cluster you wish to use
Click on Enter or select namespace and choose the default Namespace or use a custom one
Give a unique name to workspace, which you can easily recognize
Select which Resource Group you want to use, it's for access controll and billing purposes. For more information please visit resource groups
Give Tags to your MariaDB, for more information visit tags
Click on Parameters with default values, You can set deployment values or use the default ones
Please set the MariaDB root password in the parameters
After finishing everything, tick the box next to the agreements and click Install
The MariaDB workspace will start installing, wait a couple of minutes
Your MariaDB workspace has been successfully deployed
Go to Resources in your browser
Expand Clusters. Click on your cluster
On the Overview page, click Actions, then select Web Terminal from the dropdown menu.
Click Install and wait for sometime
Click on Actions
Click Web terminal. A terminal window will open up
On the terminal window, please change NAMESPACE to the namespace you choose at the deployment setup:
Enter your pod with bash , please replace PODNAME with your mariadb pod's name
After you are in your pod please enter Mariadb and enter your root password after the prompt
You have successfully deployed MariaDB IBM Cloud!
This page is licensed: CC BY-SA / Gnu FDL
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
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:
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:
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:
-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.
After installing MariaDB (using sudo make install), but prior to starting MariaDB for the first time, one should:
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)
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:\
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
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.
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.
MariaDB builds with readline; using an alternative such as Editline may result in problems with non-ascii symbols.
This page is licensed: CC BY-SA / Gnu FDL
$ 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-mariadbgit clean -xffd && git submodule foreach --recursive git clean -xffdcmake ../servercmake ../server -DBUILD_CONFIG=mysql_releasecmake ../server -DCMAKE_BUILD_TYPE=Debugcmake ../server -DCMAKE_BUILD_TYPE=Debug -DMYSQL_MAINTAINER_MODE=OFF.cmake ../server -LHcmake --build .
sudo cmake --install .cmake --build . --verbosecpackshell> ./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 testmysql-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).
Guide on compiling MariaDB with various sanitizers like ASAN and UBSAN for debugging and error detection.
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:
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.
MSAN containerThe 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
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:
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.
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.
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.
Use the MSAN in the label when reporting bugs.
Current outstanding MSAN bugs can be found on .
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:
Build and test run are standard.
Note: list of unfixed .
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.
RRIn 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 OptionsTo 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:
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.
This page is licensed: CC BY-SA / Gnu FDL
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)
cmake -DWITH_ASAN=ON /sourcecmake -DWITH_UBSAN=ON /sourcecmake -DWITH_TSAN=ON /sourcecmake -DWITH_MSAN=ON /sourcepodman 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-20docker 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-20CXX=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=0cmake \
-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 \
/sourcecmake --build . ...
[100%] Built target mariadbd
[100%] Linking CXX executable mariadb-backup
Creating mariadb-backup link
[100%] Built target mariadb-backupmysql-test/mtr (usual mtr options)cmake \
-DUPDATE_SUBMODULES=OFF \
-DWITH_ASAN=ON \
-DWITH_ASAN_SCOPED=ON \
-DWITH_UBSAN=ON \
-DWITH_UNIT_TESTS=OFF \
/sourceSUMMARY: 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=1export ASAN_OPTIONS=abort_on_error=1:log_path=/tmp/asanexport ASAN_OPTIONS=abort_on_error=1:log_path=/tmp/asan:fast_unwind_on_malloc=0export ASAN_OPTIONS=abort_on_error=1:disable_coredump=0ASAN_OPTIONS=help=1 extra/perror 0A 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".
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.
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:
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!
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.
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. []
The following options should be removed or renamed if you use them in your config files:
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.
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.
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.
Shutdown MySQL Shutdown your MySQL 5.5 server.
Take a Full Backup
OS and Database Upgrade
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
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
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!
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.
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.
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.
If you have comments or suggestions on things we can add or change to improve this page. Please add them as comments below.
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
Instructions on configuring and using the MariaDB package repository.
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.
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).
10300128M
256M
50
150
500
5000
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
48M
innodb-buffer-pool-pages-index
mariadb_repo_setup for MariaDB Community Server, which can be downloaded from:
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.
Alternatively, you can run a convenient shell script that will automatically configure a repository for you.
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_setupVerify 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_setupVerify the checksum of the script:
echo "${checksum} mariadb_repo_setup" | sha256sum -c -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:
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:
Navigate to https://customers.mariadb.com/downloads/token/ and log in
Copy the Customer Download Token
Substitute your token for ${token} when running the mariadb_es_repo_setup script, below
Set the script to be executable:
Run the script:
Set the script to be executable:
Run the script:
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
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.
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.
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 .
To provide options to the script, you must tell your to expect them by executing bash with the options -s --, for example:
--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
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.
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.
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:
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 on RHEL and equivalents
On Red Hat Enterprise Linux (RHEL) and equivalents, the MariaDB Package Repository setup script performs the following tasks:
Creates a repository configuration file at /etc/yum.repos.d/mariadb.repo
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:
Creates a repository configuration file at /etc/apt/sources.list.d/mariadb.list
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:
Imports the GPG public key used to verify the signature of MariaDB software package
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:
Creates a repository configuration file at /etc/zypp/repos.d/mariadb.repo
Imports the GPG public key used to verify the signature of MariaDB software packages with rpm --import from supplychain.mariadb.com
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:
mariadb_es_repo_setup Versions
2025-12-10
62a28aa1f060b4055751d93a88bc11c5556c2b23103c6a6287a8fcb0a4b8a13f
2025-10-22
1f584ffd368d18c64b8820bf6cd9b1114dda11a0ecf9524be3c967a3a5be941b
2025-09-08
c33b022c2cc325fa50be62eae070ea0bdcaf85367f840accac7acaeea1e8a972
2025-06-04
4d483b4df193831a0101d3dfa7fb3e17411dda7fc06c31be4f9e089c325403c0
2025-01-16
mariadb_repo_setup Versions
Step-by-step instructions for installing MariaDB on Debian, covering service configuration and security settings.
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.
We currently have APT repositories for the following Linux distributions:
Debian 11 (Bullseye)
Debian 12 (Bookworm)
Debian 13 (Trixie)
Debian Unstable (Sid)
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.
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.
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:
MariaDB's apt repository can be updated to a new major release. How this is done depends on how you originally configured the repository.
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.
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 .
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.
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.
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:
To Install MariaDB Server, first you would have to update the package cache by executing the following command:
Then, execute the following command:
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.
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:
To install , first you would have to update the package cache by executing the following command:
Then, execute the following command:
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:
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.
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 the installation is complete, you can start MariaDB.
If you are using , then keep in mind that the first node will have to be .
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.
The available DEB packages depend on the specific MariaDB release series.
For MariaDB, the following DEBs are available:
When the mariadb-server DEB package is installed, it will create a user and group named mysql, if they do not already exist.
This page is licensed: CC BY-SA / Gnu FDL
sudo service mysql restartsudo 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=64Ksudo dnf install curlsudo apt update
sudo apt install curl apt-transport-httpssudo zypper install curlsudo dnf install MariaDB-server MariaDB-client MariaDB-backupsudo dnf install maxscalesudo apt install mariadb-server mariadb-client mariadb-backup galera-4sudo apt install maxscalesudo zypper install MariaDB-server MariaDB-client MariaDB-backupcurl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --helpcurl -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=10curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --write-to-stdout2024-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
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
chmod +x mariadb_es_repo_setupsudo ./mariadb_es_repo_setup --token="${token}" --applychmod +x mariadb_repo_setupsudo ./mariadb_repo_setupcurl -LsSO https://supplychain.mariadb.com/mariadb-keyring-2025.gpg
sudo mv mariadb-keyring-2025.gpg /etc/apt/trusted.gpg.d/
sudo apt updatesudo rpm --import https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY-2025Package: *
Pin: origin downloads.mariadb.com
Pin-Priority: 1000sudo zypper install maxscalecurl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bashsudo 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 mainsudo apt updatesudo 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-httpssudo apt updatesudo 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 updatesudo sed -i 's/10.5/10.6/' /etc/apt/sources.list.d/MariaDB.listsudo apt update1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DBsudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db177F 4010 FE56 CA33 3630 0305 F165 6F24 C74C D1D8sudo 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: 1sudo apt updatesudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-commonsudo apt updatesudo apt-get install mariadb-serversudo apt updatesudo apt-get install mariadb-server mariadb-client galera-4sudo apt-get install galera-arbitrator-4sudo apt updatesudo apt-get install mariadb-client libmariadb3sudo apt updatesudo apt-get install mariadb-backupsudo apt updatesudo apt-get install mariadb-cracklib-password-checksudo apt-cache showpkg mariadb-serverPackage: 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~ubu2404Reading 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*.debsudo apt upgrade mariadb-serversudo apt install mariadb-server galera-4This page is licensed: CC BY-SA / Gnu FDL