10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/.../ MySQL企业数据屏蔽和去识别功能描述

6.5.5 MySQL企业数据屏蔽和去识别功能介绍

MySQL企业数据屏蔽和去识别插件库包含几个函数,可以分为以下几类:

从MySQL 8.0.19开始,这些函数支持单字节latin1字符串参数和返回值的字符集。在MySQL 8.0.19之前,函数将字符串参数视为二进制字符串(这意味着它们不区分大小写),字符串返回值是二进制字符串。你可以看到返回值字符集的区别如下:

MySQL 8.0.19及更高版本:

mysql >选择字符集(gen_rnd_email ());+--------------------------+ | 字符集(gen_rnd_email ()) | +--------------------------+ | latin1  | +--------------------------+

在MySQL 8.0.19之前:

mysql >选择字符集(gen_rnd_email ());+--------------------------+ | 字符集(gen_rnd_email ()) | +--------------------------+ | 二进制  | +--------------------------+

对于任何版本,如果字符串返回值应该是不同的字符集,则转换它。的结果,下面的示例演示如何转换gen_rnd_email ()utf8mb4字符集:

SET @email = CONVERT(gen_rnd_email() USING utf8mb4);

要显式生成一个二进制字符串(例如,要生成一个类似于MySQL 8.0.19之前版本的结果),请执行以下操作:

SET @email = CONVERT(gen_rnd_email() USING binary);

也可能需要转换字符串参数,如中所示使用屏蔽数据进行客户识别

如果从内部调用MySQL企业数据屏蔽和去识别功能mysql的值,二进制字符串结果使用十六进制表示法显示——binary-as-hex.有关该选项的更多信息,请参见第4.5.1节,mysql命令行客户端

数据屏蔽功能

