如何禁用 MySQL 的 AppArmor

如何禁用 MySQL 的 AppArmor

我已遵循说明这里设置 Galera 集群。说明说我需要禁用 appArmor:

禁用 AppArmor


默认情况下,某些服务器(例如 Ubuntu)包含 AppArmor,这可能会阻止 mysqld 打开其他端口或运行脚本。您必须禁用 AppArmor 或将其配置为允许 mysqld...

因此我按照说明执行了以下命令:

sudo ln -s /etc/apparmor.d/usr /etc/apparmor.d/disable/.sbin.mysqld
sudo service apparmor restart

我已经完成了集群配置。但我不确定我是否正确禁用了 AppArmor,因为当我运行时:

sudo aa-status

我得到:

... some more output here
2 processes have profiles defined.
1 processes are in enforce mode.
   /usr/sbin/mysqld (1938)
1 processes are in complain mode.
snap.amazon-ssm-agent.amazon-ssm-agent (1295)
0 processes are unconfined but have a profile defined.

我看到 mysqld 处于强制模式...这是什么意思?这是否意味着 AppArmor 已对 MySQL 禁用?是否可以完全禁用 AppArmor?

答案1

如果您在 20.04 中将密码存储在钥匙串中时收到错误,那就是 AppArmor 保护 snap 应用程序。

您可以在查看 MySQL Workbench 应用程序时单击 Ubuntu 软件中的“权限”来修复此问题。打开读/写密码权限。

答案2

AppArmor 限制是通过加载到内核的配置文件提供的,通常在启动时加载。AppArmor 配置文件可以处于两种模式之一:强制和投诉。在强制模式下加载的配置文件将导致强制执行配置文件中定义的策略,并报告策略违规尝试(通过 syslog 或 auditd)。投诉模式下的配置文件不会强制执行策略,而是报告策略违规尝试。

  • “这是什么意思?”;这意味着对 mysql 的 AppArmor 配置文件的限制将被执行

  • “可以禁用它吗?”;可以,如何禁用:

    sudo ln -s /etc/apparmor.d/{profile.name-here} /etc/apparmor.d/disable/    
    sudo apparmor_parser -R /etc/apparmor.d/{profile.name-name-here}
    

例子:

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

然后运行命令sudo aa-status查看mysql配置文件是否被加载。

重新启用:

sudo rm /etc/apparmor.d/disable/usr.sbin.mysqld
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
sudo aa-status

看:

https://www.cyberciti.biz/faq/ubuntu-linux-howto-disable-apparmor-commands/

https://wiki.ubuntu.com/AppArmor

https://help.ubuntu.com/community/AppArmor

相关内容