How to Change MySQL/MariaDB Data Directory on Ubuntu

29/12/2020
By default, the MySQL/MariaDB SQL database servers put their data on the root filesystem. This is not what you want in your production servers most of time. You may want to put the database server data to a different hard drive or SSD partition.

In this article, I am going to show you how to change the MySQL/MariaDB database’s default data directory on Ubuntu. So, let’s get started.

Installing MySQL/MariaDB on Ubuntu:

MySQL/MariaDB database packages are available in the official Ubuntu package repository. So, you can easily install it from there using the APT package manager.

First, update the APT package repository cache with the following command:

$ sudo apt update

Now, if you want to install MySQL database server, run the following command:

$ sudo apt install mysql-server mysql-client

If you want to install MariaDB database server, run the following command:

$ sudo apt install mariadb-server mariadb-client

I am going to install MariaDB database server in this article. You can install MySQL if you want.

Once you run the required installation command, you should see the following prompt. Press y and then press <Enter> to continue.

MySQL/MariaDB database server should be installed.

Finding the Default MySQL/MariaDB Data Directory:

You can find the default data directory of MySQL/MariaDB database very easily with the grep or egrep command.

$ sudo grep -R –color datadir /etc/mysql/*

As you can see, the default data directory for the MariaDB database server is /var/lib/mysql. The configuration file of MariaDB database server is /etc/mysql/mariadb.conf.d/50-server.cnf. If you want to change the default data directory of the MariaDB database server, then you have to change it in the configuration file /etc/mysql/mariadb.conf.d/50-server.cnf.

The default data directory for the MySQL database server is /var/lib/mysql as well. But the configuration file is different for MySQL database server. For MySQL, the configuration file is /etc/mysql/mysql.conf.d/mysqld.cnf. If you’ve installed MySQL database server, then to change the default data directory, you have to modify this configuration file.

In the next sections, I am going to show you how to prepare a hard disk or SSD partition for MySQL/MariaDB data directory and change the default data directory.

Preparing MySQL/MariaDB Data Directory:

In this section, I am going to show you how to prepare your Hard Disk or SSD partition for MySQL/MariaDB data directory.

You can list all the installed hard drives or SSDs on your computer with the following command:

$ sudo lsblk | grep disk

All the installed hard drives and SSDs should be listed. sdb is the hard drive where I want to put my MySQL/MariaDB data. Yours should be different. So, replace it with yours from now on.

Now, you have to make a new partition on the hard drive sdb with fdisk.

NOTE: In this section, I won’t go through the details on how fdisk work. To learn how to partition hard drives or SSDs with fdisk, read the article How to Use fdisk in Linux.

To make a partition on the hard drive sdb, open it with fdisk as follows:

$ sudo fdisk /dev/sdb

Now, press n and then press <Enter>.

Now, press p and then press <Enter>.

Now, press <Enter>.

Press <Enter>.

Press <Enter>. A new partition should be created.

Now, press w and press <Enter>.

Let’s say, the hard drive partition you want to use as the MySQL/MariaDB data directory is /dev/sdb1.

Now, format the partition /dev/sdb1 with the following command:

$ sudo mkfs.ext4 -L db_data /dev/sdb1

Now, make a new directory /db for moutning the /dev/sdb1 partition.

$ sudo mkdir /db

/db will be the new data directory of MySQL/MariaDB.

Now, open /etc/fstab file with the following command:

$ sudo nano /etc/fstab

Now, add the following line at the end of the file and save the file by pressing <Ctrl> + x followed by y and <Enter>.

/dev/sdb1   /db  ext4  defaults    0   0

Now reboot your computer with the following command:

$ sudo reboot

Once your computer boots, /dev/sdb1 should be mounted on /db as you can see in the screenshot below.

$ df -h /db

Now, change the owner and group of the /db directory to mysql with the following command:

$ sudo chown mysql:mysql /db

Now, you have to stop MySQL/MariaDB database service and copy all the files from the default data directory /var/lib/mysql to the new data directory /db.

If you’re using MariaDB, then stop MariaDB service with the following command:

$ sudo systemctl stop mariadb

If you’re using MySQL, then stop MySQL service with the following command:

$ sudo systemctl stop mysql

Now, copy all the contents of the default data directory /var/lib/mysql to the new data directory /db with the following command:

$ sudo rsync -avzh /var/lib/mysql/ /db

All the contents of /var/lib/mysql directory should be copied to the new directory /db.

/db directory is now prepared to be the new MySQL/MariaDB data directory.

Configuring AppArmor:

Now, you have to configure AppArmor to allow /db to be a MySQL/MariaDB data directory.

To do that, edit the AppArmor alias file /etc/apparmor.d/tunables/alias as follows:

$ sudo nano /etc/apparmor.d/tunables/alias

Now, add the following line at the end of the file and save it by pressing <Ctrl> + x followed by y and <Enter>.

alias /var/lib/mysql –> /db,

Now, restart apparmor service with the following command:

$ sudo systemctl restart apparmor

Now, you’re ready to change the data directory of MySQL/MariaDB.

Changing MySQL/MariaDB Data Directory:

To change the data directory from /var/lib/mysql to /db, you have to edit the required configuration file depending on whether you’re using MySQL/MariaDB.

If you’re using MariaDB, then the configuration file you have to edit is /etc/mysql/mariadb.conf.d/50-server.cnf.

If you’re using MySQL, then the configuration file to edit is /etc/mysql/mysql.conf.d/mysqld.cnf.

Now, edit the required configuration file depending on whether you’re using MySQL/MariaDB as follows:

MariaDB:

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

MySQL:

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Now, find the line as marked in the screenshot below.

Change the datadir to /db as shown in the screenshot below. Then save the file by pressing <Ctrl> + x followed by y and <Enter>.

Now, start the MySQL/MariaBD service with the following command:

MariaDB:

$ sudo systemctl start mariadb

MySQL:

$ sudo systemctl start mysql

Testing MySQL/MariaDB:

Now, try to connect to the MySQL/MariaDB server as follows:

$ sudo mysql -u root -p

Then, type in the password of the MySQL/MariaDB server and press <Enter>.

You should be logged in to the MySQL/MariaDB shell as root database user. It’s an indication that it works.

But, just to be sure, type in the following query to find which directory MySQL/MariaDB is currently using as the data directory.

sql> select @@datadir;

As you can see, the current data directory is /db just as I configured.

So, that’s how you change the MySQL/MariaDB data directory on Ubuntu. Thanks for reading this article.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Connecting to MariaDB with PyMySQL

PyMySQL is a free and open source project released under the MIT License. PyMySQL is a MySQL library that can be used to...
29/12/2020

Install phpMyAdmin on Ubuntu 18.04

phpMyAdmin is a very useful web-based database management tool to manage MySQL or MariaDB databases. It is a free tool...
29/12/2020

Install phpMyAdmin 5 on CentOS 8

phpMyAdmin is used to manage MySQL/MariaDB databases graphically from the web browser. phpMyAdmin 5 is the latest version...
29/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

SỰ KHÁC BIỆT GIỮA RESIDENTIAL PROXY VÀ PROXY DATACENTER
17/02/2024

Mua Proxy v6 US Private chạy PRE, Face, Insta, Gmail
07/01/2024

Mua shadowsocks và hướng dẫn sữ dụng trên window
05/01/2024

Tại sao Proxy Socks lại được ưa chuộng hơn Proxy HTTP?
04/01/2024

Mua thuê proxy v4 nuôi zalo chất lượng cao, kinh nghiệm tránh quét tài khoản zalo
02/01/2024