
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.cnf
para/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
/etc
sob controle de versão usando uma ferramenta como etckeeper.