Ubuntu18.04 MySQLからMariaDBへの乗り換えで失敗

調べごとの過程でWordPressをインストールしたくなり、データーベースとしてMariaDBをインストールしようと考えた。
そこでミスしてMySQLをインストールしてしまい、MySQLをアンインストール。

さあ、MariaDBをインストール!と、ここではまってしまった。





インストールに異常に時間が掛かり、エラーが発生。おかしい…

/var/log/syslog
Jul 19 02:12:55 temp kernel: [ 1119.261583] audit: type=1400 audit(1595124775.551:28): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=4070 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=111 ouid=0

結論からすると、MySQLをインストールしたときにAppArmorが覚えたプロファイルを削除して解決。
openSUSE Leap ドキュメンテーション / 27.6 AppArmor プロファイルの削除

$ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
$ sudo rm usr.sbin.mysqld
$ sudo rm cache/usr.sbin.mysqld-*
$ sudo systemctl reload apparmor

 

やったこと

エラーログから、AppArmor的に何か問題を起こしちゃったことが判明。

探してみると、1つの解決方法が見つかる(=最終的にこれが解決方法)。
NaruseJunのメモ帳 / Ubuntuでmysql-serverをmariadb-serverで置き換えるとsystemd経由でmariadbが起動できない

$ sudo aa-remove-unknown
Removing '/usr/sbin/mysqld'
Removing 'docker-default'

確かにこれで起動する。

でもこれってどういうことだろう?AppArmorでプロファイルを削除するってことは、保護されないことを意味していると思うんだけど…。
パスで指定された実行ファイルを保護する機構なので。
openSUSE Leap ドキュメンテーション / 27.5 不要な AppArmor プロファイルの読み込み解除

MySQLはAppArmorでプログラムを保護しており、そのプロファイルを覚えた。
しかし、MariaDBはAppArmorで保護しないように設計されており、プロファイルが提供されず、空っぽになったはずのプロファイルは無視され、以前のMySQLのプロファイルで動こうとしてエラーが発生している、と思われた。(上の参照先でメモされている通り)

プロファイルを作ろうと思ったけれど、以前のやり方でエラーが発生して嫌になってしまい…
色々調べてみると、免責事項としてプロファイルを提供しないことが記載されているようだ。
ask ubuntu / MariaDB fails despite apparmor profile
ubuntu forums / Is there no MariaDB Apparmor profile anymore?

仕方がないので、プロファイルを削除し、起動するようにした。

さいごに

もうちょっと頑張ってプロファイルを作るのが正しい気がする。
でも、他にやりたいことがあるので、今日はここまで。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です