MariaDB is an open-source relational database management system developed by the developers of MySQL as an enhanced drop-in replacement to the MySQL server. MariaDB is focused on reliability, stability, security, and performance.
In this tutorial, we will show you the complete steps to install MariaDB 10.7 on Debian 11 from an APT repository.
Update Operating System
Update your Debian 11 operating system to make sure all existing packages are up to date:
$ sudo apt update && sudo apt upgrade -y
Install the required packages for the installation of MariaDB 10.7 with the following command:
$ sudo apt install curl software-properties-common dirmngr gnupg2
Add MariaDB 10.7 Repository
MariaDB 10.5 is the currently available version on the default Debian 11 repositories. To be able to install MariaDB 10.7 on Debian 11 you need to add the
MariaDB 10.7 APT repository:
$ curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.7 --skip-maxscale --skip-tools
Install MariaDB 10.7
Once the repository has been added to the system, You are now ready to install MariaDB 10.7 with the following command:
$ sudo apt install mariadb-server mariadb-client
You can verify the installed version of MariaDB with the following command:
$ mariadb --version
mariadb Ver 15.1 Distrib 10.7.1-MariaDB, for debian-linux-gnu (x86_64) using readline EditLine wrapper
Start the database server daemon, and also enable it to start automatically at the next boot with the following commands:
$ systemctl start mariadb $ systemctl enable mariadb
Check the status of the service:
$ systemctl status mariadb
$ ● mariadb.service - MariaDB 10.7.1 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: active (running) Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 3274 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 3276 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 3278 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 || exit 1 (code=exited, stat> Process: 3340 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 3342 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 3326 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 13 (limit: 2301) Memory: 68.1M CPU: 345ms CGroup: /system.slice/mariadb.service └─3326 /usr/sbin/mariadbd
mariadb-secure-installation script which helps you secure your MariaDB database server:
$ sudo mariadb-secure-installation
You can set a root password for MariaDB along with removing empty databases, restricting remote access except for localhost, removing anonymous users, and more:
Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
MariaDB Create Database
We need to login to MariaDB with the following command:
$ sudo mysql -u root -p
-p if you have set the root password.
To create a database in MariaDB you need to run the following command:
MariaDB [(none)]> CREATE DATABASE your_db;
View the new database:
To create a new MariaDB user, run the following command:
MariaDB [(none)]> CREATE USER 'your_user'@localhost IDENTIFIED BY 'password';
You should replace
password with a secure password.
View the new user:
SELECT User FROM mysql.user;
The newly created user does not have privileges to manage databases.
Create a new user (only with local access) and grant privileges to this user on the database:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'localhost' IDENTIFIED BY 'password';
Create a new user (with remote access) and grant privileges to this user on the database:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'%' IDENTIFIED BY 'password';
Flush the privileges:
MariaDB [(none)]> FLUSH PRIVILEGES;
Exit the MariaDB shell:
MariaDB [(none)]> exit
Reset the MariaDB Root Password
If you forget your root MariaDB password, it can be reset.
Stop the MariaDB server:
$ sudo systemctl stop mariadb
Start the database without loading the grant tables or enabling networking:
$ sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
$ sudo systemctl start mariadb
Now you can connect to the database as the root user,:
$ sudo mysql -u root
Use the following commands to reset root’s password. Replace
password with a strong password:
MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> UPDATE mysql.user SET password = PASSWORD('password') WHERE user = 'root';
Update the authentication methods for the root password:
MariaDB [(none)]> UPDATE mysql.user SET authentication_string = '' WHERE user = 'root'; MariaDB [(none)]> UPDATE mysql.user SET plugin = '' WHERE user = 'root'; exit;
Revert the environment settings to allow the database to start with grant tables and networking:
$ sudo systemctl unset-environment MYSQLD_OPTS
Then restart MariaDB:
$ sudo systemctl start mariadb
You should now be able to log into the database with your new root password:
$ sudo mysql -u root -p
Comments and Conclusion
That’s it. You have successfully installed MariaDB 10.7 on Debian 11. Also, In the tutorial, you have learned how to create database and reset your MariaDB root password.
If you have any questions please leave a comment below.