Cambiar el directorio de datos MySQL en Ubuntu Server 10.04

Cambiar el directorio de datos MySQL en Ubuntu Server 10.04

Recibí el siguiente error al intentar cambiar el directorio de datos en el servidor Ubuntu 10.04.

100809 19:33:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100809 19:33:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100809 19:33:00  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.

Respuesta1

Después de cierta confusión general sobre los permisos, el OP se dio cuenta de que el problema no era que no tuviera permisos y derechos de rutas, sino que AppArmor impedía que MySQL leyera y escribiera en la nueva ubicación.

Esta es su solución:

Primero detén MySQL para que no pase nada extraño mientras tocas el violín:

$ sudo stop mysql

Luego mueva todos los directorios de bases de datos a su nuevo hogar:

$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

No muevas los archivos, serán generados por mysql, solo mueve las carpetas (que son las bases de datos).

Luego, pídale cortésmente a AppArmor que permita que mysql use la nueva carpeta:

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
  >> add lines
     /new-mysql-dir/ r,
     /new-mysql-dir/** rwk,

Luego dígale a MySQL que el directorio de datos se ha movido:

$ sudo vim /etc/mysql/my.cnf 
  >> change the line
     datadir=/var/lib/mysql
  >> to
     datadir=/my-new-db-dir/

NOTA: Dependiendo de la configuración de su base de datos, es posible que también necesite cambiar innodb-data-home-dir, etc.

Luego reinicie AppArmor para leer la nueva configuración:

$ sudo /etc/init.d/apparmor restart

E inicie MySQL nuevamente usando el nuevo directorio de datos:

$ sudo start mysql

información relacionada