Why does mariadb keep dying? How do I stop it?
I had quite the same issue after upgrading from mysql to mariadb. The strange thing was that service mariadb start failed on timeout (either at system boot or manualy) whereas service mysql start succeded.
The explanation given by T.J.L. is right but the correction didn't work for me.
$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.
ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile
So I disabled the profile (with aa-disable which seems to be equivalent to plutocrat's solution)
$ sudo aa-disable /usr/sbin/mysqld
Disabling /usr/sbin/mysqld.
I disabled mysqld-akonadi and mysqld-digikam as well.
An apparmor reload was not enough, so I had to reboot and mariadb started perfectly well.
apparmor was the culprit. Despite the contents of /etc/apparmor.d/usr.sbin.mysqld
being nothing but comments and claiming that it was there so that apparmor wouldn't choke on MariaDB, that's exactly what was happening.
AppArmor and MySQL on an Oracle blog provided what I needed to figure out what was going on.
sudo aa-status
shows you what apparmor is doing; what actually has an enforced policy, versus what's just set to complain.
sudo apt-get install apparmor-utils
adds a few commands that make the apparmor profiles easier to deal with, such as...
sudo aa-complain /usr/sbin/mysqld
turns the profile from "enforce" to complain. (aa-enforce
turns it back.)
Once that's done, sudo service apparmor reload
restarts apparmor, and voila... sudo /etc/init.d/mysql start
works, and the server stays up.
I had to completely disable mysql in apparmor. An aa-complain wouldn't do anything for me. So ...
ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
Then reboot