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
,/var
para 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
mysql
em/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/mysql
para/var/lib/mysql.bk
e criou o link simbólico para/home/db/mysql
to/var/lib/mysql
- Defina a propriedade para o link simbólico e
/home/db/mysql
para 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.