Introduction
The installation process of MariaDB Database Server is the main content of this article. The target of the installation is a machine with a CentOS operating system run in it. The process for installing MariaDB Database is using a command line interface. There are several parts to install the MariaDB database server. The first one is the installation part. The next one is the security configuration part. After that, another part is the firewall configuration. So, all of the parts of processes exist as follows :
MariaDB Database Server Installation
This part will only explain about how to install MariaDB Database Server in the command line interface using ‘yum’ tool. Just follow all the steps below :
[root@hostname ~]$ yum search mariadb Loaded plugins: fastestmirror Determining fastest mirrors * base: mirror.************* * extras: mirror.************* * updates: mirror.************* =========================================================================== N/S matched: mariadb =========================================================================== mariadb-bench.x86_64 : MariaDB benchmark scripts and data mariadb-devel.i686 : Files for development of MariaDB/MySQL applications mariadb-devel.x86_64 : Files for development of MariaDB/MySQL applications mariadb-embedded.i686 : MariaDB as an embeddable library mariadb-embedded.x86_64 : MariaDB as an embeddable library mariadb-embedded-devel.i686 : Development files for MariaDB as an embeddable library mariadb-embedded-devel.x86_64 : Development files for MariaDB as an embeddable library mariadb-libs.i686 : The shared libraries required for MariaDB/MySQL clients mariadb-libs.x86_64 : The shared libraries required for MariaDB/MySQL clients mariadb-server.x86_64 : The MariaDB server and related files mariadb.x86_64 : A community developed branch of MySQL mariadb-test.x86_64 : The test suite distributed with MariaD Name and summary matches only, use "search all" for everything. [centos@hostname ~]$
From the output of the command execution above, there is an installation package with the name of mariadb-server.x86_64.
After finding the correct installation package, just run the installation process by executing the following command :
[root@hostname ~]# yum -y install mariadb-server Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.************* * extras: mirror.************* * updates: mirror.************* Resolving Dependencies --> Running transaction check ---> Package mariadb-server.x86_64 1:5.5.65-1.el7 will be installed --> Processing Dependency: mariadb-libs(x86-64) = 1:5.5.65-1.el7 for package: 1:mariadb-server-5.5.65-1.el7.x86_64 --> Processing Dependency: mariadb(x86-64) = 1:5.5.65-1.el7 for package: 1:mariadb-server-5.5.65-1.el7.x86_64 ... ... ... Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: mariadb-server x86_64 1:5.5.65-1.el7 base 11 M Installing for dependencies: libaio x86_64 0.3.109-13.el7 base 24 k mariadb x86_64 1:5.5.65-1.el7 base 8.7 M ... ... ... Transaction Summary ======================================================================================================================== Install 1 Package (+37 Dependent packages) Upgrade ( 1 Dependent package) Total download size: 33 M Downloading packages: ... ... ... Trying other mirror. (1/39): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm | 57 kB 00:00:00 (2/39): perl-Carp-1.26-244.el7.noarch.rpm | 19 kB 00:00:00 (3/39): perl-DBD-MySQL-4.023-6.el7.x86_64.rpm | 140 kB 00:00:00 (4/39): perl-Data-Dumper-2.145-3.el7.x86_64.rpm | 47 kB 00:00:00 (5/39): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm | 32 kB 00:00:02 (6/39): perl-Exporter-5.68-3.el7.noarch.rpm | 28 kB 00:00:00 (7/39): perl-File-Path-2.09-2.el7.noarch.rpm | 26 kB 00:00:00 (8/39): perl-Encode-2.51-7.el7.x86_64.rpm | 1.5 MB 00:00:02 (9/39): perl-Filter-1.49-3.el7.x86_64.rpm | 76 kB 00:00:00 (10/39): perl-Getopt-Long-2.40-3.el7.noarch.rpm | 56 kB 00:00:00 (11/39): perl-5.16.3-295.el7.x86_64.rpm | 8.0 MB 00:00:04 (12/39): perl-HTTP-Tiny-0.033-3.el7.noarch.rpm | 38 kB 00:00:00 (13/39): perl-File-Temp-0.23.01-3.el7.noarch.rpm | 56 kB 00:00:02 (14/39): perl-IO-Compress-2.061-2.el7.noarch.rpm | 260 kB 00:00:00 (15/39): perl-Net-Daemon-0.48-5.el7.noarch.rpm | 51 kB 00:00:00 (16/39): perl-PathTools-3.40-5.el7.x86_64.rpm | 82 kB 00:00:00 (17/39): perl-PlRPC-0.2020-14.el7.noarch.rpm | 36 kB 00:00:00 (18/39): perl-DBI-1.627-4.el7.x86_64.rpm | 802 kB 00:00:04 (19/39): perl-Pod-Escapes-1.04-295.el7.noarch.rpm | 51 kB 00:00:00 (20/39): perl-Pod-Perldoc-3.20-4.el7.noarch.rpm | 87 kB 00:00:00 (21/39): perl-Pod-Simple-3.28-4.el7.noarch.rpm | 216 kB 00:00:00 (22/39): perl-Pod-Usage-1.63-3.el7.noarch.rpm | 27 kB 00:00:00 (23/39): perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm | 36 kB 00:00:00 (24/39): perl-Socket-2.010-5.el7.x86_64.rpm | 49 kB 00:00:00 (25/39): perl-Storable-2.45-3.el7.x86_64.rpm | 77 kB 00:00:00 (26/39): perl-Text-ParseWords-3.29-4.el7.noarch.rpm | 14 kB 00:00:00 (27/39): perl-Time-HiRes-1.9725-3.el7.x86_64.rpm | 45 kB 00:00:00 (28/39): perl-Time-Local-1.2300-2.el7.noarch.rpm | 24 kB 00:00:00 (29/39): mariadb-server-5.5.65-1.el7.x86_64.rpm | 11 MB 00:00:06 (30/39): perl-constant-1.27-2.el7.noarch.rpm | 19 kB 00:00:00 (31/39): perl-macros-5.16.3-295.el7.x86_64.rpm | 44 kB 00:00:00 (32/39): perl-libs-5.16.3-295.el7.x86_64.rpm | 689 kB 00:00:00 (33/39): perl-parent-0.225-244.el7.noarch.rpm | 12 kB 00:00:00 (34/39): perl-threads-1.87-4.el7.x86_64.rpm | 49 kB 00:00:00 (35/39): perl-podlators-2.5.1-3.el7.noarch.rpm | 112 kB 00:00:00 (36/39): perl-threads-shared-1.43-6.el7.x86_64.rpm | 39 kB 00:00:00 (37/39): libaio-0.3.109-13.el7.x86_64.rpm | 24 kB 00:00:00 (38/39): mariadb-libs-5.5.65-1.el7.x86_64.rpm | 759 kB 00:00:00 (39/39): mariadb-5.5.65-1.el7.x86_64.rpm | 8.7 MB 00:00:02 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 1.1 MB/s | 33 MB 00:00:30 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : 1:mariadb-libs-5.5.65-1.el7.x86_64 1/40 Installing : 1:perl-parent-0.225-244.el7.noarch 2/40 Installing : perl-HTTP-Tiny-0.033-3.el7.noarch 3/40 Installing : perl-podlators-2.5.1-3.el7.noarch 4/40 Installing : perl-Pod-Perldoc-3.20-4.el7.noarch 5/40 Installing : 1:perl-Pod-Escapes-1.04-295.el7.noarch 6/40 Installing : perl-Text-ParseWords-3.29-4.el7.noarch 7/40 Installing : perl-Encode-2.51-7.el7.x86_64 8/40 Installing : perl-Pod-Usage-1.63-3.el7.noarch 9/40 Installing : 4:perl-libs-5.16.3-295.el7.x86_64 10/40 Installing : 4:perl-macros-5.16.3-295.el7.x86_64 11/40 Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 12/40 Installing : perl-Exporter-5.68-3.el7.noarch 13/40 Installing : perl-constant-1.27-2.el7.noarch 14/40 Installing : perl-Socket-2.010-5.el7.x86_64 15/40 Installing : perl-Time-Local-1.2300-2.el7.noarch 16/40 Installing : perl-Carp-1.26-244.el7.noarch 17/40 Installing : perl-Storable-2.45-3.el7.x86_64 18/40 Installing : perl-PathTools-3.40-5.el7.x86_64 19/40 Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64 20/40 Installing : perl-File-Temp-0.23.01-3.el7.noarch 21/40 Installing : perl-File-Path-2.09-2.el7.noarch 22/40 Installing : perl-threads-shared-1.43-6.el7.x86_64 23/40 Installing : perl-threads-1.87-4.el7.x86_64 24/40 Installing : perl-Filter-1.49-3.el7.x86_64 25/40 Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch 26/40 Installing : perl-Getopt-Long-2.40-3.el7.noarch 27/40 Installing : 4:perl-5.16.3-295.el7.x86_64 28/40 Installing : perl-Data-Dumper-2.145-3.el7.x86_64 29/40 Installing : 1:mariadb-5.5.65-1.el7.x86_64 30/40 Installing : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 31/40 Installing : perl-Net-Daemon-0.48-5.el7.noarch 32/40 Installing : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 33/40 Installing : perl-IO-Compress-2.061-2.el7.noarch 34/40 Installing : perl-PlRPC-0.2020-14.el7.noarch 35/40 Installing : perl-DBI-1.627-4.el7.x86_64 36/40 Installing : perl-DBD-MySQL-4.023-6.el7.x86_64 37/40 Installing : libaio-0.3.109-13.el7.x86_64 38/40 Installing : 1:mariadb-server-5.5.65-1.el7.x86_64 39/40 Cleanup : 1:mariadb-libs-5.5.60-1.el7_5.x86_64 40/40 Verifying : perl-HTTP-Tiny-0.033-3.el7.noarch 1/40 Verifying : 1:mariadb-server-5.5.65-1.el7.x86_64 2/40 Verifying : perl-IO-Compress-2.061-2.el7.noarch 3/40 Verifying : perl-threads-shared-1.43-6.el7.x86_64 4/40 Verifying : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 5/40 Verifying : 1:perl-Pod-Escapes-1.04-295.el7.noarch 6/40 Verifying : perl-DBD-MySQL-4.023-6.el7.x86_64 7/40 Verifying : perl-Exporter-5.68-3.el7.noarch 8/40 Verifying : perl-constant-1.27-2.el7.noarch 9/40 Verifying : perl-PathTools-3.40-5.el7.x86_64 10/40 Verifying : perl-Socket-2.010-5.el7.x86_64 11/40 Verifying : 1:mariadb-5.5.65-1.el7.x86_64 12/40 Verifying : 1:perl-parent-0.225-244.el7.noarch 13/40 Verifying : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 14/40 Verifying : perl-Net-Daemon-0.48-5.el7.noarch 15/40 Verifying : 4:perl-libs-5.16.3-295.el7.x86_64 16/40 Verifying : perl-File-Temp-0.23.01-3.el7.noarch 17/40 Verifying : 1:perl-Pod-Simple-3.28-4.el7.noarch 18/40 Verifying : perl-Time-Local-1.2300-2.el7.noarch 19/40 Verifying : perl-Text-ParseWords-3.29-4.el7.noarch 20/40 Verifying : perl-DBI-1.627-4.el7.x86_64 21/40 Verifying : libaio-0.3.109-13.el7.x86_64 22/40 Verifying : 4:perl-macros-5.16.3-295.el7.x86_64 23/40 Verifying : 4:perl-5.16.3-295.el7.x86_64 24/40 Verifying : perl-Carp-1.26-244.el7.noarch 25/40 Verifying : perl-Data-Dumper-2.145-3.el7.x86_64 26/40 Verifying : perl-Storable-2.45-3.el7.x86_64 27/40 Verifying : perl-Scalar-List-Utils-1.27-248.el7.x86_64 28/40 Verifying : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 29/40 Verifying : perl-Pod-Usage-1.63-3.el7.noarch 30/40 Verifying : perl-PlRPC-0.2020-14.el7.noarch 31/40 Verifying : perl-Encode-2.51-7.el7.x86_64 32/40 Verifying : perl-Pod-Perldoc-3.20-4.el7.noarch 33/40 Verifying : perl-podlators-2.5.1-3.el7.noarch 34/40 Verifying : perl-File-Path-2.09-2.el7.noarch 35/40 Verifying : perl-threads-1.87-4.el7.x86_64 36/40 Verifying : perl-Filter-1.49-3.el7.x86_64 37/40 Verifying : perl-Getopt-Long-2.40-3.el7.noarch 38/40 Verifying : 1:mariadb-libs-5.5.65-1.el7.x86_64 39/40 Verifying : 1:mariadb-libs-5.5.60-1.el7_5.x86_64 40/40 Installed: mariadb-server.x86_64 1:5.5.65-1.el7 Dependency Installed: libaio.x86_64 0:0.3.109-13.el7 mariadb.x86_64 1:5.5.65-1.el7 perl.x86_64 4:5.16.3-295.el7 perl-Carp.noarch 0:1.26-244.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-DBI.x86_64 0:1.627-4.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-PlRPC.noarch 0:0.2020-14.el7 perl-Pod-Escapes.noarch 1:1.04-295.el7 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-5.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-295.el7 perl-macros.x86_64 4:5.16.3-295.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 Dependency Updated: mariadb-libs.x86_64 1:5.5.65-1.el7 Complete! [root@hostname ~]#
MariaDB Database Server Configuration
In this part, after finishing all of the installation process, the next step is to configure the database furthermore. Actually, the configuration process continue on by activating the MariaDB database server’s service by executing the following command :
[root@hostname ~]# systemctl start mariadb.service
After activating the service, the next configuration step is to activate the service on server’s booting or during server startup process. The main purpose for doing this is to avoid starting the MariaDB database server manually as in the above step. So, it will automatically activate and running in the booting or startup process. Usually, just execute the following command is the way to achieve it :
[root@hostname ~]# systemctl enable mariadb.service Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@hostname ~]#
Furthermore, another step is to implement the security configuration by running a shell script available after the installation process. Just run the following command :
[root@hostname ~]# 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 you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!
[First of all, the output above is ‘Y’ because when the installation is done, the root password need to be set.]
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!
[For the second one, the above input parameter is also ‘Y’ because of the security reason, ‘anonymous users’ cannot exist inside the database.]
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!
[For the next one, the above input is also in ‘Y’ because of root user also for a security reason it will be very dangerous to allow and use it from outside of the server using a remote access.]
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!
[Furthermore, just pass the ‘Y’ input in the end of the configuration part as an option to erase the database with the name of ‘test’. This is also for a security reason.]
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success!
[Last one, after everything is done, the last input is also ‘Y’ to reload all of the changes in term of previlege.]
Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! [root@hostname ~]#
MariaDB Database Server Firewall Configuration
Next part, after configuring MariaDB database from the security aspect is done, the next step is to manage the firewall configuration so that MariaDB firewall can be accessed from outside the server with the associated user. The following is the command to add port number 3306 as an execption so that it can be accessed without having the firewall block it :
[root@hostname ~]# systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-09-13 23:53:32 UTC; 2 weeks 0 days ago Docs: man:firewalld(1) Main PID: 25364 (firewalld) CGroup: /system.slice/firewalld.service └─25364 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid Sep 13 23:53:32 hostname systemd[1]: Starting firewalld - dynamic firewall daemon... Sep 13 23:53:32 hostname systemd[1]: Started firewalld - dynamic firewall daemon. Sep 13 23:53:32 hostname firewalld[25364]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will... it now. Sep 13 23:54:09 hostname firewalld[25364]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will... it now. Hint: Some lines were ellipsized, use -l to show in full. [root@hostname ~]# firewall-cmd --list-port 8080/tcp [root@hostname ~]#
Apparently, there is only one port available in the list and it is not MariaDB database port. In that case, just add it so that it will not blocked by the firewall of the operating system. The following is the command to add MariaDB database port number 3306 :
[root@hostname ~]# firewall-cmd --add-port=3306/tcp --permanent success [root@hostname ~]# firewall-cmd --reload success [root@hostname ~]# firewall-cmd --list-port 8080/tcp 3306/tcp [root@hostname ~]#
Finally, after executing the above command, the process for installing MariaDB database server is actually finished.