10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

5.6.6.4版本令牌参考

以下讨论用作对这些版本令牌元素的引用:

版本标记功能

版本令牌插件库包括多个功能。一组函数允许服务器的版本令牌列表进行操作和检查。另一组函数允许版本令牌被锁定和解锁。这Version_Token_Admin.特权(或已弃用的超级特权)是需要调用任何版本令牌函数。

以下函数允许创建,更改,删除和检查服务器的版本令牌列表。解释名单token_list.参数(包括空白处理)发生如上所述第5.6.6.3节“使用版本令牌”,它提供有关指定令牌的语法的详细信息,以及其他示例。

  • Version_Tokens_Delete(名单

    使用服务器的版本令牌列表中删除令牌名单参数并返回指示操作结果的二进制字符串。名单是要删除的版本标记名称的分号分隔列表。

    mysql> select version_tokens_delete('tok1; tok3');+ -------------------------------- + |Version_tokens_delete('tok1; tok3')|+ -------------------------------- + |2版本令牌删除。|+ ---------------------------------

    一个论点空值被视为空字符串,对令牌列表没有影响。

    Version_tokens_delete()删除其参数中命名的令牌,如果存在。(删除不存在令牌不是错误。)以完全清除令牌列表而不知道列表中的令牌,通过空值或者包含没有令牌的字符串Version_Tokens_Set()

    mysql> select version_tokens_set(null);+ -------------------------- + |Version_Tokens_Set(null)|+ -------------------------- + |版本令牌清单清除。|+ -------------------------- + MySQL> Select Version_Tokens_Set('');+ -------------------------- + |Version_tokens_set('')|+ -------------------------- + | Version tokens list cleared. | +------------------------------+
  • Version_tokens_edit(token_list.

    使用该修改服务器的版本令牌列表token_list.参数并返回指示操作结果的二进制字符串。token_list.是分号分隔的列表名称=价值对指定要定义的每个令牌的名称及其值。如果存在令牌,则将其值与给定值更新。如果令牌不存在,则使用给定值创建它。如果参数是空值或者包含令牌的字符串,令牌列表保持不变。

    mysql> select version_tokens_set('tok1 = value1; tok2 = value2');+ --------------------------------------- + |Version_tokens_set('tok1 = value1; tok2 = value2')|+ --------------------------------------- + |2版本令牌集。|+ -------------------------------------- + mysql>选择version_tokens_edit('tok2 = new_value2; tok3 = new_value3');+ ------------------------------------------------- + |Version_tokens_edit('tok2 = new_value2; tok3 = new_value3')| +--------------------------------------------------------+ | 2 version tokens updated. | +--------------------------------------------------------+
  • Version_Tokens_Set(token_list.

    使用令牌替换服务器的版本令牌列表token_list.参数并返回指示操作结果的二进制字符串。token_list.是分号分隔的列表名称=价值对指定要定义的每个令牌的名称及其值。如果参数是空值或包含令牌的字符串,令牌列表已清除。

    mysql> select version_tokens_set('tok1 = value1; tok2 = value2');+ --------------------------------------- + |Version_tokens_set('tok1 = value1; tok2 = value2')|+ --------------------------------------- + |2版本令牌集。|+ -----------------------------------------
  • Version_tokens_show()

    将服务器的版本令牌列表返回为包含分号分隔列表的二进制字符串名称=价值对。

    mysql> select version_tokens_show();+ ------------------------- + |Version_tokens_show()|+ ------------------------- + |tok2 = value2; tok1 = value1;|+ -------------------------

以下功能允许版本令牌被锁定和解锁:

  • Version_tokens_lock_exclusive(token_name.[,token_name.] ......,超时

    在一个或多个版本令牌上获取独占锁,按名称指定为字符串,如果未在给定的超时值中未获取锁定,则错误的定时。

    MySQL> Select Version_tokens_lock_exclusive('锁1','锁定2',10);+ ---------------------------------------------- + |Version_tokens_lock_exclusive('lock1','lock2',10)|+ ---------------------------------------------- + |1 |+ ---------------------------------------------- +
  • Version_Tokens_Lock_Shared(token_name.[,token_name.] ......,超时

    在一个或多个版本令牌上获取共享锁,按名称指定为字符串,如果未在给定的超时值中未获取锁定的错误时会出错。

    mysql> select version_tokens_lock_shared('锁1','锁2',10);+ -------------------------------------------  + |Version_Tokens_Lock_Shared('lock1','lock2',10)|+ -------------------------------------------  + |1 |+ -------------------------------------------  +
  • Version_Tokens_unlock()

    使用释放当前会话中获得的所有锁Version_Tokens_Lock_exclusive()Version_Tokens_Lock_Shared()

    mysql> select version_tokens_unlock();+ ----------------------- + |Version_Tokens_unlock()|+ ----------------------- + |1 |+ ------------------------

锁定功能共享这些特性:

  • 返回值是非零的成功。否则,发生错误。

  • 令牌名称是字符串。

  • 与处理服务器令牌列表的函数的参数处理相比,不忽视令牌名称参数的空格=;允许字符。

  • 可以锁定不存在的令牌名称。这不会创建令牌。

  • 超时值是非负整数,表示在使用错误时更新以在时机上获取锁的时间。如果超时为0,则没有等待,如果无法立即获取锁,则该功能会产生错误。

  • 版本令牌锁定功能基于描述的锁定服务第5.6.9.1节“锁定服务”

版本令牌系统变量

版本令牌支持以下系统变量。除非安装了版本令牌插件,否则这些变量不可用(请参阅第5.6.6.2节“安装或卸载版本令牌”。)。

系统变量:

  • Version_tokens_session.

    命令行格式 ——version-tokens-session =值
    系统变量 Version_tokens_session.
    范围 全球,会议
    动态的 是的
    set_var.提示适用
    类型 细绳
    默认值 空值

    此变量的会话值指定客户端版本令牌列表,并指示客户端会话要求服务器版本令牌列表具有的令牌。

    如果是Version_tokens_session.变量是空值(默认值)或具有空值,任何服务器版本令牌列表匹配。(实际上,空值禁用匹配要求。)

    如果是Version_tokens_session.变量具有非空值,其值与服务器版本令牌列表之间的任何不匹配导致会话发送到服务器的任何语句的错误。在这些条件下发生不匹配:

    它不是服务器版本令牌列表的不匹配,以包括未命名的令牌Version_tokens_session.价值。

    假设管理应用程序设置了服务器令牌列表,如下所示:

    mysql> select version_tokens_set('tok1 = a; tok2 = b; tok3 = c');+ --------------------------------------------Version_Tokens_Set('tok1 = a; tok2 = b; tok3 = c')|+ --------------------------------------------3版本令牌集。|+ ---------------------------------------

    客户端注册令牌,它要求服务器通过设置其来匹配Version_tokens_session.价值。然后,对于客户端发送的每个后续语句,服务器对客户端检查其令牌列表Version_tokens_session.如果存在不匹配,则值并产生错误:

    mysql> set @@ session.version_tokens_session ='tok1 = a; tok2 = b';mysql>选择1;+ --- + |1 |+ --- + |1 |+ --- + mysql> set @@ session.version_tokens_session ='tok1 = b';mysql>选择1;错误3136(42000):TOK1的版本令牌不匹配。纠正价值A.

    首先选择成功,因为客户令牌TOK1Tok2.存在于服务器令牌列表中,每个令牌在服务器列表中具有相同的值。第二选择失败,因为TOK1出现在服务器令牌列表中,它的值与客户端指定的值不同。

    此时,客户端发送的任何语句都会失败,除非服务器令牌列表发生更改,使其再次匹配。假设管理应用程序更改服务器令牌列表如下:

    mysql> select version_tokens_edit('tok1 = b');+ ---------------------------- + |Version_tokens_edit('tok1 = b')|+ ---------------------------- + |1版本令牌更新。|+ --------------------------- + MySQL> Select Version_tokens_show();+ --------------------- + |Version_tokens_show()|+ --------------------- + | tok3=c;tok1=b;tok2=b; | +-----------------------+

    现在客户Version_tokens_session.值与服务器令牌列表匹配,客户端可以再次成功执行语句:

    mysql>选择1;+ --- + |1 |+ --- + |1 |+ --- +
  • version_tokens_session_number

    命令行格式 --version-tokens-session-number =#
    系统变量 version_tokens_session_number
    范围 全球,会议
    动态的
    set_var.提示适用
    类型 整数
    默认值 0.

    此变量用于内部使用。