【问题标题】:install mysql keyring plugin安装 mysql 密钥环插件
【发布时间】:2017-12-11 20:02:36
【问题描述】:

我试图在 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.

我是不是在某个地方漏掉了一步?

【问题讨论】:

  • 你能分享更多细节吗 1)你在哪里找到了ini文件。 2)您是否单独下载了dll? (3) 运行 mysqld 抛出错误 ike "mysqld: Can't change dir to 'D:\Program Files\MySQL\MySQL Server 5.7\data\' (Errcode: 2 - No such file or directory)" (4) to得到 mysql> 提示你安装了 mysl shell 吗?我也想加密表格但卡住了......

标签: mysql encryption plugins


【解决方案1】:

哈里特,请执行以下操作:

  • 检查运行 MySQL 服务的用户(例如,NETWORK SERVICE)
  • 在 C:/Program Files/MySQL/MySQL Server 5.7 中创建一个keyring 文件夹
  • 显式授予 MySQL 服务用户对 keyring 文件夹的权限

默认情况下,在 Windows 上使用 keyring_file 时,密钥环文件存储在 C:/Program Files/MySQL/MySQL Server 5.7/keyring/keyring 中(我在安装插件并确认其加载为你描述的)。

在 C:/Program Files/MySQL/MySQL Server 5.7 中创建密钥环文件夹后,右键单击,然后单击属性 -> 安全,然后编辑 -> 添加等。添加用户后,请检查“修改”以及读取& 执行、列出文件夹内容、读写。

然后重启 MySQL 服务,应该可以创建加密表而不会出错。

注意:出于安全原因,您应该返回并删除您认为绝对不需要访问密钥环文件夹的所有用户/组(例如,本地计算机用户)。在 Unix 上 the docs 建议只有 mysql 用户和组才能访问该文件夹。

【讨论】:

  • 感谢您的信息。它在授予密钥环文件夹权限后工作。
  • 太好了!既然我的回答对你有用,你能不能“接受”这个答案是正确的?
  • @Harriet Xing 我有同样的问题。我已授予所有权限,但仍无法正常工作...
  • Shubham - 我有类似的问题 - 某处不应该有“keyring_file.dll”文件吗?我安装 Mysql 时没有安装它 - 但我们从哪里得到它?
  • 我的“C:\Program Files\MySQL\MySQL Server 5.7\lib\plugin”文件夹中有一个keyring_file.dll。在文件夹“C:\Program Files\MySQL\MySQL Server 5.7\keyring”中还有一个生成的密钥环文件。
【解决方案2】:

在 Windows 上,您不需要此行: mysql> 安装插件 keyring_file soname 'keyring_file.dll'; 这就是 Linux 的安装操作(如果在 Node 下运行,你可能会这样做?)

但请确保您已完整安装了 MySql - 我没有意识到有没有插件 dll(和其他东西)的精简版本。 并确保您已安装 keyring_udf.dll 并且您还创建了 UDF 函数。

mySql 页面上关于这一切的文档组织得很糟糕,难以理解。

这是永远持续的任务之一。设置好密钥,让一切运行起来——密钥文件被加密。 然后我使用 ALTER TABLE mytable ENCRYPTION='Y' 但没有任何反应。

我导出表并导出 states "ENCRYPTION='Y'" 但不,它没有加密。 mysql 日志中没有错误消息,什么都没有。

【讨论】:

    【解决方案3】:

    我在 m 本地 MySQL 实例上遇到了完全相同的问题,以下步骤帮助我解决了 “加密找不到主密钥,请检查密钥环插件是否已加载。”问题。

    • 在 my.ini 文件中添加以下行

      early-plugin-load=keyring_file.dll
      
    • C:\Program Files\MySQL\MySQL Server 8.0 位置创建一个名为keyring 的文件夹。

    • 授予对该文件夹的修改访问权限,因为 MySQL 需要读取该文件夹并在该文件夹中插入密钥环。
    • 还授予对 Program Files 中 MySQL 文件夹的修改访问权限。
    • 使用以下命令卸载现有已安装的密钥环插件 -
    • 卸载插件密钥环文件;
    • 进行上述更改后重新启动 MySQL 服务器。
    • 使用以下命令检查是否已加载密钥环插件:-

      show variables like '%keyring%';
      

    它应该显示这样的输出:-

    +--------------------+---------------------------------------------------------+
    | Variable_name      | Value                                                   |
    +--------------------+---------------------------------------------------------+
    | keyring_file_data  | C:/Program Files/MySQL/MySQL Server 8.0/keyring\keyring |
    | keyring_operations | ON                                                      |
    +--------------------+---------------------------------------------------------+
    2   rows in set (0.0024 sec)
    
    • 现在您应该可以使用此命令对您的表启用加密了:-

      ALTER TABLE city ENCRYPTION='Y';
      

    希望答案对你有帮助。

    【讨论】:

      【解决方案4】:

      检查“C:\Program Files\MySQL\MySQL Server 8.0”中的 my.ini 文件 如果不可用,请创建 my.ini 文件并添加以下行

      [mysqld]
      early-plugin-load=keyring_file.dll
      

      授予对“C:\Program Files\MYSQL”中MYSQL文件夹及其内部文件夹的读、写、执行、修改权限

      重启你的MYSQL80服务。

      重新启动服务后,您应该能够在默认位置看到“密钥环”文件

      C:\Program Files\MySQL\MySQL Server 8.0\keyring

      注意:密钥环文件将在密钥环文件夹中,即, C:\Program Files\MySQL\MySQL Server 8.0\keyring\keyring

      如果您没有找到该文件,请尝试重新启动您的系统。就我而言,重新启动系统后,我可以看到这些文件。

      现在打开mysql命令行并执行下面的命令

      install plugin keyring_file soname 'keyring_file.dll';
      

      结果: 查询正常,0 行受影响(0.03 秒)

      现在您可以运行以下命令来查看密钥环详细信息。

      SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'keyring%';
      

      结果: keyring_file_data C:/Program Files/MySQL/MySQL Server 8.0/keyring\keyring keyring_operations 开启

      现在使用加密创建您的表

      例如:

      CREATE TABLE dept (     deptno               int  NOT NULL 
      > AUTO_INCREMENT,   dname                varchar(20)    ,   loc           
      > varchar(20)    ,  CONSTRAINT pk_dept PRIMARY KEY ( deptno )  )
      > engine=InnoDB    ENCRYPTION = 'Y';
      

      【讨论】:

        猜你喜欢
        • 2021-08-01
        • 2019-08-17
        • 2022-11-11
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        相关资源
        最近更新 更多