我试图在MySQL 5.7.18上安装密钥环插件 .
我编辑了my.ini文件 . 它是空白的,所以我添加了以下文本并重新启动了MySQL .
[mysqld]
early-plugin-load=keyring_file.dll
我运行以下命令来安装插件 .
mysql> install plugin keyring_file soname 'keyring_file.dll';
然后我运行以下sql来检查:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
-> FROM INFORMATION_SCHEMA.PLUGINS
-> WHERE PLUGIN_NAME LIKE 'keyring%';
+--------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+--------------+---------------+
| keyring_file | ACTIVE |
+--------------+---------------+
1 row in set (0.00 sec)
但是当我试图改变一个表来使用加密时,我遇到了错误 .
mysql> ALTER TABLE t1 ENCRYPTION='Y';
ERROR 3185 (HY000): Can't find master key from keyring, please check keyring
plugin is loaded.
我错过了某个地方吗?
3 回答
哈里特,做以下事情:
检查用户MySQL服务是否运行(例如,NETWORK SERVICE)
在C:/ Program Files / MySQL / MySQL Server 5.7中创建一个
keyring
文件夹明确授予密钥环文件夹的MySQL服务用户权限
默认情况下在Windows上使用keyring_file时,密钥环文件存储在C:/ Program Files / MySQL / MySQL Server 5.7 / keyring / keyring中(我通过在安装插件后运行
SHOW VARIABLES LIKE 'keyring%'
并确认其加载如你所述来确定) .右键单击C:/ Program Files / MySQL / MySQL Server 5.7中的密钥环文件夹后,单击属性 - >安全性,然后编辑 - >添加等 . 添加用户后,除了读取和执行外,还要检查“修改”,列出文件夹内容,读写 .
然后重新启动MySQL服务,您应该能够创建一个没有错误的加密表 .
注意:出于安全原因,您应该返回并删除您认为绝对不需要访问密钥环文件夹的所有用户/组(例如,本地计算机用户) . 在Unix上the docs建议单独使用mysql用户和组访问该文件夹 .
在Windows上你不需要这一行:mysql> install plugin keyring_file soname'keyring_file.dll';这是Linux的安装操作(也许你可能在Node下运行?)
但是要确保你有一个完整的MySql安装 - 我没有意识到有没有插件dll(和其他东西)的减少版本 . 并确保安装了keyring_udf.dll,并且还创建了UDF函数 .
mySql页面上关于所有这些的文档组织严密,难以理解 .
这是永远持续的任务之一..获得密钥设置,让一切运行 - 密钥文件加密 . 然后我使用ALTER TABLE mytable ENCRYPTION ='Y'但没有任何反应 .
我导出表和导出状态"ENCRYPTION='Y'"但是没有加密 . mysql日志中没有错误消息,没有 .
我在m本地MySQL实例上遇到了完全相同的问题,以下步骤帮助我解决了'加密无法找到主密钥,请检查密钥环插件是否已加载' . 问题 .
在
C:\Program Files\MySQL\MySQL Server 8.0
位置创建名为keyring
的文件夹 .授予修改对此文件夹的访问权限,因为MySQL需要读取文件夹并在文件夹中插入密钥环 .
还授予对Program Files内MySQL文件夹的修改权限 .
使用以下命令卸载现有已安装的密钥环插件 -
UNINSTALL PLUGIN keyring_file;
进行上述更改后重启MySQL服务器 .
使用以下命令检查密钥环插件是否已加载: -
它应该显示如下输出: -
我希望答案有所帮助 .