u1timate
Published on 2023-04-02 / 144 Visits
0

Mysql修改存储目录后出现apparmor="DENIED" operation="mknod"错误

在ubuntu22系统上将mysql的datadir属性修改为自定义的存储目录,重新启动mysql的时候出现以下错误

localhost kernel: [   10.363102] audit: type=1400 audit(1680406241.956:38): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/data/mysql/mysqld_tmp_file_case_insensitive_test.lower-test" pid=1317 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=115 ouid=115

出现这个问题是由于AppArmor安全策略(AppArmor - Ubuntu Wiki是一个对访问权限进行控制的内核应用)阻止MySQL访问新数据目录(/data/mysql)导致的。要解决此问题,您需要更新MySQL的AppArmor配置文件,以允许访问新数据目录。需要以下步骤操作:

  • 打开MySQL的AppArmor配置文件。通常,它位于/etc/apparmor.d/usr.sbin.mysqld。使用您喜欢的文本编辑器打开该文件,例如:

sudo vi /etc/apparmor.d/usr.sbin.mysqld
  • 在配置文件中找到如下行并在原有的内容基础上进行修改:

  
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
# 新添加的目录
/data/mysql/ r,
/data/mysql/** rwk,
  • 重新加载AppArmor配置

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
  • 最后重启mysql即可

systemctl restart mysql