mysql "x protocol"协议
MySQL 的 X Protocol 是 MySQL 引入的一种现代协议,旨在支持更灵活的开发方式。它基于 MySQL X DevAPI,提供对 SQL 和 NoSQL 的双重支持,适用于需要高性能和现代化应用的场景。X Protocol 默认使用端口 33060
,与传统的 MySQL 协议(端口 3306
)并存。
1. MySQL Shell
- 描述: MySQL Shell 是官方提供的多功能客户端工具,专门设计来支持 X Protocol。
- 支持功能:
- 通过 X Protocol 连接到 MySQL 服务器。
- 支持 SQL 模式、JavaScript 模式和 Python 模式。
- 提供对 NoSQL 文档存储(Document Store)和传统关系表的操作。
- 使用方式:
- 命令行连接示例:
mysqlsh --mysqlx -u user -h hostname -P 33060
- 交互式使用,支持脚本执行。
- 命令行连接示例:
- 适用场景: 管理和开发,尤其是处理 JSON 文档或混合数据模型时。
2. MySQL Connectors(支持 X DevAPI 的连接器)
MySQL 提供了一系列支持 X Protocol 的连接器(基于 X DevAPI),适用于不同编程语言:
- Connector/Node.js:
- 用于 Node.js 应用程序。
- 示例:
mysqlx.getSession({ host: 'localhost', port: 33060, user: 'root', password: 'pass' })
- Connector/J (Java):
- 支持 Java 应用程序。
- 示例:
Session session = new SessionFactory().getSession("mysqlx://user@localhost:33060");
- Connector/NET (C#):
- 用于 .NET 应用程序。
- 示例:
var session = MySqlX.GetSession("server=localhost;port=33060;uid=user;pwd=pass");
- Connector/Python:
- 用于 Python 应用程序。
- 示例:
import mysqlx; session = mysqlx.get_session(host='localhost', port=33060, user='user', password='pass')
- Connector/C++:
- 用于 C++ 应用程序。
- 支持类似的 X DevAPI 接口。
- 特点:
- 这些连接器允许开发者以面向对象的方式操作 MySQL,支持 CRUD 操作(创建、读取、更新、删除)以及文档存储功能。
3. 自定义客户端(支持 X Protocol 的第三方工具)
- X Protocol 是一个开放协议(基于 Protobuf),理论上任何实现该协议的客户端都可以连接。不过,目前主要还是 MySQL 官方工具和连接器在使用。
- 如果开发者需要自定义客户端,可以参考 MySQL 的 X Protocol 文档并实现通信逻辑(需要较强的技术背景)。
4. 传统 MySQL 客户端的兼容性
- 不支持 X Protocol 的客户端:
- 传统工具如
mysql
命令行客户端、MySQL Workbench(大部分功能)、phpMyAdmin 等,主要使用经典 MySQL 协议(端口3306
),无法直接使用 X Protocol。 - 这些工具依赖于传统的 SQL 连接方式,与 X Protocol 无关。
- 传统工具如
支持 X Protocol 的条件
要使用 X Protocol 登录 MySQL,需满足以下条件:
- MySQL 版本: MySQL 8.0 或更高版本(X Protocol 从 8.0 开始引入并完善)。
- 启用 X Plugin: 默认情况下,MySQL 8.0 已内置并启用 X Plugin,但可以通过以下命令检查或启用:
- 检查:
SHOW PLUGINS;
(查看是否有mysqlx
) - 启用(如果未启用):
INSTALL PLUGIN mysqlx SONAME 'mysqlx.so';
- 检查:
- 网络配置: 确保
mysqlx-bind-address
和防火墙允许访问端口33060
。 - 用户权限: MySQL 用户需要有适当的权限(与普通连接类似,但需要针对目标数据库配置)。
典型使用场景
- 文档存储: 使用 X Protocol 操作 MySQL 的 JSON 文档集合(类似于 MongoDB)。
- 现代应用: 通过 X DevAPI 构建 RESTful API 或微服务。
- 混合查询: 同时使用 SQL 和 NoSQL 操作。
总结
支持 X Protocol 的客户端主要是 MySQL Shell 和 支持 X DevAPI 的 MySQL Connectors(Node.js、Java、.NET、Python、C++ 等)。传统客户端(如 mysql
CLI 或 Workbench)不支持 X Protocol。如果你的应用需要现代化特性(例如文档存储或异步操作),可以选择这些工具。