对于 Rocky Linux 上的 MySQL 8.0.40,我的数据库目前使用 keyring 插件。我想迁移到 keyring 组件。它显示
[错误] [MY-013106] [服务器] 无法执行密钥环迁移:无法初始化目标密钥环。
我利用以下资源进行工作:
- https://dev.mysql.com/doc/refman/8.0/en/keyring-key-migration.html
- https://blogs.oracle.com/mysql/post/keyring-components
- https://bugs.mysql.com/bug.php?id=108197
我看到有人成功关闭了加密,但我想避免这种情况。
我创建了清单:/usr/sbin/mysqld.my。它包含:
{
"components": "file://component_keyring_file"
}
我检查了组件文件是否存在:
ls /usr/lib64/mysql/plugin/component_keyring_file.so #success
我创建了密钥环配置文件:**/usr/lib64/mysql/plugin/component_keyring_file.cnf**
。其内容如下:
{
"path": "/var/lib/mysql/mysql-keyring/component_keyring_file",
"read_only": false
}
我为密钥环文件创建了目录:
mkdir /var/lib/mysql/mysql-keyring
chown mysql:mysql /var/lib/mysql/mysql-keyring
之后,我停止了 mysqld 并尝试运行迁移服务器。我尝试了以下变化:
mysqld --user=mysql --defaults-file=/etc/my.cnf --keyring-migration-to-component --keyring-migration-source=keyring_file.so --keyring-migration-destination=component_keyring_file.so
mysqld --user=mysql --keyring-migration-to-component --keyring-migration-source=keyring_file.so --keyring-migration-destination=component_keyring_file.so
我理解迁移用户不能是root,所以用户是mysql。另外component_keyring_file不能在数据目录中。我尝试了两种路径:
/var/lib/mysql/mysql-keyring # dir for mysql files
/var/lib/mysql-keyring
我更新了 component_keyring_file.cnf 并确保 mysql 用户拥有该目录。
我无法从命令行运行迁移。它返回了类似以下错误:
我执行了以下步骤来删除 keyring_file 加密,然后启用组件 keyfile 加密。这个答案指导了我。
重启数据库,检查服务状态。
检查密钥环组件状态。
从 performance_schema.keyring_component_status 中选择*;
使用脚本在每个表上启用加密。
用于为数据库生成禁用加密语句的脚本。
用于为数据库生成启用加密语句的脚本。