skip to content
MJ4

Deploy & Configure MariaDB Server

/ 4 min read

in this guide, we are going to install & configure MariaDB server community edition on Linux server.

MariaDB

MariaDB Community Server is the open source relational database loved by developers all over the world. Created by MySQL’s original developers, MariaDB is compatible with MySQL and guaranteed to stay open source forever. MariaDB powers some of the world’s most popular websites such as Wikipedia and WordPress.com. It is also the core engine behind banking, social media, mobile and e-commerce sites worldwide.

~ MariaDB Website

MariaDB Server is a great RDBMS for running production & Dev/Test OLTP workloads like , CRM, E-Commerce, ERP Systems, in this guide we are installing MariaDB on a Linux server.

In this Guide I have prepared a VM with specs below, Depending on your environment and your application data access pattern replace these resources to meet your application demand.

CPUMemoryDistro
2 Cores2 GiBDebian 10

Make sure you have access to your server and have administrative privileges to run sudo command.

Setup & Configuration

First thing is to update package repositories to get the latest version of packages. if your system is already update feel free to skip two next steps

Terminal window
$ sudo apt update

If you just provisioned the server, it would likely be outdated , run a full system upgrade to install security patches.

Terminal window
$ sudo apt upgrade

Next we are installing the MariaDB server and client and mycli utility which is a great utility that provide command and SQL completion and suggestion to simplify database administration tasks.

Terminal window
$ sudo apt install mycli mariadb-client mariadb-server`

After the installation is done, we have to run the MySQL secure installation command, it is an interactive script that guides you through some security measures to harden your database server, it resets insecure default configurations and removes default users & databases.

Terminal window
$ sudo mysql_secure_installation`

The output :

Terminal window
...
Enter current password for root (enter for none):
...
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
...
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
... Success!
All done! If you ve completed all of the above steps, your MariaDB
installation should now be secure.

After running secure installation script you can go and test connection between your client and server, but by default majority of MariaDB server packages or the script we just ran bind the server to localhost or even go further and disable networking. To check if your installation has the same behavior you can run the command below

Terminal window
$ grep 'bind-address' /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 127.0.0.1

To configure the server to allow remote connection there, but first let’s backup the configuration file.

Terminal window
$ cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server-$(date +"%F")-backup.cnf

To allow access to a static IP you can run this one-liner.

Terminal window
$ sed -i 's/127.0.0.1/<ip-addr>/g' /etc/mysql/mariadb.conf.d/50-server.cnf

Or if you want the database to be publicly available.

Terminal window
$ sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mariadb.conf.d/50-server.cnf

Restart mariadb-server service.

Terminal window
$ sudo systemctl restart mariadb-server

Now you should be able to to see mysql port open for remote connections.

Creating Databases and Users

Terminal window
$ sudo mysql

Create Database for your application

CREATE DATABASE <DB_NAME>;

Create application database user

CREATE USER <USERNAME> on <DB_NAME>@<HOST> IDENTIFIED BY 'password';

Grant all application database privileges for the application user from a host you can specify:

  • ”*” : from anywhere
  • “192.168.1.%” : from network subnet
  • “mydomain” : for a domain name
  • “1.1.1.1” : for a static IP address
GRANT ALL PRIVILEGES ON <DB_NAME>.* TO <DB_NAME>@<HOST>;
FLUSH PRIVILEGES;

To debug user access you can run the following commands

USE mysql;
SELECT User,Host FROM user;
+--------+------------+
| User | Host |
+--------+------------+
| mehdi | 192.168.1.%|
| root | 127.0.0.1 |
| root | ::1 |
+--------+------------+
4 rows in set (0.00 sec)

Resources

Conclusion

We saw how to install and configure a MariaDB instance, ext we troubleshooted remote connection, in this guide we covered some basic configuration steps to secure and operate the database, there are some advanced steps that needs to be done like installing TLS certifications and configuring backups. Thank you for reading this guide and stay tuned for more tutorials in future.