Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

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 可以从文件、tty 或 stdin 接受密码;--filesystem-password-from-stdin 只接受来自 stdin 的密码。后者保护密码免受命令行或文件系统中的曝光,并允许从其他安全应用程序传递密码。

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

    [ndbd]
    
    filesystem-password=ndbsecret

    您也可以使用 --filesystem-password-from-stdin 选项在 my.cnf 文件中,而不是在命令行中提供密码,例如:

    [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

  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 在所有数据节点上,这意味着该集群启用了文件系统加密。