我正在尝试在 MySQL 8.3 中设置表空间加密,并且可以激活该keyring-file
插件。然而,该插件会抛出一条弃用通知,建议迁移到 component_keyring_file
.我尝试将其设置为这样,但由于一般错误而失败,没有任何进一步提示我做错了什么。
组件 component_keyring_file 报告:“该组件未正确初始化。确保配置正确并使用 ALTER INSTANCE RELOAD KEYRING 重新初始化组件。
这里的专家是否成功地设置了插件,或者 - 是否有可能从 MySQL 获得更深入的错误,因为注释级别日志也没有帮助?我尝试查看此处和此处的官方文档,但无法找到我做错了什么。
Dockerfile:
FROM mysql:latest
RUN mkdir -p /var/lib/mysql-keyring/component_keyring_file
COPY ./conf/mysqld.my /usr/sbin/mysqld.my
COPY ./conf/component_keyring_file.cnf /usr/lib64/mysql/plugin/component_keyring_file.cnf
RUN /bin/bash -c 'chown root:mysql /usr/sbin/mysqld.my ; chmod 644 /usr/sbin/mysqld.my'
mysqld.my 文件:
{ "components": "file://component_keyring_file" }
component_keyring_file.cnf 文件
{"path": "/var/lib/mysql-keyring/component_keyring_file", "read_only": false }
docker-compose 文件
version: '3.8'
services:
mysql:
image: mysql:latest
build:
context: .
dockerfile: Dockerfile
container_name: mysql_test
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db1
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
作为一个正在研究如何自己设置这个的人,我也遇到了类似的问题。查看您的
Dockerfile
,您有以下命令:这会创建一个“component_keyring_file”目录,而它应该是一个文件。
您想将其更改为以下内容:
如果文件夹结构尚不存在,这将创建该文件夹结构,然后创建该文件。
一种更简单的方法可能是创建一个
docker-compose
脚本,该脚本仅将各种组件密钥环文件作为卷引用。大括号中的值要么被卷上文件的值替换,要么是环境变量 - 但这超出了 DBA 答案的范围!