MySQL não lê links simbólicos para arquivos de opções my.cnf

MySQL não lê links simbólicos para arquivos de opções my.cnf

Estou executando o MySQL 5.5 no Ubuntu.

Existe um arquivo my.cnf em /etc/mysql/ onde eu esperaria que estivesse. - Ótimo!

Para instalações debian do mysql é recomendado que você não edite o arquivo my.cnf. Há uma diretiva IncludeDir no arquivo /etc/mysql/my.cnf para procurar na pasta /etc/mysql/conf.d/ por mais arquivos de opções.

Quando coloco este arquivo aqui:

/etc/mysql/conf.d/my-local.cnf

O MySQL lê o arquivo e substitui qualquer coisa em /etc/mysql/my.cnf.

Ótimo! :-)

Aqui está o problema:

Eu mantenho minha cópia local do arquivo /etc/mysql/conf.d/my-local.cnf no controle de origem e quero atualizá-la periodicamente para toda a equipe. Então, minha solução é criar um link simbólico:

cd /etc/mysql/conf.d/
ln -s /path/to/my/my-local.cnf my-local.cnf

MySQL não lê este link simbólico.

Eu verifiquei o seguinte:

  • Tanto o arquivo físico quanto o link simbólico possuem a extensão de arquivo .cnf conforme o manual do mysql.
  • O usuário mysql tem acesso a este arquivo
  • Cada usuário tem acesso a este arquivo
  • O usuário mysql tem acesso ao link simbólico
  • Cada usuário tem acesso ao link simbólico

Então, para resumir, o MySQL irá ler e analisar quando houver um arquivo físico na pasta /etc/mysql/conf.d/. O Mysql não lerá um link simbólico nesta pasta.

Alguém tem alguma ideia? Isso poderia ser um problema do Debian/Ubuntu?

Um problema semelhante, mas não resolvido e ligeiramente diferente, foi descritoaqui.

Responder1

Apparmor não sabe nada sobre a nova localização domy.cnf

O servidor MySQL segue o link simbólico e tenta abrir o destino. Mas apparmor nega isso.

Para corrigir o problema, você deve adicionar o caminho my.cnfpara/etc/apparmor.d/usr.sbin.mysqld

Responder2

Isso pode ser causado pelo apparmor que está habilitado para mysqld por padrão no Ubuntu 9.0.4. Por favor, vejahttp://en.wikipedia.org/wiki/AppArmor.

  • Você pode modificar adições específicas do site em /etc/apparmor.d/local/. Sofri o mesmo problema e editei /etc/apparmor.d/local/usr.sbin.mysqld para fazê-lo funcionar. Esteja ciente da última vírgula no arquivo de política.

    # Site-specific additions and overrides for usr.sbin.mysqld.
    # For more details, please see /etc/apparmor.d/local/README.
    
    # vim:syntax=apparmor
    
    /etc/mysql/conf.d/* rl,
    @{HOMEDIRS}/** rwk,
    
  • Após editar /etc/apparmor.d/local/usr.sbin.mysqld, reinicie o serviço apparmor por service apparmor restart. Não deve haver nenhum erro ou aviso sobre /etc/apparmor.d/local/usr.sbin.mysqld .
  • No meu caso, eu queria usar o datadir e o my.cnf específico do site, localizado no diretório inicial dos usuários.

Responder3

Algumas possibilidades vêm à mente:

  • Crie o link simbólico na outra direção, ou seja

    /home/developer/my-local.cnf -> /etc/mysql/conf.d/my-local.cnf
    
  • Use um link físico.

  • Coloque /etcsob controle de versão usando uma ferramenta como etckeeper.

informação relacionada