Debian 12 supports MariaDB natively. It comes with MariaDB package which you can install directly using the following command.
sudo apt install mariadb-server
This will install MariaDB v10.11.3 which is fine for the most part. However, you can’t choose a different version of your choice should you desire.
MariaDB has released official packages for Debian 12 but only for versions 10.11 and 11.0. To get the flexibility of installing an older version, you need to use Docker.
Install MariaDB using Docker
The first step is to install Docker. Refer to the official Docker documentation for the instructions. Run the following command post installation to add your system user to the dockers
group. This way you won’t have to use sudo
with your docker commands.
sudo usermod -aG docker ${USER}
Log out and log back in for the change to take affect.
Run the following command to start the MariaDB’s container using the latest version.
docker run -d -v mariadb-data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=my-secret-pw --name mariadb --restart=always mariadb:latest
Check the status of the running container by running docker ps
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9357eb83ef3f mariadb:latest "docker-entrypoint.s…" 6 seconds ago Up 5 seconds 3306/tcp mariadb
This creates a container called mariadb using the latest version. The variable MARIADB_ROOT_PASSWORD
sets the password for the MySQL root user.
To run a different version(10.3) of MariaDB, use the following command instead.
docker run -d -v mariadb-data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=my-secret-pw --name mariadb --restart=always mariadb:10.3
Connect to the MariaDB container using the following command.
docker exec -it mariadb bash
Log in to the MariaDB shell. You will be asked for your root password. Enter to proceed. With MariaDB 11.0.1, Docker images don’t use mysql
symlinks so you need to use mariadb
as the command. The mysql
version works with lower versions.
mariadb -u root -p
You will get the following output.
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 11.0.2-MariaDB-1:11.0.2+maria~ubu2204 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
So far you can access MariaDB only from the Docker network. To access it outside Docker, you need to expose its port.
Remove the existing container.
docker rm -f mariadb
Start the container again with the port exposed.
docker run -dp 3306:3306 -v mariadb-data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=my-secret-pw --name mariadb --restart=always mariadb:latest
Now you can use MariaDB with any application installed on the server as usual.
Install MariaDB (10.11/11.0) on Debian 12
MariaDB has released official packages for Debian 12 for 10.11 and 11.0 versions. They haven’t updated their downloads page though.
Install the pre-requisites required for MariaDB.
sudo apt install apt-transport-https curl
Import the MariaDB signing key.
sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Add the MariaDB repository to the system.
sudo echo "deb [signed-by=/usr/share/keyrings/mariadb-keyring.pgp] \
https://deb.mariadb.org/10.11/debian `lsb_release -cs` main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list
Update the system repository list.
sudo apt update
Check the server status.
sudo systemctl status mariadb
You will get the following output.
● mariadb.service - MariaDB 10.11.5 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since Tue 2023-08-15 09:23:34 UTC; 10s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 15412 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 15416 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 15426 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR>
Process: 15475 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 15477 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 15461 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 12 (limit: 1107)
Memory: 131.2M
CPU: 633ms
CGroup: /system.slice/mariadb.service
└─15461 /usr/sbin/mariadbd
This concludes our tutorial on installing MariaDB on a Debian 12 machine. To find out more, go through the following resources.