文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  MySQL 企业版数据脱敏和去标识组件函数描述

8.5.2.4 MySQL 企业版数据脱敏和去标识组件函数描述

MySQL 企业版数据脱敏和去标识组件包含多个函数,可以将其归类为以下类别

数据脱敏组件函数

本节中的每个组件函数都会对其字符串参数执行脱敏操作,并返回脱敏后的结果。

  • mask_canada_sin(str [, mask_char])

    脱敏加拿大社会保险号码 (SIN),并将号码中所有有意义的数字替换为 'X' 字符。可以指定可选的脱敏字符。

    参数

    • str: 要脱敏的字符串。接受的格式为

      • 九位不分隔的数字。

      • 九位数字,以以下模式分组:xxx-xxx-xxx ('-' 是任何分隔符)。

      此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 'X'

    返回值

    脱敏后的加拿大 SIN,以 utf8mb4 字符集编码的字符串形式表示,如果参数长度不正确,则为错误,如果 str 格式不正确或包含多字节字符,则为 NULL

    示例

    mysql> SELECT mask_canada_sin('046-454-286'), mask_canada_sin('abcdefijk');
    +--------------------------------+------------------------------+
    | mask_canada_sin('046-454-286') | mask_canada_sin('abcdefijk') |
    +--------------------------------+------------------------------+
    | XXX-XXX-XXX                    | XXXXXXXXX                    |
    +--------------------------------+------------------------------+
    mysql> SELECT mask_canada_sin('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_canada_sin'; Argument 0 is too short.
    mysql> SELECT mask_canada_sin('046-454-286-909');
    ERROR 1123 (HY000): Can't initialize function 'mask_canada_sin'; Argument 0 is too long.
  • mask_iban(str [, mask_char])

    脱敏国际银行帐号 (IBAN),并将号码中除前两位字母 (表示国家/地区) 之外的所有字母替换为 '*' 字符。可以指定可选的脱敏字符。

    参数

    • str: 要脱敏的字符串。每个国家/地区可能具有不同的国家/地区路由或帐号编号系统,最小为 13 个字符,最大为 34 个字母数字 ASCII 字符。接受的格式为

      • 不分隔的字符。

      • 字符以四位一组进行分组,最后一组除外,并以空格或任何其他分隔符进行分隔 (例如:xxxx-xxxx-xxxx-xx)。

      此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 '*'

    返回值

    脱敏后的国际银行帐号,以 utf8mb4 字符集编码的字符串形式表示,如果参数长度不正确,则为错误,如果 str 格式不正确或包含多字节字符,则为 NULL

    示例

    mysql> SELECT mask_iban('IE12 BOFI 9000 0112 3456 78'), mask_iban('abcdefghijk');
    +------------------------------------------+--------------------------+
    | mask_iban('IE12 BOFI 9000 0112 3456 78') | mask_iban('abcdefghijk') |
    +------------------------------------------+--------------------------+
    | IE** **** **** **** **** **              | ab*********              |
    +------------------------------------------+--------------------------+
    mysql> SELECT mask_iban('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_iban'; Argument 0 is too short.
    mysql> SELECT mask_iban('IE12 BOFI 9000 0112 3456 78 IE12 BOFI 9000 0112 3456 78');
    ERROR 1123 (HY000): Can't initialize function 'mask_iban'; Argument 0 is too long.
  • mask_inner(str, margin1, margin2 [, mask_char])

    脱敏字符串的内部部分,保留两端不变,并返回结果。可以指定可选的脱敏字符。

    mask_inner 支持所有字符集。

    参数

    • str: 要脱敏的字符串。此参数将转换为 utf8mb4 字符集。

    • margin1: 一个非负整数,指定字符串左侧要保留未脱敏的字符数。如果值为 0,则没有左侧字符保留未脱敏。

    • margin2: 一个非负整数,指定字符串右侧保留未掩码的字符数。如果值为 0,则没有右侧字符保留未掩码。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 'X'

    返回值

    用与 str 相同的字符集编码的掩码字符串,或如果任一边距为负数则为错误。

    如果边距值的总和大于参数长度,则不会发生掩码,并返回未更改的参数。

    注意

    该函数针对单字节字符串(字节长度和字符长度相等)进行了优化,以实现更快的速度。例如,utf8mb4 字符集仅对 ASCII 字符使用一个字节,因此该函数将仅包含 ASCII 字符的字符串作为单字节字符字符串进行处理。

    示例

    mysql> SELECT mask_inner('abcdef', 1, 2), mask_inner('abcdef',0, 5);
    +----------------------------+---------------------------+
    | mask_inner('abcdef', 1, 2) | mask_inner('abcdef',0, 5) |
    +----------------------------+---------------------------+
    | aXXXef                     | Xbcdef                    |
    +----------------------------+---------------------------+
    mysql> SELECT mask_inner('abcdef', 1, 2, '*'), mask_inner('abcdef',0, 5, '#');
    +---------------------------------+--------------------------------+
    | mask_inner('abcdef', 1, 2, '*') | mask_inner('abcdef',0, 5, '#') |
    +---------------------------------+--------------------------------+
    | a***ef                          | #bcdef                         |
    +---------------------------------+--------------------------------+
  • mask_outer(str, margin1, margin2 [, mask_char])

    掩盖字符串的左右两端,保留内部未掩盖,并返回结果。可以指定可选的掩盖字符。

    mask_outer 支持所有字符集。

    参数

    • str: 要脱敏的字符串。此参数将转换为 utf8mb4 字符集。

    • margin1: 一个非负整数,指定字符串左侧要掩盖的字符数。如果值为 0,则不会掩盖任何左侧字符。

    • margin2: 一个非负整数,指定字符串右侧要掩盖的字符数。如果值为 0,则不会掩盖任何右侧字符。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 'X'

    返回值

    用与 str 相同的字符集编码的掩码字符串,或如果任一边距为负数则为错误。

    如果边距值的总和大于参数长度,则掩盖整个参数。

    注意

    该函数针对单字节字符串(字节长度和字符长度相等)进行了优化,以实现更快的速度。例如,utf8mb4 字符集仅对 ASCII 字符使用一个字节,因此该函数将仅包含 ASCII 字符的字符串作为单字节字符字符串进行处理。

    示例

    mysql> SELECT mask_outer('abcdef', 1, 2), mask_outer('abcdef',0, 5);
    +----------------------------+---------------------------+
    | mask_outer('abcdef', 1, 2) | mask_outer('abcdef',0, 5) |
    +----------------------------+---------------------------+
    | XbcdXX                     | aXXXXX                    |
    +----------------------------+---------------------------+
    mysql> SELECT mask_outer('abcdef', 1, 2, '*'), mask_outer('abcdef',0, 5, '#');
    +---------------------------------+--------------------------------+
    | mask_outer('abcdef', 1, 2, '*') | mask_outer('abcdef',0, 5, '#') |
    +---------------------------------+--------------------------------+
    | *bcd**                          | a#####                         |
    +---------------------------------+--------------------------------+
  • mask_pan(str [, mask_char])

    掩盖支付卡主账号 (PAN) 并返回该号码,其中除了最后四位数字以外的所有数字都被替换为 'X' 字符。可以指定可选的掩盖字符。

    参数

    • str: 要掩盖的字符串。该字符串必须包含至少 14 个字符和最多 19 个字母数字字符。此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 'X'

    返回值

    utf8mb4 字符集编码的掩盖支付号码字符串,如果参数不是正确的长度则为错误,或者如果 str 格式不正确或包含多字节字符则为 NULL

    示例

    mysql> SELECT mask_pan(gen_rnd_pan());
    +-------------------------+
    | mask_pan(gen_rnd_pan()) |
    +-------------------------+
    | XXXXXXXXXXXX9102        |
    +-------------------------+
    mysql> SELECT mask_pan(gen_rnd_pan(19));
    +---------------------------+
    | mask_pan(gen_rnd_pan(19)) |
    +---------------------------+
    | XXXXXXXXXXXXXXX8268       |
    +---------------------------+
    mysql> SELECT mask_pan('a*Z');
    ERROR 1123 (HY000): Can't initialize function 'mask_pan'; Argument 0 is too short.
  • mask_pan_relaxed(str)

    掩盖支付卡主账号,并将该号码返回,其中除了前六位数字和最后四位数字以外的所有数字都被替换为 'X' 字符。前六位数字表示支付卡发行机构。可以指定可选的掩盖字符。

    参数

    • str: 要掩盖的字符串。该字符串必须适合主账号的长度,但不会以其他方式进行检查。此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 'X'

    返回值

    utf8mb4 字符集编码的掩盖支付号码字符串,如果参数不是正确的长度则为错误,或者如果 str 格式不正确或包含多字节字符则为 NULL

    示例

    mysql> SELECT mask_pan_relaxed(gen_rnd_pan());
    +---------------------------------+
    | mask_pan_relaxed(gen_rnd_pan()) |
    +---------------------------------+
    | 551279XXXXXX3108                |
    +---------------------------------+
    mysql> SELECT mask_pan_relaxed(gen_rnd_pan(19));
    +-----------------------------------+
    | mask_pan_relaxed(gen_rnd_pan(19)) |
    +-----------------------------------+
    | 462634XXXXXXXXX6739               |
    +-----------------------------------+
    mysql> SELECT mask_pan_relaxed('a*Z');
    ERROR 1123 (HY000): Can't initialize function 'mask_pan_relaxed'; Argument 0 is too short.
  • mask_ssn(str [, mask_char])

    掩盖美国社会安全号码 (SSN),并将该号码返回,其中除了最后四位数字以外的所有数字都被替换为 '*' 字符。可以指定可选的掩盖字符。

    参数

    • str: 要脱敏的字符串。接受的格式为

      • 九位不分隔的数字。

      • 九位数字,按模式分组:xxx-xx-xxxx ('-' 是任何分隔符)。

      此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 '*'

    返回值

    utf8mb4 字符集编码的掩盖社会安全号码字符串,如果参数不是正确的长度则为错误,或者如果 str 格式不正确或包含多字节字符则为 NULL

    示例

    mysql> SELECT mask_ssn('909-63-6922'), mask_ssn('cdefghijk');
    +-------------------------+-------------------------+
    | mask_ssn('909-63-6922') | mask_ssn('cdefghijk')   |
    +-------------------------+-------------------------+
    | ***-**-6922             | *******hijk             |
    +-------------------------+-------------------------+
    mysql> SELECT mask_ssn('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_ssn'; Argument 0 is too short.
    mysql> SELECT mask_ssn('123456789123456789');
    ERROR 1123 (HY000): Can't initialize function 'mask_ssn'; Argument 0 is too long.
  • mask_uk_nin(str [, mask_char])

    掩盖英国国家保险号码 (UK NIN),并将该号码返回,其中除了前两位数字以外的所有数字都被替换为 '*' 字符。可以指定可选的掩盖字符。

    参数

    • str: 要脱敏的字符串。接受的格式为

      • 九位不分隔的数字。

      • 九位数字,按模式分组:xxx-xx-xxxx ('-' 是任何分隔符)。

      • 九位数字,按模式分组:xx-xxxxxx-x ('-' 是任何分隔符)。

      此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 '*'

    返回值

    utf8mb4 字符集编码的掩盖 UK NIN 字符串,如果参数不是正确的长度则为错误,或者如果 str 格式不正确或包含多字节字符则为 NULL

    示例

    mysql> SELECT mask_uk_nin('QQ 12 34 56 C'), mask_uk_nin('abcdefghi');
    +------------------------------+--------------------------+
    | mask_uk_nin('QQ 12 34 56 C') | mask_uk_nin('abcdefghi') |
    +------------------------------+--------------------------+
    | QQ ** ** ** *                | ab*******                |
    +------------------------------+--------------------------+
    mysql> SELECT mask_uk_nin('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_uk_nin'; Argument 0 is too short.
    mysql> SELECT mask_uk_nin('abcdefghijk');
    ERROR 1123 (HY000): Can't initialize function 'mask_uk_nin'; Argument 0 is too long.
  • mask_uuid(str [, mask_char])

    掩盖通用唯一识别码 (UUID),并将该号码返回,其中所有有意义的字符都被替换为 '*' 字符。可以指定可选的掩盖字符。

    参数

    • str: 要掩盖的字符串。接受的格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中 'X' 是任何数字,'-' 是任何分隔符。此参数将转换为 utf8mb4 字符集。

    • mask_char: (可选) 用于脱敏的单个字符。如果未指定 mask_char,则默认值为 '*'

    返回值

    utf8mb4 字符集编码的掩盖 UUID 字符串,如果参数不是正确的长度则为错误,或者如果 str 格式不正确或包含多字节字符则为 NULL

    示例

    mysql> SELECT mask_uuid(gen_rnd_uuid());
    +--------------------------------------+
    | mask_uuid(gen_rnd_uuid())            |
    +--------------------------------------+
    | ********-****-****-****-************ |
    +--------------------------------------+
    mysql> SELECT mask_uuid('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_uuid'; Argument 0 is too short.
    mysql> SELECT mask_uuid('123e4567-e89b-12d3-a456-426614174000-123e4567-e89b-12d3');
    ERROR 1123 (HY000): Can't initialize function 'mask_uuid'; Argument 0 is too long.
随机数据生成组件函数

本节中的组件函数为不同类型的数据生成随机值。只要有可能,生成的值就会具有为演示或测试值保留的特性,以避免将它们误认为合法数据。例如,gen_rnd_us_phone() 返回一个使用 555 区号的美国电话号码,该区号没有分配给实际使用的电话号码。各个函数描述将描述此原则的任何例外情况。

  • gen_range(lower, upper)

    生成从指定范围内选择的随机数。

    参数

    • lower: 一个整数,指定范围的下限。

    • upper: 一个整数,指定范围的上限,该上限不得小于下限。

    返回值

    一个随机整数(以 utf8mb4 字符集编码),介于 lowerupper 之间(含),或者如果 upper 参数小于 lower 则为 NULL

    注意

    为了获得更高质量的随机值,请使用 RAND() 而不是此函数。

    示例

    mysql> SELECT gen_range(100, 200), gen_range(-1000, -800);
    +---------------------+------------------------+
    | gen_range(100, 200) | gen_range(-1000, -800) |
    +---------------------+------------------------+
    |                 177 |                   -917 |
    +---------------------+------------------------+
    mysql> SELECT gen_range(1, 0);
    +-----------------+
    | gen_range(1, 0) |
    +-----------------+
    |            NULL |
    +-----------------+
  • gen_rnd_canada_sin()

    AAA-BBB-CCC 格式生成一个随机的加拿大社会保险号码 (SIN)。生成的号码通过了Luhn校验算法,该算法确保了该号码的一致性。

    警告

    gen_rnd_canada_sin() 返回的值仅应用于测试目的,不适合发布。无法保证给定返回值未分配给合法的加拿大 SIN。如果需要发布 gen_rnd_canada_sin() 结果,请考虑使用 mask_canada_sin() 对其进行掩盖。

    参数

    无。

    返回值

    一个以 utf8mb4 字符集编码的随机加拿大 SIN 字符串。

    示例

    mysql> SELECT gen_rnd_canada_sin();
    +----------------------+
    | gen_rnd_canada_sin() |
    +----------------------+
    | 046-454-286          |
    +----------------------+
  • gen_rnd_email(name_size, surname_size, domain)

    random_name.random_surname@domain 的形式生成一个随机的电子邮件地址。

    参数

    • name_size: (可选)一个整数,指定地址名称部分的字符数。如果未给出 name_size,则默认为五。

    • surname_size: (可选)一个整数,指定地址姓氏部分的字符数。如果未给出 surname_size,则默认为七。

    • domain: (可选)一个字符串,指定地址的域部分。如果未给出 domain,则默认为 example.com

    返回值

    一个以 utf8mb4 字符集编码的随机电子邮件地址字符串。

    示例

    mysql> SELECT gen_rnd_email(name_size = 4, surname_size = 5, domain = 'mynet.com');
    +----------------------------------------------------------------------+
    | gen_rnd_email(name_size = 4, surname_size = 5, domain = 'mynet.com') |
    +----------------------------------------------------------------------+
    | [email protected]                                                 |
    +----------------------------------------------------------------------+
    mysql> SELECT gen_rnd_email();
    +---------------------------+
    | gen_rnd_email()           |
    +---------------------------+
    | [email protected] |
    +---------------------------+
  • gen_rnd_iban([country, size])

    AAAA BBBB CCCC DDDD 格式生成一个随机的国际银行账户号码 (IBAN)。生成的字符串以两位国家代码开头,两位根据 IBAN 规范计算的校验位以及随机的字母数字字符(直到达到所需的长度)。

    警告

    gen_rnd_iban() 返回的值仅应用于测试目的,如果与有效的国家代码一起使用,则不适合发布。无法保证给定返回值未分配给合法的银行账户。如果需要发布 gen_rnd_iban() 结果,请考虑使用 mask_iban() 对其进行掩盖。

    参数

    • country: (可选)两位国家代码;默认值为 ZZ

    • size: (可选)有意义的字符数;默认值为 16,最小值为 15,最大值为 34

    返回值

    一个以 utf8mb4 字符集编码的随机 IBAN 字符串。

    示例

    mysql> SELECT gen_rnd_iban();
    +-----------------------------+
    | gen_rnd_iban()              |
    +-----------------------------+
    | ZZ79 3K2J WNH9 1V0DI        |
    +-----------------------------+
  • gen_rnd_pan([size])

    生成一个随机的支付卡主账号。该号码通过了Luhn校验(一种针对校验位执行校验和验证的算法)。

    警告

    gen_rnd_pan() 返回的值仅应用于测试目的,不适合发布。无法保证给定返回值未分配给合法的支付账户。如果需要发布 gen_rnd_pan() 结果,请考虑使用 mask_pan()mask_pan_relaxed() 对其进行掩盖。

    参数

    • size: (可选)一个整数,指定结果的大小。如果未给出 size,则默认为 16。如果给出,size 必须是介于 12 到 19 之间的整数。

    返回值

    一个随机支付号码字符串,或者如果给出的 size 参数超出了允许范围则为错误。

    示例

    mysql> SELECT mask_pan(gen_rnd_pan());
    +-------------------------+
    | mask_pan(gen_rnd_pan()) |
    +-------------------------+
    | XXXXXXXXXXXX5805        |
    +-------------------------+
    mysql> SELECT mask_pan(gen_rnd_pan(19));
    +---------------------------+
    | mask_pan(gen_rnd_pan(19)) |
    +---------------------------+
    | XXXXXXXXXXXXXXX5067       |
    +---------------------------+
    mysql> SELECT mask_pan_relaxed(gen_rnd_pan());
    +---------------------------------+
    | mask_pan_relaxed(gen_rnd_pan()) |
    +---------------------------------+
    | 398403XXXXXX9547                |
    +---------------------------------+
    mysql> SELECT mask_pan_relaxed(gen_rnd_pan(19));
    +-----------------------------------+
    | mask_pan_relaxed(gen_rnd_pan(19)) |
    +-----------------------------------+
    | 578416XXXXXXXXX6509               |
    +-----------------------------------+
    mysql> SELECT gen_rnd_pan(20);
    ERROR 1123 (HY000): Can't initialize function 'gen_rnd_pan'; Minimal value of argument 0 is 14.
  • gen_rnd_ssn()

    AAA-BB-CCCC 格式生成一个随机的美国社会安全号码。 AAA 部分大于 900,这是合法社会安全号码中不使用的特性。

    参数

    无。

    返回值

    一个以 utf8mb4 字符集编码的随机社会安全号码字符串。

    示例

    mysql> SELECT gen_rnd_ssn();
    +---------------+
    | gen_rnd_ssn() |
    +---------------+
    | 951-26-0058   |
    +---------------+
  • gen_rnd_uk_nin()

    生成一个九位随机的英国国民保险号码(UK NIN)。NIN 由两个字符的前缀(从有效前缀集中随机选择)、六个随机数字和一个字符的后缀(从有效后缀集中随机选择)组成。

    警告

    gen_rnd_uk_nin() 返回的值仅供测试使用,不适合发布。无法保证给定返回值没有被分配给合法的 NIN。如果需要发布 gen_rnd_uk_nin() 的结果,请考虑使用 mask_uk_nin() 对其进行掩盖。

    参数

    无。

    返回值

    一个随机的 UK NIN,以字符串形式存储在 utf8mb4 字符集中。

    示例

    mysql> SELECT gen_rnd_uk_nin();
    +----------------------+
    | gen_rnd_uk_nin()     |
    +----------------------+
    | QQ123456C            |
    +----------------------+
  • gen_rnd_us_phone()

    生成一个随机的美国电话号码,格式为 1-555-AAA-BBBB。555 区号不用于合法的电话号码。

    参数

    无。

    返回值

    一个随机的美国电话号码,以字符串形式存储在 utf8mb4 字符集中。

    示例

    mysql> SELECT gen_rnd_us_phone();
    +--------------------+
    | gen_rnd_us_phone() |
    +--------------------+
    | 1-555-682-5423     |
    +--------------------+
  • gen_rnd_uuid()

    生成一个随机的通用唯一标识符(UUID),并用连字符进行分隔。

    参数

    无。

    返回值

    一个随机的 UUID,以字符串形式存储在 utf8mb4 字符集中。

    示例

    mysql> SELECT gen_rnd_uuid();
    +--------------------------------------+
    | gen_rnd_uuid()                       |
    +--------------------------------------+
    | 123e4567-e89b-12d3-a456-426614174000 |
    +--------------------------------------+
字典掩盖管理组件函数

本节中的组件函数操作术语字典并执行基于它们的管理掩盖操作。所有这些函数都需要 MASKING_DICTIONARIES_ADMIN 权限。

当创建术语字典时,它会成为字典注册表的一部分,并被分配一个名称供其他字典函数使用。

  • masking_dictionaries_flush()

    将数据从掩盖字典表刷新到内存缓存中。需要 MASKING_DICTIONARIES_ADMIN 权限。

  • masking_dictionary_remove(dictionary_name)

    从字典注册表中删除一个字典及其所有术语。此函数需要 MASKING_DICTIONARIES_ADMIN 权限。

    参数

    • dictionary_name: 一个字符串,指定要从字典表中删除的字典的名称。此参数将转换为 utf8mb4 字符集。

    返回值

    一个字符串,指示删除操作是否成功。 1 表示成功。 NULL 表示未找到字典名称。

    示例

    mysql> SELECT masking_dictionary_remove('mydict');
    +-------------------------------------+
    | masking_dictionary_remove('mydict') |
    +-------------------------------------+
    |                                   1 |
    +-------------------------------------+
    mysql> SELECT masking_dictionary_remove('no-such-dict');
    +-------------------------------------------+
    | masking_dictionary_remove('no-such-dict') |
    +-------------------------------------------+
    |                                      NULL |
    +-------------------------------------------+
  • masking_dictionary_term_add(dictionary_name, term_name)

    将一个术语添加到命名的字典中。此函数需要 MASKING_DICTIONARIES_ADMIN 权限。

    重要

    字典及其术语会持久化到 mysql 架构中的一个表。如果用户执行 gen_dictionary() 多次,则字典中的所有术语都可供任何用户帐户访问。避免将敏感信息添加到字典中。

    每个术语都由一个命名字典定义。 masking_dictionary_term_add() 允许您一次添加一个字典术语。

    参数

    • dictionary_name: 一个字符串,提供字典的名称。此参数将转换为 utf8mb4 字符集。

    • term_name: 一个字符串,指定字典表中的术语名称。此参数将转换为 utf8mb4 字符集。

    返回值

    一个字符串,指示添加术语操作是否成功。 1 表示成功。 NULL 表示失败。添加术语失败可能由于多种原因导致,包括

    • 已添加了具有给定名称的术语。

    • 未找到字典名称。

    示例

    mysql> SELECT masking_dictionary_term_add('mydict','newterm');
    +-------------------------------------------------+
    | masking_dictionary_term_add('mydict','newterm') |
    +-------------------------------------------------+
    |                                               1 |
    +-------------------------------------------------+
    mysql> SELECT masking_dictionary_term_add('mydict','');
    +------------------------------------------+
    | masking_dictionary_term_add('mydict','') |
    +------------------------------------------+
    |                                     NULL |
    +------------------------------------------+
  • masking_dictionary_term_remove(dictionary_name, term_name)

    从命名的字典中删除一个术语。此函数需要 MASKING_DICTIONARIES_ADMIN 权限。

    参数

    • dictionary_name: 一个字符串,提供字典的名称。此参数将转换为 utf8mb4 字符集。

    • term_name: 一个字符串,指定字典表中的术语名称。此参数将转换为 utf8mb4 字符集。

    返回值

    一个字符串,指示删除术语操作是否成功。 1 表示成功。 NULL 表示失败。删除术语失败可能由于多种原因导致,包括

    • 未找到具有给定名称的术语。

    • 未找到字典名称。

    示例

    mysql> SELECT masking_dictionary_term_add('mydict','newterm');
    +-------------------------------------------------+
    | masking_dictionary_term_add('mydict','newterm') |
    +-------------------------------------------------+
    |                                               1 |
    +-------------------------------------------------+
    mysql> SELECT masking_dictionary_term_remove('mydict','');
    +---------------------------------------------+
    | masking_dictionary_term_remove('mydict','') |
    +---------------------------------------------+
    |                                        NULL |
    +---------------------------------------------+
字典生成组件函数

本节中的组件函数操作术语字典并执行基于它们的生成操作。

当创建术语字典时,它会成为字典注册表的一部分,并被分配一个名称供其他字典函数使用。

  • gen_blocklist(str, from_dictionary_name, to_dictionary_name)

    用第二个字典中的一个术语替换一个字典中存在的术语,并返回替换术语。这通过替换来掩盖原始术语。

    参数

    • term: 一个字符串,指示要替换的术语。此参数将转换为 utf8mb4 字符集。

    • from_dictionary_name: 一个字符串,指定包含要替换的术语的字典的名称。此参数将转换为 utf8mb4 字符集。

    • to_dictionary_name: 一个字符串,指定要从中选择替换术语的字典的名称。此参数将转换为 utf8mb4 字符集。

    返回值

    一个字符串,以 utf8mb4 字符集编码,从 to_dictionary_name 中随机选择,作为 term 的替换项,或者如果它未出现在 from_dictionary_name 中则为 term,或者如果任一字典名称不在字典注册表中则为错误。

    注意

    如果要替换的术语同时出现在两个字典中,则返回值可能与该术语相同。

    示例

    mysql> SELECT gen_blocklist('Berlin', 'DE_Cities', 'US_Cities');
    +---------------------------------------------------+
    | gen_blocklist('Berlin', 'DE_Cities', 'US_Cities') |
    +---------------------------------------------------+
    | Phoenix                                           |
    +---------------------------------------------------+
  • gen_dictionary(dictionary_name)

    从字典中返回一个随机术语。

    参数

    • dictionary_name: 一个字符串,指定要从中选择术语的字典的名称。此参数将转换为 utf8mb4 字符集。

    返回值

    字典中的一个随机术语,以 utf8mb4 字符集编码的字符串形式,或者如果字典名称不在字典注册表中,则为 NULL

    示例

    mysql> SELECT gen_dictionary('mydict');
    +--------------------------+
    | gen_dictionary('mydict') |
    +--------------------------+
    | My term                  |
    +--------------------------+
    mysql> SELECT gen_dictionary('no-such-dict');
    ERROR 1123 (HY000): Can't initialize function 'gen_dictionary'; Cannot access 
    dictionary, check if dictionary name is valid.