This guide will discuss the steps required to install MariaDB 10.4 on Fedora 31/30/29. MariaDB is a widely used relational database server that is community-developed, forked from MySQL relational database management system.

MariaDB is an open-source and free software released under the General Public License version 2. The latest stable release as of this article writing is version 10.4. The MariaDB packages are distributed as binaries on mariadb.org. But you also have an option to build it from source should you choose to do so.

So let’s start to install MariaDB 10.4 on Fedora 31/30/29.

Step 1: Update Fedora machine

Let’s make sure we’re running the latest versions of Fedora packages in our system.

sudo dnf -y update

Reboot the server after upgrade.

sudo systemctl reboot

Step 2: Add MariaDB RPM repository

Now add the MariaDB RPM repository to your system.

Fedora 31/30:

sudo tee /etc/yum.repos.d/mariad.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora30-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

Fedora 29:

sudo tee /etc/yum.repos.d/mariad.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora29-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

Step 3: Install MariaDB 10.4 on Fedora 31/30/29

Now install MariaDB 10.4 on Fedora 31/30/29 Linux system.

sudo dnf -y install MariaDB-server

Below is the dependency tree and list of packages to be installed.

Dependencies resolved.
===================================================================================================================================================
 Package                                    Architecture               Version                                   Repository                   Size
===================================================================================================================================================
Installing:
 MariaDB-server                             x86_64                     10.4.8-1.fc30                             mariadb                      25 M
Installing dependencies:
 boost-program-options                      x86_64                     1.69.0-9.fc31                             fedora                      161 k
 libaio                                     x86_64                     0.3.111-6.fc31                            fedora                       24 k
 lsof                                       x86_64                     4.93.2-2.fc31                             fedora                      240 k
 perl-Carp                                  noarch                     1.50-439.fc31                             fedora                       29 k
 perl-DBI                                   x86_64                     1.642-5.fc31                              fedora                      701 k
 perl-Data-Dumper                           x86_64                     2.174-440.fc31                            fedora                       57 k
 perl-Digest                                noarch                     1.17-439.fc31                             fedora                       24 k
 perl-Digest-MD5                            x86_64                     2.55-439.fc31                             fedora                       36 k
 perl-Encode                                x86_64                     4:3.01-439.fc31                           fedora                      1.8 M
 perl-Errno                                 x86_64                     1.30-446.fc31                             fedora                       25 k
 perl-Exporter                              noarch                     5.73-440.fc31                             fedora                       32 k
 perl-File-Path                             noarch                     2.16-439.fc31                             fedora                       36 k
 perl-File-Temp                             noarch                     1:0.230.900-439.fc31                      fedora                       60 k
 perl-Getopt-Long                           noarch                     1:2.51-1.fc31                             fedora                       60 k
 perl-HTTP-Tiny                             noarch                     0.076-439.fc31                            fedora                       55 k
 perl-IO                                    x86_64                     1.40-446.fc31                             fedora                       92 k
 perl-MIME-Base64                           x86_64                     3.15-439.fc31                             fedora                       30 k
 perl-Math-BigInt                           noarch                     1:1.9998.16-439.fc31                      fedora                      185 k
 perl-Math-Complex                          noarch                     1.59-446.fc31                             fedora                       57 k
 perl-Net-SSLeay                            x86_64                     1.88-3.fc31                               fedora                      355 k
 perl-PathTools                             x86_64                     3.78-439.fc31                             fedora                       86 k
 perl-Pod-Escapes                           noarch                     1:1.07-439.fc31                           fedora                       20 k
 perl-Pod-Perldoc                           noarch                     3.28.01-442.fc31                          fedora                       85 k
 perl-Pod-Simple                            noarch                     1:3.39-2.fc31                             fedora                      214 k
 perl-Pod-Usage                             noarch                     4:1.69-439.fc31                           fedora                       32 k
 perl-Scalar-List-Utils                     x86_64                     3:1.52-439.fc31                           fedora                       66 k
 perl-Socket                                x86_64                     4:2.029-4.fc31                            fedora                       56 k
 perl-Storable                              x86_64                     1:3.15-441.fc31                           fedora                       97 k
 perl-Term-ANSIColor                        noarch                     4.06-440.fc31                             fedora                       44 k
 perl-Term-Cap                              noarch                     1.17-439.fc31                             fedora                       22 k
 perl-Text-ParseWords                       noarch                     3.30-439.fc31                             fedora                       16 k
 perl-Text-Tabs+Wrap                        noarch                     2013.0523-439.fc31                        fedora                       23 k
 perl-Time-Local                            noarch                     2:1.280-439.fc31                          fedora                       32 k
 perl-URI                                   noarch                     1.76-5.fc31                               fedora                      108 k
 perl-Unicode-Normalize                     x86_64                     1.26-439.fc31                             fedora                       97 k
 perl-constant                              noarch                     1.33-440.fc31                             fedora                       23 k
 perl-interpreter                           x86_64                     4:5.30.0-446.fc31                         fedora                      6.1 M
 perl-libnet                                noarch                     3.11-440.fc31                             fedora                      117 k
 perl-libs                                  x86_64                     4:5.30.0-446.fc31                         fedora                      1.7 M
 perl-macros                                x86_64                     4:5.30.0-446.fc31                         fedora                       21 k
 perl-parent                                noarch                     1:0.237-439.fc31                          fedora                       14 k
 perl-podlators                             noarch                     1:4.12-2.fc31                             fedora                      113 k
 perl-threads                               x86_64                     1:2.22-439.fc31                           fedora                       58 k
 perl-threads-shared                        x86_64                     1.60-440.fc31                             fedora                       44 k
 MariaDB-client                             x86_64                     10.4.8-1.fc30                             mariadb                      11 M
 MariaDB-common                             x86_64                     10.4.8-1.fc30                             mariadb                      81 k
 galera-4                                   x86_64                     26.4.2-1.fc30.fc30                        mariadb                      14 M
