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

本地Node.js无法连接树莓派MariaDB报连接池获取超时错误

局域网连接树莓派MariaDB连接池超时问题解决

ER_GET_CONNECTION_TIMEOUT报错的核心原因是Node服务的连接池在设定的超时窗口内,没能和目标数据库建立有效TCP连接,不是SQL语法错误,也不是连接池本身的参数问题,按以下优先级排查即可:

  • 第一步先做基础网络连通性校验
    在运行Node服务的本地电脑上打开终端,先执行ping 192.168.0.45确认树莓派在线、和本机在同一局域网。如果ping不通,先检查树莓派供电、WiFi/网线连接,确认路由器分配给树莓派的IP没有变动(家用路由器DHCP默认租期短,经常会导致设备IP变化,建议给树莓派绑定静态IP)。
    ping通后执行端口探测:Windows PowerShell下执行Test-NetConnection 192.168.0.45 -Port 3306,类Unix系统执行nc -zv 192.168.0.45 3306。如果端口探测失败,直接去树莓派侧改配置:
    1. SSH登录树莓派,编辑MariaDB服务配置文件,默认路径为/etc/mysql/mariadb.conf.d/50-server.cnf,找到bind-address配置项,默认值为127.0.0.1(仅允许本机访问数据库),修改为bind-address = 0.0.0.0,保存文件。
    2. 执行sudo systemctl restart mariadb重启数据库服务,再回头探测3306端口,直到显示端口开放。
    3. 如果树莓派开启了ufw防火墙,额外执行sudo ufw allow 3306/tcp放通数据库端口。
  • 第二步校验数据库账号的远程访问权限
    端口通了还是连不上的话,在树莓派本地登录MariaDB命令行,执行以下SQL查看root账号的允许访问范围:
    SELECT user, host FROM mysql.user WHERE user = 'root';
    
    如果查询结果里root对应的host值为localhost或127.0.0.1,说明root账号默认仅允许本机登录,没有远程访问权限,执行以下SQL授权:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '*hello*';
    FLUSH PRIVILEGES;
    

    注意:生产环境不建议直接用root账号远程连接,也不建议允许所有IP访问,最好单独创建业务账号,仅授权forum库的操作权限,且限制仅你的本地电脑IP可连,测试环境可以暂时用上面的配置快速验证。

  • 第三步修正代码里的配置和逻辑问题
    你的连接池配置没有显式指定端口,虽然MariaDB默认端口是3306,显式声明可以避免环境变量带来的异常,同时可以适当调长连接获取超时时间,适配局域网偶发的网络波动,修改后的配置参考:
    const pool = mariadb.createPool({
         host: '192.168.0.45', 
         port: 3306,
         user:'root', 
         password: '*hello*',
         connectionLimit: 5,
         acquireTimeout: 20000 // 连接获取超时调整为20秒
    });
    
    另外你现有代码里的INSERT语句有明显语法问题:语句里只写了2个占位符,但实际传了4个参数,就算连接成功,执行到这一步也会抛参数不匹配的错误,需要和forum.utilisateur表的字段数对齐后再执行。同时现有连接释放逻辑有漏洞,极端场景下会出现连接泄漏占满连接池,建议改成async/await写法统一处理连接释放。
  • 最后兜底排查
    如果以上步骤都做完还是连不上,检查本地电脑的防火墙、杀毒软件有没有拦截Node进程的出站请求,部分安全软件会默认拦截非浏览器程序的局域网端口访问,临时关闭安全软件测试即可定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:33:19