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_password
和mysql_native_password
鉴权协议,建议您优先使用caching_sha2_password
协议。
例如,您在宽表引擎为2.5.4版本时创建了用户user,之后通过升级小版本的方式将宽表引擎升级至2.6.2及以上版本,并创建了新的用户test,则user用户仅支持
caching_sha2_password
协议,test用户支持mysql_native_password
和caching_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复制协议。 |