
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