Após várias tentativas falhas envolvendo a configuração do apparmor, a edição
/lib/systemd/system/mariadb.service e /etc/mysql/my.cnf para definir o datadir, que falhou, eu fui em uma abordagem diferente.
- Interrompido o serviço (se iniciado):
sudo service mysqld stop -
Eliminou a instalação
apt-get purge mysqld* -
Eu removi tudo que envolvia o mysql e o mariadb (procurei
/etc,/varpara eles). Você pode querer fazer o backup deles se achar que precisa deles para referência futura.-
Configuração do mysql e mariadb em
/etc/systemd/system -
perfil do mysql em
/etc/apparmor.d -
dir
/etc/mysql -
o link simbólico que eu tinha para
mysqlem/var/lib(meus dados estão seguros em/home/db/mysql). Ignore isso se seus dados estiverem em/var/lib/mysql
-
-
Reinstalado
sudo apt-get install mariadb-server - Renomeou o
/var/lib/mysqlpara/var/lib/mysql.bke criou o link simbólico para/home/db/mysqlto/var/lib/mysql - Defina a propriedade para o link simbólico e
/home/db/mysqlpara mysql: mysql
Tudo funciona na reinicialização e não morre mais.
Eu posso iniciar e interromper o serviço com sudo /etc/init.d/mysql start sudo /etc/init.d/mysql stop
Eu acho que a migração para o systemd causou todo esse problema. Talvez usar os antigos scripts init.d não seja a melhor maneira de fazer as coisas, mas é a única maneira que encontrei para manter o MariaDB rodando após a reinicialização, caso contrário ele continuava travando por causa de
kernel: [ 2336.792423] audit: type=1400 audit(1470265086.730:518): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=11850 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=117 ouid=0
Como alguns dos clientes que eu estava usando deram Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) , tive que criar um link simbólico sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock . O link foi removido na reinicialização ...
Portanto, tive de editar os arquivos /etc/mysql/my.cnf e /etc/mysql/debian.cnf para definir socket = /tmp/mysql.sock . O debian.cnf diz DO NOT TOUCH! , mas aproveitei as chances, já que my.cnf diz Remember to edit /etc/mysql/debian.cnf when changing the socket location . Nota: uma reinicialização foi necessária para ver as alterações aplicadas. Somente reiniciar o serviço não os aplicou. Talvez algum daemon tenha sido recarregado, mas não sabia qual deles.