MySQL Não Lendo Symlinks para Arquivos de Opções my.cnf

5

Estou executando o MySQL 5.5 no Ubuntu.

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

Para as instalações debian do mysql, é recomendado que você não edite o arquivo my.cnf. Existe 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 sobrescreve qualquer coisa em /etc/mysql/my.cnf.

Ótimo! : -)

Este é o problema:

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

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

O 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 .cnf conforme o manual do mysql.
  • O usuário mysql tem acesso a este arquivo
  • Todo usuário tem acesso a este arquivo
  • O usuário mysql tem acesso ao symlink
  • Todo 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 irá ler um link simbólico nesta pasta.

Alguma ideia é de alguém? Este poderia ser um problema debian / ubuntu?

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

    
por HenryHayes 17.10.2012 / 17:09

3 respostas

2

Apparmor não sabe nada sobre o novo local do my.cnf

O servidor MySQL segue o symlink e tenta abrir o destino. Mas apparmor nega isso.

Para corrigir o problema, você precisa adicionar o caminho ao my.cnf to /etc/apparmor.d/usr.sbin.mysqld

    
por 18.10.2012 / 13:11
2

Isso pode ser causado pelo apparmor que está habilitado para o mysqld por padrão a partir do Ubuntu 9.0.4. Por favor, veja link .

  • Você pode modificar as adições específicas do site em /etc/apparmor.d/local/. Eu sofri o mesmo problema e editei /etc/apparmor.d/local/usr.sbin.mysqld para fazer isso funcionar. Esteja ciente da última vírgula no arquivo de políticas.

    # 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 em 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 pessoal dos usuários.
por 22.05.2014 / 10:09
0

Algumas possibilidades vêm à mente:

  • Crie o symlink na outra direção, por exemplo

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

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

por 18.10.2012 / 14:22