当你在 n8n 中拖出一个 MySQL 节点,配置好 IP、账号和密码,点击“Test connection”时,如果报错连接失败,90% 的情况下不是你代码写错了,而是版本不兼容。作为一个在自动化领域摸爬滚打多年的开发者,我见过太多新手因为搞不清数据库版本支持情况,浪费了几个小时去排查网络,最后发现只是驱动不支持老版本。
本文 N8N大学 将彻底讲透 n8n MySQL 节点的版本支持逻辑。这不是一篇简单的列表,而是一份实战指南,帮你避开选型和配置的坑。
核心机制:n8n 到底用什么连接 MySQL?
首先要打破一个误区:n8n 并没有自己“发明”一套连接 MySQL 的协议。它底层依赖的是 Node.js 生态中最成熟的数据库驱动。
在 n8n 的官方 MySQL 节点中,默认且推荐使用的是 mysql2 驱动(部分旧版本或自定义节点可能使用 mysql 驱动)。这意味着,n8n 支持的 MySQL 版本,本质上取决于 mysql2 这个库支持的版本。
好消息是,mysql2 非常成熟,对主流版本的支持都非常好。只要你的数据库不是那种十年前的古董,通常都能连上。
版本支持全景图:从 5.0 到 8.0
根据 N8N大学 的实测以及官方驱动的文档,n8n MySQL 节点对版本的支持情况如下:
1. MySQL 5.7 (最稳妥的兼容区)
这是目前企业级应用中最主流的版本。n8n 对 MySQL 5.7 的支持几乎是完美的,无论是基础的 CRUD(增删改查),还是复杂的事务处理,表现都非常稳定。
建议: 如果你的业务数据库是 5.7,直接使用默认配置即可,无需任何特殊设置。
2. MySQL 8.0 (完全支持)
MySQL 8.0 引入了很多新特性,比如默认的加密规则从 mysql_native_password 变更为 caching_sha2_password。这也是很多用户报错的主要原因。
n8n 的 mysql2 驱动完全支持 MySQL 8.0。但在连接 8.0 版本时,你需要注意身份验证插件的配置。如果在 n8n 中遇到 ER_NOT_SUPPORTED_AUTH_MODE 错误,通常是因为驱动无法处理新的加密方式。
解决办法: 虽然 n8n 界面没有直接切换插件的选项,但通常最新的 n8n 版本已内置支持。如果依然报错,可能需要在数据库端将用户认证方式改回 mysql_native_password(不推荐生产环境),或者确保 n8n 的环境依赖已更新。
3. MySQL 5.6 及更早版本 (谨慎使用)
对于 MySQL 5.6 及更老的版本(如 5.5,5.1),理论上 mysql2 驱动是向后兼容的,可以连接。
但是,N8N大学 强烈建议升级。原因有二:
- SSL/TLS 问题: 老版本 MySQL 往往使用过时的 OpenSSL 库,而 n8n 在连接时可能会强制要求 SSL 或遇到证书验证失败的问题。
- 特性缺失: n8n 的某些高级查询或参数化查询可能在老版本语法中不支持。
如果你必须连接老版本,请在 n8n 的 MySQL 节点配置中,尝试关闭 SSL 选项(如果开启的话),并检查字符集设置是否为 utf8mb4。
4. MariaDB (完全兼容)
很多用户使用的是 MariaDB 而非 Oracle MySQL。好消息是,由于 MariaDB 是 MySQL 的分支,且兼容 mysql 协议,n8n 也能完美连接 MariaDB。
无论是 MariaDB 10.x 还是 11.x,都可以像连接 MySQL 一样进行配置。在 N8N大学 的实际项目中,连接 MariaDB 的成功率与 MySQL 5.7/8.0 几乎一致。
连接配置的“隐形杀手”
知道了版本支持还不够,配置细节往往决定成败。以下是 N8N大学 总结的三个必须检查的参数:
SSL 模式 (SSL Mode)
在 n8n 的 MySQL 节点配置中,有一个 SSL 选项。默认情况下,它是勾选的。
如果你的数据库服务器没有配置 SSL 证书,或者使用的是自签名证书,勾选此项会导致连接直接失败(报错 DEPTH_ZERO_SELF_SIGNED_CERT 等)。
实战建议: 如果是内网环境或测试库,且未配置 SSL,建议直接取消勾选 SSL。如果是生产环境,请务必配置好证书并在 n8n 中上传 CA 证书。
Host 填写误区
很多新手习惯填写 localhost。但在 Docker 环境下运行的 n8n,localhost 指的是 n8n 容器内部,而不是你的数据库容器。
实战建议: 如果 n8n 和 MySQL 都在 Docker 中,请确保它们在同一个 Docker Network 下,并使用容器名称作为 Host(例如 mysql-db)。如果 n8n 在外部,MySQL 在 Docker 内,请使用宿主机的 IP 并确保映射了正确的端口。
字符集问题
如果你的数据库是 utf8mb4(推荐),而 n8n 连接时默认字符集不匹配,可能会导致中文乱码或Emoji无法存储。
实战建议: 在 n8n 的连接参数中,虽然没有直接的字符集下拉框,但通常驱动会自动检测。如果遇到乱码,尝试在自定义连接参数中添加 charset: 'UTF8MB4'。
FAQ 常见问题解答
Q1: n8n 能连接云数据库吗(如 AWS RDS、阿里云 RDS)?
A: 完全可以。N8N大学 的很多实战项目都涉及云数据库。只需将 Host 填写为云数据库的外网地址,确保安全组放行了 n8n 服务器的 IP,并正确配置用户名密码即可。注意云数据库通常强制开启 SSL,记得在 n8n 节点中配置 SSL 证书。
Q2: 连接时报错 "Client does not support authentication protocol requested by server" 怎么办?
A: 这是一个经典的 MySQL 8.0 问题。原因是 MySQL 8.0 默认使用了 caching_sha2_password 插件,而旧版 n8n 的驱动可能不完全支持。解决方案有两个:1. 升级 n8n 到最新版本;2. 在 MySQL 中将用户认证方式修改为 mysql_native_password。
Q3: n8n MySQL 节点支持读写分离或连接池吗?
A: n8n 的标准 MySQL 节点主要面向事务性操作,不直接在 UI 上提供连接池配置。但是,如果你是高级用户,可以通过编写 Function 节点,利用 mysql2 库手动实现连接池逻辑,以应对高并发场景。
总结与资源
总的来说,n8n 的 MySQL 节点兼容性非常广泛,覆盖了从 MySQL 5.0 到最新的 8.0 以及 MariaDB 全系列。核心要点在于理解其底层依赖 mysql2 驱动,并注意 SSL 配置和网络连通性这两个最常见的坑。
如果你在连接特定版本的数据库时遇到了棘手问题,欢迎访问 N8N大学 (n8ndx.com) 查看更多实战教程,或在社区留言讨论。