UbuntuでMySQLのdata_dirを移動した時にPermission denied


前提:Ubuntu18.04でMySQL8.0.15を使っていた時の話です。

NVMeのSSDを遅ればせながら手に入れたので、
では、MySQLのデータ領域もそこに移そうかなーと思って移動したところ、
思わぬところでハマりました。

データを移動してMySQLを再起動するとPermission denied.
ファイルの権限を書き換えて再起動してもやはりエラーは変わらずで首を捻っていたところ
どうやらMySQLにはファイル自体のPermissionの他にも、
「どのデータをどこに置くか」を設定するファイルがあるみたいです。

そのファイルはこれ↓

/etc/apparmor.d/usr.sbin.mysqld
# Allow data dir access
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,

このファイルのこの部分に書かれている場所にしかデータ領域を置くことができないみたいです。
my.cnfでdata_dirで指定できるのは場所だけみたいですね。。。わかりづらい。

そのため、以下のように新しいデータ領域の場所を追記してあげたら再起動できました。

/etc/apparmor.d/usr.sbin.mysqld
# Allow data dir access
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /mnt/nvme1/mysql/ r,
  /mnt/nvme1/mysql/** rwk,

もちろん、古い設定の方は紛らわしいので削除してしまっても大丈夫です。
指定できるのが1個だけじゃないよってことを書きたかっただけなので。

ちなみに、NVMe領域に乗せても速さを実感できなかったので結局OSを入れ直しました。

(´・ω・`)ではー