Wednesday, January 23, 2013

Move mysql to home directory

  • Open the terminal
  • Stop MySQL with the command
    /etc/init.d/mysql stop
  • Move existing data directory (which is located in /var/lib/mysql) to new dir /usr/new_datadir using the command
    mv /var/lib/mysql /home/iben/mysql
  • Create symlink from new dir to old one
    ln -s /home/iben/mysql /var/lib/mysql
  • Don't chnage /etc/mysql/my.cnf =)))
  • 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
    vim /etc/apparmor.d/usr.sbin.mysqld
  • Duplicate the lines beginning with /var/lib/mysql and replace duplicated strings with /usr/new_datadir
    In my case it was:
    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    /var/log/mysql/ r,
    /var/log/mysql/* rw,
    /home/iben/mysql r,
    /home/iben/mysql** rwk,
    /home/iben/mysql r,
    /home/iben/mysql* rw,
  • Restart the AppArmor profiles with the command
    /etc/init.d/apparmor restart
  • Restart MySQL with the command
    /etc/init.d/mysql restart
  • MySQL should now start without any errors, have fun! 

    Post a Comment