本节中的每个函数都对其字符串参数执行屏蔽操作并返回屏蔽结果。

  • mask_inner (strmargin1margin2(,mask_char])

    隐藏字符串的内部部分,保持末尾不变,并返回结果。可以指定一个可选的屏蔽字符。

    参数:

    • str:要掩码的字符串。

    • margin1:一个非负整数,指定字符串左端保持不掩码的字符数。如果该值为0,则表示没有左端字符不被屏蔽。

    • margin2:一个非负整数,指定字符串右端保持不掩码的字符数。如果该值为0,表示没有右端字符不被屏蔽。

    • mask_char:(可选)用于屏蔽的单个字符。默认值是“X”如果mask_char不是。

      屏蔽字符必须是单字节字符。尝试使用多字节字符会产生错误。

    返回值:

    掩码字符串,或者如果任何一个边距为负。

    如果边距值的总和大于参数长度,则不会发生屏蔽,并原封不动地返回参数。

    例子:

    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 >选择mask_inner(六边形abcdef, 1, 2,‘*’),mask_inner(六边形abcdef, 0 5 ' # ');+---------------------------------+--------------------------------+ | mask_inner('六边形abcdef ', 1, 2,‘*’)| mask_inner(的六边形abcdef 0 5 , '#') | +---------------------------------+--------------------------------+ | 一个* * * ef | # bcdef  | +---------------------------------+--------------------------------+
  • mask_outer (strmargin1margin2(,mask_char])

    掩码字符串的左右两端,不掩码内部,并返回结果。可以指定一个可选的屏蔽字符。

    参数:

    • str:要掩码的字符串。

    • margin1:非负整数,指定要掩码的字符串左端字符数。如果该值为0,表示不屏蔽左端字符。

    • margin2:非负整数,指定要掩码的字符串右端字符数。如果该值为0,表示不屏蔽右端字符。

    • mask_char:(可选)用于屏蔽的单个字符。默认值是“X”如果mask_char不是。

      屏蔽字符必须是单字节字符。尝试使用多字节字符会产生错误。

    返回值:

    掩码字符串,或者如果任何一个边距为负。

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

    例子:

    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 >选择mask_outer(六边形abcdef, 1, 2,‘*’),mask_outer(六边形abcdef, 0 5 ' # ');+---------------------------------+--------------------------------+ | mask_outer('六边形abcdef ', 1, 2,‘*’)| mask_outer(的六边形abcdef 0 5 , '#') | +---------------------------------+--------------------------------+ | * bcd * * | ##### | +---------------------------------+--------------------------------+
  • mask_pan (str

    屏蔽支付卡的“主账号”并返回该号码,除后四位数字外,其余均替换为“X”字符。

    参数:

    • str:要掩码的字符串。该字符串必须是主帐户号码的合适长度,但不进行其他检查。

    返回值:

    掩码支付号码为字符串。如果参数比要求的短,则原样返回。

    例子:

    mysql >选择mask_pan (gen_rnd_pan ());+-------------------------+ | mask_pan (gen_rnd_pan ()) | +-------------------------+ | XXXXXXXXXXXX9102  | +-------------------------+ mysql >选择mask_pan (gen_rnd_pan (19));+---------------------------+ | mask_pan (gen_rnd_pan (19 )) | +---------------------------+ | XXXXXXXXXXXXXXX8268  | +---------------------------+ mysql >选择mask_pan(“a * Z”);+-----------------+ | mask_pan(“* Z ') | +-----------------+ | * Z  | +-----------------+
  • mask_pan_relaxed (str

    屏蔽支付卡的“主账号”并返回该号码,除前6位和后4位外,其余均替换为“X”字符。前6位数字表示支付卡发行人。

    参数:

    • str:要掩码的字符串。该字符串必须是主帐户号码的合适长度,但不进行其他检查。

    返回值:

    掩码支付号码为字符串。如果参数比要求的短,则原样返回。

    例子:

    mysql >选择mask_pan_relaxed (gen_rnd_pan ());+---------------------------------+ | mask_pan_relaxed (gen_rnd_pan ()) | +---------------------------------+ | 551279 xxxxxx3108  | +---------------------------------+ mysql >选择mask_pan_relaxed (gen_rnd_pan (19));+-----------------------------------+ | mask_pan_relaxed (gen_rnd_pan (19 )) | +-----------------------------------+ | 462634 xxxxxxxxx6739  | +-----------------------------------+ mysql >选择mask_pan_relaxed(“a * Z”);+-------------------------+ | mask_pan_relaxed(“* Z ') | +-------------------------+ | * Z  | +-------------------------+
  • mask_ssn (str

    掩盖美国社会安全号码并返回该号码,除后4位外,其余均替换为“X”字符。

    参数:

    • str:要掩码的字符串。该字符串必须为11个字符,但不进行其他检查。

    返回值:

    以字符串形式隐藏的社会安全号码,或者如果参数不是正确的长度。

    例子:

    mysql> SELECT mask_ssn('909-63-6922'), mask_ssn('abcdefghijk');+-------------------------+-------------------------+ | mask_ssn (909-63-6922) | mask_ssn(“abcdefghijk ') | +-------------------------+-------------------------+ | xxx - xx - 6922 | XXX-XX-hijk  | +-------------------------+-------------------------+ mysql >选择mask_ssn (' 909 ');+-----------------+ | mask_ssn (909 ') | +-----------------+ | 零  | +-----------------+

随机数据生成函数

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

  • gen_range (较低的

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

    参数:

    • 较低的:指定范围下限的整数。

    • :指定范围的上边界的整数,该范围的上边界不能小于下边界。

    返回值:

    的范围内的随机整数较低的、包容、如果Argument小于较低的

    例子:

    SELECT gen_range(100, 200), gen_range(-1000, -800);+---------------------+------------------------+ | gen_range(100、200)| gen_range(-1000年、-800年 ) | +---------------------+------------------------+ | 177 | -917  | +---------------------+------------------------+ mysql >选择gen_range (1,0);+-----------------+ | gen_range (1,0 ) | +-----------------+ | 零  | +-----------------+
  • gen_rnd_email ()

    中生成一个随机的电子邮件地址example.com域。

    参数:

    一个也没有。

    返回值:

    字符串形式的随机电子邮件地址。

    例子:

    mysql >选择gen_rnd_email ();+---------------------------+ | gen_rnd_email () | +---------------------------+ | ijocv.mwvhhuf@example.com  | +---------------------------+
  • gen_rnd_pan ([大小])

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

    警告

    返回值从gen_rnd_pan ()只应用于测试目的,不适合发表。无法保证给定的返回值没有分配给合法的支付帐户。是否有必要发表gen_rnd_pan ()结果,考虑用mask_pan ()mask_pan_relaxed ()

    参数:

    • 大小:(可选)指定结果大小的整数。默认值是16大小不是。如果有,大小必须为12 ~ 19之间的整数。

    返回值:

    字符串形式的随机支付号码,或者如果一个大小给出了允许范围以外的参数。

    例子:

    mysql >选择mask_pan (gen_rnd_pan ());+-------------------------+ | mask_pan (gen_rnd_pan ()) | +-------------------------+ | XXXXXXXXXXXX5805  | +-------------------------+ mysql >选择mask_pan (gen_rnd_pan (19));+---------------------------+ | mask_pan (gen_rnd_pan (19 )) | +---------------------------+ | XXXXXXXXXXXXXXX5067  | +---------------------------+ mysql >选择mask_pan_relaxed (gen_rnd_pan ());+---------------------------------+ | mask_pan_relaxed (gen_rnd_pan ()) | +---------------------------------+ | 398403 xxxxxx9547  | +---------------------------------+ mysql >选择mask_pan_relaxed (gen_rnd_pan (19));+-----------------------------------+ | mask_pan_relaxed (gen_rnd_pan (19 )) | +-----------------------------------+ | 578416 xxxxxxxxx6509  | +-----------------------------------+ mysql >选择gen_rnd_pan (11), gen_rnd_pan (20);+-----------------+-----------------+ | gen_rnd_pan (11) | gen_rnd_pan (20 ) | +-----------------+-----------------+ | 零|零  | +-----------------+-----------------+
  • gen_rnd_ssn ()

    生成一个随机的美国社会安全号码AAA-BB-预备格式。的AAA部分大于900,而BB部分小于70,这是合法社会安全号码不使用的特征。

    参数:

    一个也没有。

    返回值:

    作为字符串的随机社会保险号。

    例子:

    mysql >选择gen_rnd_ssn ();+---------------+ | gen_rnd_ssn () | +---------------+ | 951-26-0058  | +---------------+
  • gen_rnd_us_phone ()

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

    参数:

    一个也没有。

    返回值:

    字符串形式的一个随机美国电话号码。

    例子:

    mysql >选择gen_rnd_us_phone ();+--------------------+ | gen_rnd_us_phone () | +--------------------+ | 1-555-682-5423  | +--------------------+

基于随机数据字典的函数

本节中的函数操作术语字典,并基于它们执行生成和屏蔽操作。其中一些函数需要超级特权。

加载字典后,它成为字典注册表的一部分,并被分配一个名称供其他字典函数使用。字典是从每行包含一个术语的纯文本文件加载的。空行被忽略。要有效,字典文件必须至少包含一个非空行。

  • gen_blacklist (strdictionary_namereplacement_dictionary_name

    将一个词典中的术语替换为另一个词典中的术语,并返回替换的术语。通过代换来掩盖原来的项。此函数在MySQL 8.0.23中已弃用;使用gen_blocklist ()代替。

  • gen_blocklist (strdictionary_namereplacement_dictionary_name

    将一个词典中的术语替换为另一个词典中的术语,并返回替换的术语。通过代换来掩盖原来的项。这个函数是在MySQL 8.0.23中添加的;用它来代替gen_blacklist ()

    参数:

    • str:表示要替换的术语的字符串。

    • dictionary_name:一个字符串,命名包含要替换的术语的字典。

    • replacement_dictionary_name:一个字符串,用于命名要从中选择替换术语的字典。

    返回值:

    随机选择的字符串replacement_dictionary_name作为替代str,或str如果它没有出现在dictionary_name,或如果字典名称不在字典注册表中。

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

    例子:

    SELECT gen_blocklist('Berlin', 'DE_Cities', 'US_Cities');+---------------------------------------------------+ | gen_blocklist(“柏林”、“DE_Cities”、“US_Cities ') | +---------------------------------------------------+ | 凤凰城  | +---------------------------------------------------+
  • gen_dictionary (dictionary_name

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

    参数:

    • dictionary_name:一个字符串,用于命名要从中选择术语的字典。

    返回值:

    从字典中作为字符串的随机术语,或者如果字典名称不在字典注册表中。

    例子:

    mysql >选择gen_dictionary(“mydict”);+--------------------------+ | gen_dictionary(“mydict ') | +--------------------------+ | 我的词  | +--------------------------+ mysql >选择gen_dictionary(“no-such-dict”);+--------------------------------+ | gen_dictionary(“no-such-dict ') | +--------------------------------+ | 零  | +--------------------------------+
  • gen_dictionary_drop (dictionary_name

    从字典注册表中删除字典。

    此函数需要超级特权。

    参数:

    • dictionary_name:一个字符串,指定要从字典注册表中删除的字典的名称。

    返回值:

    指示拖放操作是否成功的字符串。字典了表示成功。字典删除错误显示失败。

    例子:

    mysql >选择gen_dictionary_drop(“mydict”);+-------------------------------+ | gen_dictionary_drop(“mydict ') | +-------------------------------+ | 字典了  | +-------------------------------+ mysql >选择gen_dictionary_drop(“no-such-dict”);+-------------------------------------+ | gen_dictionary_drop(“no-such-dict ') | +-------------------------------------+ | 字典删除错误  | +-------------------------------------+
  • gen_dictionary_load (dictionary_pathdictionary_name

    将文件加载到字典注册表中,并为字典分配一个名称,以便与其他需要字典名称参数的函数一起使用。

    此函数需要超级特权。

    重要的

    字典不是持久的。应用程序使用的任何字典都必须在每次服务器启动时加载。

    一旦加载到注册表中,字典就会按原样使用,即使底层字典文件发生了更改。要重新加载字典,首先将它与gen_dictionary_drop (),然后再次加载gen_dictionary_load ()

    参数:

    • dictionary_path:指定字典文件路径名的字符串。

    • dictionary_name:为字典提供名称的字符串。

    返回值:

    指示加载操作是否成功的字符串。字典加载成功表示成功。字典加载错误显示失败。字典加载失败可能有几种原因,包括:

    • 已经加载了具有给定名称的字典。

    • 找不到字典文件。

    • 字典文件不包含任何术语。

    • secure_file_priv设置了系统变量,字典文件不在由该变量命名的目录中。

    例子:

    mysql >选择gen_dictionary_load(“/ usr /地方/ mysql / mysql-files / mydict ', ' mydict ');+---------------------------------------------------------------------+ | gen_dictionary_load(“/ usr /地方/ mysql / mysql-files / mydict’,‘mydict ') | +---------------------------------------------------------------------+ | 字典加载成功  | +---------------------------------------------------------------------+ mysql >选择gen_dictionary_load(“/ dev / null”、“零”);+-----------------------------------------+ | gen_dictionary_load (/ dev / null, null ') | +-----------------------------------------+ | 字典加载错误  | +-----------------------------------------+