permissão do MySQL negada erro mesmo após a definição do contexto de segurança para o SELinux na VM

2

Eu tenho o MySQL instalado no CentOS (versões detalhadas abaixo). Meu sistema operacional é uma máquina VM e não uma máquina física, o diretório /data/mysql é um disco local (virtual). Eu suspeito que eu possa precisar fazer algumas etapas extras em um ambiente virtualizado. Este link contém algumas informações sobre o SELinux e o amp ; virtualização mas não sei como incluí-lo no MySQL.

O MySQL funciona bem com o diretório de dados em /var/lib/mysql , mas no momento em que eu o movo para outro diretório em outro disco ele para de funcionar. Considerando diretório diferente no mesmo disco funciona. Se eu desabilitar o SELinux, o MySQL funciona com discos diferentes. O SELinux está restringindo uma unidade diferente. Eu tentei a solução dada nos dois links a seguir

Em particular, os dois comandos a seguir:

$ semanage fcontext --add --type mysqld_db_t '/data/mysql(/.*)?'
$ restorecon -r /data/mysql

Quando eu corro:

$ ls -dZ /data/mysql

Eu recebo o seguinte:

drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:SystemLow 

Ainda continuo recebendo:

/usr/sbin/mysqld: Can't change dir to '/data/mysql/' (Errcode: 13 - Permission denied)

Há mais alguma coisa que eu precise fazer?

  • MySQL: mysql Ver 14.14 Distrib 5.6.14, para Linux (x86_64) usando o wrapper EditLine
  • SO: versão 6.4 do CentOS (final)
por PAS 25.11.2013 / 21:02

2 respostas

1

Não vejo nada de errado diretamente com o que você está fazendo em termos dos comandos que está executando ou como está se aproximando da adição de /data/mysql em relação ao SELinux.

Apenas para garantir que as coisas estão funcionando corretamente, eu verificaria se presente e / ou adiciono manualmente essa linha a /etc/selinux/targeted/contexts/files/file_contexts.local .

/data/mysql(/.*)?   system_u:object_r:mysqld_db_t:s0

Quando eu repeti seus passos acima, eu adicionei a linha ao meu arquivo file_contexts.local como esperado.

Eu checo duas vezes seus passos que você está seguindo contra as etapas discutidas aqui neste documento específico Redhat intitulado: 10.4.1. MySQL Alterando o Local do Banco de Dados .

    
por 26.11.2013 / 09:29
0

Esse problema pode ocorrer sem o SELinux e o AppArmor no Debian 9 e em outras distribuições baseadas em systemd, quando o datadir do MySQL é movido para qualquer lugar em / home.

A razão para isso é o arquivo de serviço systemd (/lib/systemd/system/mariadb.service) contém a configuração: ProtectHome = true . Essa configuração impedirá que o MySQL grave em qualquer pasta em / home e, portanto, lançará erros ErrNo 13: Permission Denied na inicialização.

A correção é mover o dir de dados para fora de / home ou desativar esse recurso de segurança no arquivo de serviço systemd:

1: sudo cp /lib/systemd/system/mariadb.service / etc / systemd / system / # faz uma substituição local do arquivo de serviço

2: Edite o /etc/systemd/system/mariadb.service e altere o ProtectHome para ser falso ( ProtectHome = false ). Salve o arquivo

3: sudo systemd daemon-reload # atualiza os serviços do systemd para que ele veja seu arquivo de substituição

4: sudo systemctl inicia o mysql # e deve finalmente iniciar

    
por 06.09.2017 / 20:44