MySQL 密钥环组件配置

MySQL 密钥环组件配置

我遇到了与用户 nerdgeekdork 在此处描述的完全相同的问题:

MySQL 密钥环组件(不是插件)在服务器启动时未加载

我尝试按照 mySQL 文档中所述以相同的方式设置组件:

https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html

https://dev.mysql.com/doc/refman/8.0/en/keyring-component-installation.html

https://dev.mysql.com/doc/refman/8.0/en/keyring-file-component.html

概括起来,已建立以下内容:

mysqld.my/usr/sbin/使用创建的文件root:mysql 0640

该文件包含以下内容:

{
  "components": "file://component_keyring_file"
}

然后我有包含的/usr/lib/mysql/plugin文件component_keyring_file.cnfroot:mysql 0640

{
  "path": "/usr/local/mysql/keyring/component_keyring_file",
  "read_only": false
}

最后,其中有/usr/local/mysql/keyring/一个文件。component_keyring_fileroot:mysql 0660

重新启动 mySQL 并以 root 身份登录 mySQL 命令行后,问题SELECT * FROM performance_schema.keyring_component_status;我得到一个空集。

这些是 Ubuntu 和 mySQL 的版本:

Ubuntu 20.04.4 LTS
mysql  Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))

任何帮助均感激不尽。

答案1

它是 AppArmor!

MySQL 有一个处于活动状态的 AppArmor 强制配置文件,该配置文件阻止 MySQL 对 component_keyring_file 进行更改,因为它不在默认 MySQL AppArmor 配置文件使用的默认位置“/var/lib/mysql-keyring/”。

最初作为故障排除的一部分,通过将 MySQL 配置文件设置为投诉(sudo aa-complain /usr/sbin/mysqld)解决了此问题。最终的解决方案是更新 MySQL 配置文件以使用我指定的路径,然后加载该路径,例如 cat /etc/apparmor.d/usr.sbin.mysqld | sudo apparmor_parser -a。

相关内容