Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  NDB File System Encryption Setup and Usage

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

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

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

    [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-密码 可以从文件、ttystdin 接受密码,--filesystem-密码-来自-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. [ndbd default] 部分的 config.ini 文件中,将 EncryptedFileSystem = OFF 设置为 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,这意味着对于这个集群,文件系统加密已经启用了。