How to Move MySQL's Data Directory
2013-11-30
Sometimes it becomes necessary to move the location where MySQL stores databases. Either you have run out of room or something else has happened and you need to modify MySQL's data directory. Here's how to do it.
First, I would stop MySQL's daemon if you aren't running production databases currently (which I would suggest reading this entire guide and thinking of a different way of doing this if you are):
sudo service mysql stop
Next, move or copy the current database directory. I copied it because I had room and I wanted to play it safe. For Ubuntu, the default MySQL database directory is /var/lib/mysql
, so to copy it I did:
sudo cp -R /var/lib/mysql /newdir/
where newdir
is where I want all of the MySQL databases and data to be.
Then you'll need to edit your MySQL configuration file. Edit /etc/mysql/my.cnf
and change this line
datadir = /var/lib/mysql
to this
datadir = /newdir/mysql
and change newdir
to your chosen directory.
Now, you'll need to change part of AppArmor's MySQL entry to reflect your new database directory. Edit /etc/apparmor.d/usr.sbin.mysqld
and change
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
to
/newdir/mysql/ r,
/newdir/mysql/** rwk,
replacing newdir
with your new directory. Now that you have changed everything, you can start MySQL again with sudo service mysql start
.