文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9MB
PDF (A4) - 40.0MB
手册页 (TGZ) - 258.5KB
手册页 (Zip) - 365.5KB
信息 (Gzip) - 4.0MB
信息 (Zip) - 4.0MB


MySQL 8.4 参考手册  /  ...  /  NDB 文件系统加密的设置和使用

25.6.14.1 NDB 文件系统加密的设置和使用

文件系统加密:要启用先前未加密的文件系统的加密,需要执行以下步骤

  1. config.ini 文件的 [ndbd default] 部分中设置所需的数据节点参数,如下所示

    [ndbd default]
    EncryptedFileSystem= 1

    必须在所有数据节点上按所示设置这些参数。

  2. 使用 --initial--reload 选项启动管理服务器,使其读取更新后的配置文件。

  3. 对所有数据节点执行滚动初始启动(或重启)(请参阅 第 25.6.5 节,“执行 NDB 集群的滚动重启”):使用 --initial 启动每个数据节点;此外,为每个数据节点进程提供 --filesystem-password--filesystem-password-from-stdin 选项之一,以及一个密码。当您在命令行中提供密码时,会显示一条警告,类似于以下内容

    > ndbmtd -c 127.0.0.1 --filesystem-password=ndbsecret
    ndbmtd: [Warning] Using a password on the command line interface can be insecure.
    2022-08-22 16:17:58 [ndbd] INFO     -- Angel connected to '127.0.0.1:1186'
    2022-08-22 16:17:58 [ndbd] INFO     -- Angel allocated nodeid: 5

    --filesystem-password 可以接受来自文件、ttystdin 的密码;--filesystem-password-from-stdin 仅接受来自 stdin 的密码。后者可以防止密码在进程命令行或文件系统中泄露,并允许从另一个安全应用程序传递密码。

    您还可以将密码放在数据节点进程可以读取但系统其他用户无法读取的 my.cnf 文件中。使用与上一个示例相同的密码,文件的相关部分应如下所示

    [ndbd]
    
    filesystem-password=ndbsecret

    您还可以通过在 my.cnf 文件中使用 --filesystem-password-from-stdin 选项,提示启动数据节点进程的用户在启动时提供加密密码,如下所示

    [ndbd]
    
    filesystem-password-from-stdin

    在这种情况下,系统会在启动数据节点进程时提示用户输入密码,如下所示

    > ndbmtd -c 127.0.0.1
    Enter filesystem password: *********
    2022-08-22 16:36:00 [ndbd] INFO     -- Angel connected to '127.0.0.1:1186'
    2022-08-22 16:36:00 [ndbd] INFO     -- Angel allocated nodeid: 5
    >

    无论使用哪种方法,加密密码的格式都与加密备份所用的密码格式相同(请参阅 第 25.6.8.2 节,“使用 NDB 集群管理客户端创建备份”);必须在启动每个数据节点进程时提供密码;否则,数据节点进程将无法启动。数据节点日志中的以下消息指示了这一点

    > tail -n2 ndb_5_out.log
    2022-08-22 16:08:30 [ndbd] INFO     -- Data node configured to have encryption but password not provided
    2022-08-22 16:08:31 [ndbd] ALERT    -- Node 5: Forced node shutdown completed. Occurred during startphase 0.

    当按上述方式重启时,每个数据节点都会清除其磁盘上的状态,并以加密形式重建它。

文件系统密码轮换:要更新数据节点使用的加密密码,请执行数据节点的滚动初始重启,并在使用 --filesystem-password--filesystem-password-from-stdin 重启数据节点时提供新密码。

文件系统解密:要从加密的文件系统中删除加密,请执行以下操作

  1. config.ini 文件的 [ndbd default] 部分中,设置 EncryptedFileSystem = OFF

  2. 使用 --initial--reload 选项重启管理服务器。

  3. 执行数据节点的滚动初始重启。重启节点二进制文件时,请不要使用任何与密码相关的选项。

    重启时,每个数据节点都会清除其磁盘上的状态,并以未加密的形式重建它。

要查看文件系统加密是否配置正确,您可以对 ndbinfo config_valuesconfig_params 表使用类似于以下内容的查询

mysql> SELECT v.node_id AS Node, p.param_name AS Parameter, v.config_value AS Value
    ->    FROM ndbinfo.config_values v
    ->  JOIN ndbinfo.config_params p
    ->    ON v.config_param=p.param_number
    ->  WHERE p.param_name='EncryptedFileSystem';
+------+----------------------+-------+
| Node | Parameter            | Value |
+------+----------------------+-------+
|    5 | EncryptedFileSystem  | 1     |
|    6 | EncryptedFileSystem  | 1     |
|    7 | EncryptedFileSystem  | 1     |
|    8 | EncryptedFileSystem  | 1     |
+------+----------------------+-------+
4 rows in set (0.10 sec)

此处,所有数据节点上的 EncryptedFileSystem 均等于 1,这意味着已为此集群启用了文件系统加密。