After Migrating MySQL to MariaDB, AppArmor blocks MariaDB
前言
繼上篇移轉 MySQL 至 MariaDB 成功後都尚未重開伺服器過,重起之後發現 DB 持續無法正常開始運作。
檢查 log
MariaDB 的 error log 於 syslog。
cat /var/log/syslog.1 | grep mysql
找到錯誤部分
Mar 30 17:24:51 host mysqld[1274]: Version: '10.2.14-MariaDB-10.2.14+maria~xenial-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
Mar 30 17:24:51 host kernel: [ 28.492966] audit: type=1400 audit(1522401891.184:11): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=1274 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=105 ouid=0
Mar 30 17:25:24 host mysqld[1274]: 2018-03-30 17:25:24 139927115249408 [Note] InnoDB: Buffer pool(s) load completed at 180330 17:25:24
Mar 30 17:26:11 host mysqld[1274]: 2018-03-30 17:26:11 139928163120896 [Note] /usr/sbin/mysqld (initiated by: unknown): Normal shutdown
Mar 30 17:26:11 host mysqld[1274]: 2018-03-30 17:26:11 139928163120896 [Note] Event Scheduler: Purging the queue. 0 events
Mar 30 17:26:11 host mysqld[1274]: 2018-03-30 17:26:11 139927148820224 [Note] InnoDB: FTS optimize thread exiting.
Mar 30 17:26:11 host kernel: [ 108.349415] audit: type=1400 audit(1522401971.049:12): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=1274 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=105 ouid=0
原因
首先找到相關問題是將 AppArmor 加入 MySQL 的設定檔,不過嘗試無效。
AppArmor 簡介:
AppArmor 是一個類似 SELinux 的 LSM (Linux Security Module) 來, LSM 它是一個系統 Kernel 內負責管理安全的 module, 我們可以用它是用來做MAC (mandatory access controls) 的。
查看後發現 MariaDB 於 5.x 版之後已經不再有預設 AppArmor。
因此可以將原先 MySQL AppArmor 的設定部分關閉。
解決方法
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo reboot
接著再將伺服器重開機即可。
參考連結
- https://askubuntu.com/questions/750604/why-does-mariadb-keep-dying-how-do-i-stop-it
- https://datahunter.org/apparmor:簡介了 AppArmor 用途
- https://bugs.launchpad.net/maria/+bug/876550: The default AppArmor profile in MariaDB for Ubuntu has been removed.