核心概念

X Plugin 是 MySQL 8.0 引入的一个插件,提供基于 X Protocol 的通信方式。它与传统 MySQL 协议(3306 端口)独立,默认监听 33060 端口。

两个协议与两个配置

配置项控制对象默认端口用途
bind-address传统 MySQL 协议3306mysql 命令行、JDBC 等客户端使用
mysqlx-bind-addressX 协议 (X Plugin)33060被 X DevAPI 客户端使用

关键区别

mysqlx-bind-address 配置的是 MySQL X Plugin 的监听地址,与传统 MySQL 连接无关。修改 bind-address 并不会影响 X Plugin 的行为,反之亦然。

X Plugin 能做什么

X Plugin 提供基于 X Protocol 的通信方式,支持:

1. 文档存储(Document Store)

可以直接用 JSON 文档操作,不需要写 SQL:

// 通过 X Protocol 操作(不走 SQL)
collection.find("name = :name").bind("name", "张三").execute()

2. X DevAPI

面向 NoSQL 风格的 CRUD 操作,支持多种编程语言:

  • MySQL Connector/Node.js
  • MySQL Connector/Python
  • MySQL Connector/Java
  • MySQL Connector/.NET

3. MySQL Shell 的高级模式

MySQL Shell 的 JavaScript/Python 模式(非 SQL 模式)使用 X Protocol 连接。

什么时候会用到 X Plugin

场景说明
使用 MySQL Shell 的 JS/Python 模式mysqlsh 默认尝试使用 X Protocol
使用 Connector/Node.js 通过 X DevAPINode.js 应用直接 CRUD
使用 MySQL Document Store面向文档的 NoSQL 操作
普通 JDBC 应用❌ 不需要,走传统 3306 端口

配置示例

[mysqld]
# 传统协议监听所有接口
bind-address = 0.0.0.0
 
# X Protocol 只监听本地(默认行为)
# mysqlx-bind-address = 127.0.0.1
 
# X Protocol 监听所有接口
# mysqlx-bind-address = 0.0.0.0

排查注意事项

当遇到 MySQL 连接问题时,首先要区分使用的是哪个协议:

# 查看传统协议端口监听
ss -tlnp | grep 3306
 
# 查看 X Protocol 端口监听
ss -tlnp | grep 33060
 
# 查看 X Plugin 是否启用
mysql -u root -p -e "SHOW PLUGINS;" | grep xplugin
# 或
mysql -u root -p -e "SHOW VARIABLES LIKE 'mysqlx%';"

参考链接