You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js连接群晖NAS远程MySQL数据库报PROTOCOL_PACKETS_OUT_OF_ORDER错误

问题原因分析
  • 群晖NAS自带的MariaDB/MySQL服务默认仅监听本地回环地址,你填写的3307端口大概率是phpMyAdmin的web服务端口,不是实际的数据库服务端口,node-mysql客户端把web服务的响应当成了MySQL协议包,才会抛出包顺序错乱的错误。
  • 你使用的mysql npm包是已停止维护的旧版本,对群晖NAS预装的高版本MariaDB兼容性差,也会触发协议解析错误。
  • 数据库用户JAWS没有绑定你运行Discord机器人的主机IP访问权限,数据库返回的拒绝访问报文没有被客户端正确解析,也会导致该报错。
解决步骤
  1. 确认数据库服务端口和监听地址
  • 登录群晖NAS后台,打开「MariaDB」设置项,勾选「启用TCP/IP连接」,端口默认是3306,可根据需求自定义,注意不要和phpMyAdmin的端口混淆,phpMyAdmin的端口是web访问端口,不能用来直连数据库。
  • 确认群晖防火墙开放你设置的数据库端口的入站规则,允许机器人所在主机的IP访问。
  1. 替换兼容性更好的数据库依赖
  • 卸载旧的mysql包,安装目前仍在维护中的mysql2包,对MariaDB和新版MySQL兼容性更好:
npm uninstall mysql
npm install mysql2
  • 修改连接代码,仅需替换引用的依赖即可,API基本兼容原有写法:
// 仅替换第一行引用的包
const mysql = require('mysql2');
var con = mysql.createConnection({
    host: '192.168.1.86',
    // 端口填写MariaDB设置里的端口,不要填phpMyAdmin的端口
    port: 3306, 
    user: 'JAWS',
    password: 'Coccodrillone_05',
    database: 'JAWS'
});
con.connect(function(err){
    if(err){
        console.log("连接出错");
        console.log(err);
    }else{
        console.log("连接成功");
    }
})
  1. 确认数据库用户权限
  • 登录群晖的phpMyAdmin,执行SQL语句给JAWS用户开放对应主机的访问权限,如果你机器人所在主机是固定IP,替换下面的192.168.1.%为你的实际IP段,也可以填%开放所有IP访问(公网环境不建议使用):
GRANT ALL PRIVILEGES ON JAWS.* TO 'JAWS'@'192.168.1.%' IDENTIFIED BY 'Coccodrillone_05';
FLUSH PRIVILEGES;

内容的提问来源于stack exchange,提问作者Timo pek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:06:08