如何修复使用Node.js连接远程MySQL时出现的连接超时错误
解决cPanel迁移后远程MySQL连接超时问题
针对你遇到的cPanel迁移后Node.js和MySQL Workbench均无法远程连接MySQL的问题,按以下步骤排查解决:
一、优先排查端口与SSL强制配置
测试端口连通性
用终端执行命令测试目标主机的3306端口是否能访问:nc -zv 你的主机地址 3306 # 或Windows用telnet:telnet 你的主机地址 3306如果不通,说明端口被主机商防火墙封禁,直接联系主机商开放3306,或确认是否迁移后改用了其他远程端口(部分主机商会将远程MySQL端口改为33060等)。
添加SSL连接参数
新版cPanel安装SSL后可能强制MySQL使用SSL连接,修改你的Node.js连接代码,添加SSL配置:import mysql from "mysql2" const pool = mysql.createPool({ host: '******', user: '*********', password: '*****', database: '******', connectionLimit: 100, port: 3306, ssl: { rejectUnauthorized: false // 主机商自签证书需开启此选项,生产环境建议配置官方证书 } }).promise() pool.getConnection((err, connection) => { if (err) { console.error("连接错误详情:", err); // 必须添加错误打印,定位具体问题 return; } console.log("Connected") })
二、修复MySQL用户权限问题
检查远程用户的访问权限
登录cPanel的phpMyAdmin,使用你配置的远程连接用户(不要用root)登录,确认:- 用户拥有对应数据库的
SELECT/INSERT/UPDATE/DELETE等权限 - 用户的访问范围包含你的本地IP,或设置为
%(允许所有IP,测试用,生产环境建议限制IP)
- 用户拥有对应数据库的
解决root权限不足问题
你遇到的Access denied for user root@localhost是迁移时root权限被重置导致,无法自行通过phpMyAdmin修复,直接联系主机商重置root用户权限,或让他们帮你确认并配置远程用户的访问权限。
三、验证cPanel白名单配置
重新登录cPanel的「Remote MySQL」页面,确认你的本地IP已正确添加,部分主机商会在迁移后清空白名单,需要重新添加。
内容的提问来源于stack exchange,提问作者Andrejr
相关产品推荐
相关产品推荐

