Alterando o diretório de dados MySQL no Ubuntu Server 10.04

Alterando o diretório de dados MySQL no Ubuntu Server 10.04

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

informação relacionada