Installing weak dependencies:
 perl-IO-Socket-IP                          noarch                     0.39-440.fc31                             fedora                       42 k
 perl-IO-Socket-SSL                         noarch                     2.066-6.fc31                              fedora                      239 k
 perl-Mozilla-CA                            noarch                     20180117-6.fc31                           fedora                       12 k

Transaction Summary
===================================================================================================================================================
Install  51 Packages

Total download size: 64 M
Installed size: 237 M
Downloading Packages:

Step 4: Configure MariaDB service on Fedora 31/30/29

After installation of MariaDB 10.4 on Fedora 31/30/29, start the service and set it to start at system boot.

sudo systemctl enable --now mariadb

Check service status:

$ systemctl status mariadb
● mariadb.service - MariaDB 10.4.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Sun 2019-11-03 07:13:45 UTC; 8s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 3671 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 3672 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl>
  Process: 3712 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 3681 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 2345)
   Memory: 63.2M
      CPU: 189ms
   CGroup: /system.slice/mariadb.service
           └─3681 /usr/sbin/mysqld

Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] InnoDB: 10.4.8 started; log sequence number 139827; transac>
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] Plugin 'FEEDBACK' is disabled.
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffe>
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] Server socket created on IP: '::'.
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] InnoDB: Buffer pool(s) load completed at 191103  7:13:45
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] Reading of all Master_info entries succeeded
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] Added new Master_info '' to hash table
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: 2019-11-03  7:13:45 0 [Note] /usr/sbin/mysqld: ready for connections.
Nov 03 07:13:45 fed31.computingforgeeks.com mysqld[3681]: Version: '10.4.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Serv>
Nov 03 07:13:45 fed31.computingforgeeks.com systemd[1]: Started MariaDB 10.4.8 database server.

Harden you MariaDB server installation.

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Use the root user and password set to access MariaDB shell:

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.4.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Version installed can be checked from the DB shell.

MariaDB [(none)]> SELECT VERSION();
+----------------+
| VERSION()      |
+----------------+
| 10.4.8-MariaDB |
+----------------+
1 row in set (0.000 sec)

This confirms successful installation of MariaDB 10.4 on Fedora 31/30/29 Linux system. Also check related DB guides for Fedora.

Install PostgreSQL 12 on Fedora

Install MySQL 8 on Fedora

Install MongoDB on Fedora