
Eu estava recebendo o seguinte erro ao tentar alterar o diretório de dados no 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.
Responder1
Após alguma confusão geral sobre permissões, o OP percebeu que o problema não era que ele não tinha permissões e direitos de caminhos, mas que o AppArmor estava impedindo o MySQL de ler e gravar no novo local.
Esta é a solução dele:
Primeiro pare o MySQL para que nada de estranho aconteça enquanto você estiver mexendo:
$ sudo stop mysql
Em seguida, mova todos os diretórios do banco de dados para seu novo local:
$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/
Não mova os arquivos, eles serão gerados pelo mysql, apenas mova as pastas (que são os bancos de dados).
Então peça educadamente ao AppArmor para permitir que o mysql use a nova pasta:
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
>> add lines
/new-mysql-dir/ r,
/new-mysql-dir/** rwk,
Então diga ao mysql que o datadir foi movido:
$ sudo vim /etc/mysql/my.cnf
>> change the line
datadir=/var/lib/mysql
>> to
datadir=/my-new-db-dir/
NOTA: Dependendo da configuração do seu banco de dados, pode ser necessário alterar innodb-data-home-dir etc.
Em seguida, reinicie o AppArmor para ler as novas configurações:
$ sudo /etc/init.d/apparmor restart
E inicie o MySQL novamente usando o novo datadir:
$ sudo start mysql