MySQL协议开发说明

Lindorm宽表引擎支持MySQL协议接入,您可以通过MySQL生态客户端来连接并使用Lindorm宽表引擎。本文介绍MySQL协议使用说明及相关注意事项。

使用说明

宽表引擎为2.6.0及以上版本时支持MySQL协议。如何查看或升级当前版本,请参见宽表引擎版本说明升级小版本

重要

Lindorm宽表引擎支持的SQL语法不完全兼容MySQL语法。Lindorm宽表引擎支持的SQL语法,请参见SQL语法手册

开通指南

如何开通MySQL兼容协议功能,请参见通过MySQL命令行连接并使用宽表引擎

注意事项

  • 出于安全性考虑,在使用MySQL协议连接宽表引擎时,默认使用SSL通信加密。如果您的应用与Lindorm实例部署在同一个专有网络VPC下,您可以按照MySQL客户端的使用方式启用明文通信以获得更好的性能。例如,使用8.x版本的MySQL JDBC时,可以在连接URL中设置sslMode=disabled来启用明文通信。

  • 部分旧客户端在建立SSL连接时会使用较低版本的TLS协议(例如1.0或1.1版本),可能会导致连接失败并引发协议版本相关的异常。如果出现此情况,您可以通过以下方式处理:

    • 直接使用明文通信建立连接。

    • 如果对应的客户端支持指定TLS协议版本(例如5.1.44版本的MySQL JDBC支持通过enabledTLSProtocols连接参数指定TLS版本),则可以通过将TLS协议版本指定为1.2解决该问题。

    • 升级客户端版本。建议使用MySQL 8.0及以上版本的客户端。

  • 不同宽表引擎版本下创建的用户可使用的协议不同。请根据您的实际情况,选择对应的鉴权协议:

    • 如果用户创建时,宽表引擎版本在2.6.2之前,则仅支持caching_sha2_password协议。

    • 如果用户创建时,宽表引擎为2.6.2及以上版本,同时支持caching_sha2_passwordmysql_native_password鉴权协议,建议您优先使用caching_sha2_password协议。

    例如,您在宽表引擎为2.5.4版本时创建了用户user,之后通过升级小版本的方式将宽表引擎升级至2.6.2及以上版本,并创建了新的用户test,则user用户仅支持caching_sha2_password协议,test用户支持mysql_native_passwordcaching_sha2_password鉴权协议。

MySQL协议兼容

MySQL协议中包含多种子协议,Lindorm对于其支持情况如下:

连接生命周期

子协议名称

协议命令

是否支持

功能及说明

Connection Phase

Handshake

支持

建立连接前的握手协商。目前仅支持HandshakeV10协议。

TLS Support

支持

TLS通讯加密支持。目前仅支持TLSv1.2协议

说明

Lindorm默认使用SSL加密通信。

Authentication Methods

old_password

不支持

旧版本密码传输协议。即旧版本MySQL客户端(例如4.x或更旧版本)的用户认证请求。

mysql_clear_password

支持

明文密码传输协议。

重要

通常需要与SSL通信加密配合使用。

mysql_native_password

支持

5.x版本MySQL客户端默认使用的密码加密通信协议。

caching_sha2_password

支持

8.x版本MySQL客户端默认使用的密码加密通信协议。相较mysql_native_password更加安全高效,推荐使用

Command Phase

Text Protocol

COM_QUERY

支持

直接发送SQL并执行。

Utility Commands

COM_QUIT

支持

连接断开。

COM_INIT_DB

支持

修改当前连接的默认数据库。

COM_PING

支持

客户端与服务端之间的连接探活。

COM_DEBUG

不支持

显示服务器内部Debug信息,即连接Lindorm后在执行SQL的同时获取服务端调试信息。

COM_CHANGE_USER

不支持

切换当前连接的用户。

COM_RESET_CONNECTION

不支持

连接Lindorm时重置当前连接的会话状态。

COM_SET_OPTION

不支持

设置客户端的连接选项,即连接Lindorm时更改客户端连接会话的行为与配置。

Prepared Statements

COM_STMT_PREPARE

支持

参数化查询语句预处理。

COM_STMT_EXECUTE

支持

参数化查询语句的参数绑定与执行。

COM_STMT_FETCH

不支持

对Lindorm使用嵌入式SQL中的FETCH语句。

COM_STMT_CLOSE

支持

关闭预处理语句。

COM_STMT_SEND_LONG_DATA

不支持

用于发送大对象的命令,在COM_STMT_EXECUTE前执行。

Replication Protocol

不支持

MySQL的Binlog复制协议。