MySQL 8.0+ 的 X Plugin 是基于 X DevAPI 的原生 NoSQL 接口,默认监听33060端口,不依赖传统SQL权限模型,而要求用户显式启用mysqlx认证插件并具备CONNECTION_ADMIN权限,否则即使密码正确、端口通畅也会静默拒绝连接。

MySQL 8.0+ 的 X Plugin 是什么,为什么需要单独授权
X Plugin 是 MySQL 8.0 引入的原生 NoSQL 接口(基于 X DevAPI),默认监听 33060 端口,与传统 SQL 连接(3306)完全分离。它不走 mysql.user 表的传统权限模型,而是复用 SQL 用户体系,但要求用户必须显式启用 mysqlx 认证插件、且账户需具备 mysql.session 角色或 CONNECTION_ADMIN 权限——否则即使用户能连 3306,X Plugin 也会拒绝连接并报错:Access denied for user 'xxx'@'yyy' (using password: YES) 或更隐晦的 Authentication failed。
创建支持 X Plugin 的远程用户(含认证插件指定)
MySQL 8.0 默认使用 caching_sha2_password 插件,但某些旧版客户端(如早期 MySQL Shell 或部分 Node.js 驱动)可能不兼容。X Plugin 要求用户密码必须通过支持的插件验证,推荐显式指定插件并设强密码:
CREATE USER 'xuser'@'%' IDENTIFIED WITH caching_sha2_password BY 'StrongPass!2026';- 若需兼容老客户端:用
mysql_native_password(仅测试环境):CREATE USER 'xuser'@'%' IDENTIFIED WITH mysql_native_password BY 'LegacyCompat123'; - 必须授予
CONNECTION_ADMIN权限(GRANT CONNECTION_ADMIN ON *.* TO 'xuser'@'%';),这是 X Plugin 连接的硬性前提 - 执行
FLUSH PRIVILEGES;生效
确认 X Plugin 已启用且监听正确地址
X Plugin 默认不自动启动,即使配置了也需手动启用。检查和开启方式如下:
- 登录后执行:
SELECT plugin_name, plugin_status FROM information_schema.plugins WHERE plugin_name = 'mysqlx';—— 若状态非ACTIVE,说明未启用 - 启用命令(需有
SUPER或SYSTEM_VARIABLES_ADMIN权限):INSTALL PLUGIN mysqlx SONAME 'mysqlx.so'; - 检查监听配置:在
my.cnf的[mysqld]段添加或确认以下两项: -
mysqlx=ON(启用插件) -
mysqlx_bind_address=0.0.0.0(允许远程;若只限内网可填具体 IP,如192.168.1.100) - 重启服务:
sudo systemctl restart mysqld(CentOS/RHEL)或sudo systemctl restart mysql(Ubuntu/Debian)
防火墙与安全组必须放行 33060 端口
很多人只开了 3306 却连不上 X Plugin,根本原因是没开 33060。这个端口和 SQL 端口完全独立:
- 本地防火墙:
sudo ufw allow 33060/tcp(Ubuntu)或sudo firewall-cmd --add-port=33060/tcp --permanent && sudo firewall-cmd --reload(CentOS) - 云平台安全组(阿里云/腾讯云/AWS):必须单独添加一条入方向规则,协议 TCP,端口范围
33060/33060,源 IP 建议限制为可信段(如192.168.10.0/24),而非全放开 - 验证是否监听成功:
sudo ss -tlnp | grep :33060(Linux)或netstat -an | findstr :33060(Windows)
真正容易被忽略的是:X Plugin 的权限判断发生在认证阶段之前,哪怕密码正确、IP 允许、端口通,只要缺少 CONNECTION_ADMIN 权限或插件未 INSTALL,就会静默失败——此时日志里通常只有模糊的 Authentication failed,不会提示缺权限。











