Friday, January 25, 2013

How to: Move the MySQL data directory in *buntu


  1. Open the terminal
  2. Stop MySQL with the command "sudo /etc/init.d/mysql stop".
  3. Copy the existing data directory (by default located in /var/lib/mysql) using the command "sudo cp -R -p /var/lib/mysql /path/to/new/datadir". All you need are the data files, so delete the others with the command "sudo rm /path/to/new/datadir". (You will get a message about not being able to delete some directories, but that's what you want.)
  4. Edit the MySQL configuration file with the command "gksu gedit /etc/mysql/my.cnf". Find the entry for "datadir", and change the path (which should be "/var/lib/mysql") to the new data directory.
  5. NOW FOR THE PART THE OTHER TUTORIALS DON'T MENTION... From 7.10 (Gutsy Gibbon) forward, Ubuntu uses some security software called AppArmor that specifies the areas of your filesystem applications are allowed to access. Unless you modify the AppArmor profile for MySQL, you'll never be able to restart MySQL with the new datadir location.
    • In the terminal, enter the command "sudo gedit /etc/apparmor.d/usr.sbin.mysqld".
    • Copy the lines beginning with "/var/lib/mysql", comment out the originals with hash marks ("#"), and paste the lines below the originals.
    • Now change "/var/lib/mysql" in the two new lines with "/path/to/new/datadir". Save and close the file.
    • Reload the AppArmor profiles with the command "sudo /etc/init.d/apparmor reload".
  6. Restart MySQL with the command "sudo /etc/init.d/mysql restart". With any luck, MySQL will start with no errors, and your data will be stored in the new location!
Credit goes to http://ubuntuforums.org/showthread.php?t=897354

No comments:

Post a Comment