Installing maria DB in Ubuntu 22.04 part 1
Tags: mariadb, ubuntu
Published: 2023-04-11 11:26:46

Maria db is a popular fork of MySQL. It is an open source relational database management system. It is a replacement of MYSQL database which provides enhanced performance and efficient security features. It provides support for many SQL commands and datatypes. It also enables developers to extend its functionality by contributing to it. It provides high availability, clustering support and cache mechanisms. It is mostly used in industries that include finance, healthcare and e-commerce.

## Prerequisite:
1.Ubuntu 22.04 must be installed in the Virtual Machine or dual boot alongside windows.
2.You should have ample space in your software.
You should have already installed git. If not you can take help from here "[Install Git](https://github.com/git-guides/install-git)".
3.Cmake should be installed in your linux system software. If not you can take help from here [Install CMake](https://itslinuxfoss.com/install-cmake-ubuntu-22-04/).

I have used ubuntu on a virtual machine. Below is a step-by-step guide for installing Maria DB on Linux from the source.

# Building from source
## Managing Configurations:
At the start we have to create a configuration file in this path `"/etc/apt/sources.list.d/mariadb.list"`. Use following command to do that:
```
sudo gedit /etc/apt/sources.list.d/mariadb.list
```
After that save the following configurations into the file `/etc/apt/sources.list.d/mariadb.list` 


```
# Retrieved from: https://mariadb.org/download/?t=repo-config

# MariaDB 11.0 [RC] repository list - created 2023-02-24 18:43 UTC
# https://mariadb.org/download/
deb https://mirror.its.dal.ca/mariadb/repo/11.0/ubuntu jammy main
deb-src https://mirror.its.dal.ca/mariadb/repo/11.0/ubuntu jammy main
deb https://mirror.its.dal.ca/mariadb/repo/11.0/ubuntu jammy main/debug
```


## Installing dependencies:

```
sudo apt-get install software-properties-common \
      devscripts \
      equivs \
      curl \
      git
sudo apt-get build-dep mariadb-server
```
Next step is to import the repository key and update apt. You should not get any error from the mariadb repository server.

```
sudo curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo apt-get update
```
Incase you didn't receive any error in the previous steps move to the build process.

## Build
We will make 3 working directories. maria-server which will be the source directory. `maria-server-build` would be a build directory and `maria-server-data` would be data directory. You can allocate your own names but make sure to use them correctly. Let's create them inside the home directory.

`cd ~`

Fork and then clone the forked repository:
(In my case)

`git clone https://github.com/TalhaMunir-JD/maria-server.git`
Create the build and data directory in home directory:

```
mkdir ~/maria-server-build
mkdir ~/maria-server-data
```
Above 2 commands will create maria-server-build and maria-server-data directory in home.

Execute the following commands to start building. Make sure to use correct directory in each command:

```
cd ~/maria-server-build
cmake ~/maria-server/ -DCMAKE_BUILD_TYPE=Debug
cmake --build ./ -j8
```
Above command will start the installation process.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kw8ri1dvotkejyu0cc6l.png)

## Configure:
Before going forward you should have maria db installed without any error from cmake.

Copy the following configurations into the file `~/.my.cnf`. Set the absolute path to your data and build directory in the `datadir `and `language` entry in the below commands before saving:

```
# Example MariadB config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.
#
# One can use all long options that the program supports.
# Run the program with --help to get a list of available options

# This will be passed to all MariaDB clients
[client]
#password=my_password
#port=3306
#socket=/tmp/mysql.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# The mariadb server  (both [mysqld] and [mariadb] works here)
[mariadb]
#port=3306
#socket=/tmp/mysql.sock

# The following three entries caused mysqld 10.0.1-MariaDB (and possibly other versions) to abort...
# skip-locking
# set-variable  = key_buffer=16M

loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb

######### Fix the two following paths

# Where you want to have your database
datadir={absolute-path-to-your-data-directory}

# Where you have your mysql/MariaDB source + sql/share/english
language={absolute-path-to-your-build-directory}/sql/share/english

########## One can also have a different path for different versions, to simplify development.

[mariadb-10.1]
lc-messages-dir=/my/maria-10.1/sql/share

[mariadb-10.2]
lc-messages-dir=/my/maria-10.2/sql/share

[mysqldump]
quick
set-variable = max_allowed_packet=16M

[mysql]
no-auto-rehash

[myisamchk]
set-variable= key_buffer=128M
```

After above process initialize the data files in the data directory:

```
cd ~/maria-server-build
./scripts/mariadb-install-db --srcdir={absolute-path-to-your-source-directory} --user=$LOGNAME
```
Above command will show the below messages:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/abl9cqnsobl5t6yofwdu.png)



## Run:
check the install of maria db by executing the below command:
`./sql/mariadbd`


You will se something similar to this in the terminal:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qig4eeep56kkmw50p5d2.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hud45nsz0osrih0luiss.png)

## References:
Following are some of the references that helped me in installation of maria db:
1.https://github.com/AgeDB-Enterprise/maria-server#readme2
2.https://mariadb.com/kb/en/generic-build-instructions/