Mover o diretório de dados mysql para o volume TrueCrypt

0

Eu tenho o Ubuntu Desktop 11.04 e estou tentando mover / var / lib / mysql para um volume TrueCrypt e estou falhando a cada tentativa.

Isso é para fins de desenvolvimento, e há um banco de dados específico com o qual preciso trabalhar, que precisa ser altamente seguro por vários motivos.

Após uma nova instalação do mysql-server e do mysql-client, eu posso iniciar o mysql sem nenhum problema. Então eu movo / var / lib / mysql para o volume TrueCrypt (chame-o / foo / truecrypt) e edite /etc/mysql/my.cnf para apontar o datadir para / foo / truecrypt.

Depois de verificar as permissões para ter certeza de que elas são iguais, tento iniciar o mysql novamente.

Ele não funciona (o MySQL continua a travar), e eu não consigo fazer o MySQL funcionar novamente (mesmo depois de matar todos os processos do mysql e mover o datadir de volta para / var / lib / mysql). Eu fiz um apt-get --purge remover mysql-client mysql-server mysql-common (e depois apagou todos os arquivos em / var / lib / mysql, etc / mysql / e / var / log / mysql *) pelo menos 5 vezes esta noite, a fim de obter uma nova instalação para tentar novamente.

Enquanto o MySQL trava, eu entrei em / var / log / mysql / e aqui está o que aparece em mysql.err:

120421 22:50:03 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
120421 22:50:03 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120421 22:50:03  InnoDB: Initializing buffer pool, size = 8.0M
120421 22:50:03  InnoDB: Completed initialization of buffer pool
120421 22:50:03  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: 'open'.
InnoDB: Cannot continue operation.

Eu tentei mover o / var / lib / mysql / e criar um link simbólico em vez de editar o my.cnf. Isso não faz diferença. Os erros acima indicam um arquivo ausente ou problemas de permissão. No entanto, o plugin.frm existe em / foo / truectrypt / mysql / mysql (como eu simplesmente movi o diretório pai), e a propriedade e as permissões nele e todos os outros arquivos nesse diretório são os mesmos que eram.

Você tem alguma sugestão? Estou perplexo.

    
por David W 22.04.2012 / 04:55

2 respostas

0

O problema foi com o AppArmor, com o qual eu nunca tive experiência. Eu (finalmente) encontrei um site obscuro que dizia o seguinte:

% bl0ck_qu0te%

(de link )

Eu precisava editar o /etc/apparmor.d/usr.sbin.mysqld da seguinte forma:

Depois de seguir as instruções para "Duplicar as linhas que começam com / var / lib / mysql e substituir as strings duplicadas por / usr / new_datadir", e em seguida symlinking / usr / new_datadir para / var / lib / mysql, ele funciona como um encanto!

    
por David W 24.04.2012 / 02:19
0

Eu nunca tentei fazer exatamente o que você está fazendo, mas eu configurei bancos de dados mysql que seriam acessíveis, independentemente do sistema operacional que eu iniciei. Fiz isso movendo /var/lib/mysql/database para uma partição compartilhada /shared/database e, em seguida, criei um link simbólico para o diretório de volta para /var/lib/mysql/database . Se esse procedimento não funcionar para você, então eu investigaria se o symlinking funciona ou não com TrueCrypt (deveria).

O arquivo mencionado no erro ( ibdata1 ) existe em /var/lib/mysql , então só posso imaginar que você tenha movido um diretório para muitos na árvore. Não mova /var/lib/mysql , mova o diretório específico para seu banco de dados /var/lib/mysql/database

    
por Huckle 22.04.2012 / 07:21