Como alterar o diretório de dados do MySQL?

2

Eu quero colocar meus bancos de dados em outro diretório, para que eu possa armazená-los em um ESB (armazenamento de blocos elásticos, apenas um nome sofisticado para um disco virtual virtualizado) junto com meus aplicativos da Web e outros dados persistentes.

Eu tentei percorrer um tutorial no link .

Tudo parece bem até eu digitar este comando:

# semanage fcontext -a -t mysqld_db_t "/srv/mysql(/.*)?"

Então o comando falha e me diz que o mysqld_db_t é um contexto SELinux inválido, mesmo que o diretório de dados padrão do MySQL esteja rotulado com este contexto. Estou executando o Fedora 15 no Virtualbox (se comporta como uma caixa compatível com x86 comum) e o Amazon EC2 (baseado no Xen) para que o tutorial seja compatível.

Também vale a pena mencionar que desligar o SELinux globalmente ou apenas para o processo MySQL não é uma opção, porque tal solução diminuirá a segurança do sistema se um hacker conseguir acesso ao sistema através do servidor MySQL. Eu nunca vi esse problema antes de mudar para a arquitetura Redhat / Fedora, então poderia ser um problema específico de distribuição.

Qualquer ajuda é muito apreciada

    
por Jonathan Frank 29.06.2011 / 23:04

1 resposta

2

Já tentou especificar o nome de contexto completo em vez de apenas a parte * _t?

Existe alguma razão pela qual você não pode montar o seu dispositivo de bloco sob / var / lib / mysql para que você não precise atualizar o rótulo? Talvez usando montagens de ligação ou links simbólicos? monte -o bind / srv / mysql / var / lib / mysql por exemplo.

Eu tentei reproduzir esse comportamento e não consegui, aqui está o que eu fiz.

$ sudo semanage fcontext -a -t mysqld_db_t "/mnt/foo(/.*)?"
$ sudo restorecon -R /mnt/foo
$ ls -Z /mnt/foo/
drwxr-xr-x. root root system_u:object_r:mysqld_db_t:s0 bar
drwxr-xr-x. root root system_u:object_r:mysqld_db_t:s0 baz
-rw-r--r--. root root system_u:object_r:mysqld_db_t:s0 quux
    
por 29.06.2011 / 23:27