连接节点 v5.10.1 时握手不活动超时错误。到 aws mysql RDS

Posted

技术标签:

【中文标题】连接节点 v5.10.1 时握手不活动超时错误。到 aws mysql RDS【英文标题】:Handshake inactivity timeout error when connecting node v5.10.1. to aws mysql RDS 【发布时间】:2016-08-18 03:05:44 【问题描述】:

我真的很难解决这个问题。当我尝试将节点连接到 aws 的 rds mysql 数据库时,我收到此错误:

 [Error: Handshake inactivity timeout]
  code: 'PROTOCOL_SEQUENCE_TIMEOUT',
  fatal: true,
  timeout: 10000 

在线解决方案建议更新到节点 v4.2.1,但我使用的是 v5.10.1。 当我将节点连接到我的本地主机 mysql 时,我没有任何问题。

这是我的代码:

connectionpool = mysql.createPool(
        host     : 'dev-db.xxxxxx.us-west-2.rds.amazonaws.com',
        user     : 'xxxxx',
        password : 'xxxxx',
        database : 'decurate',

    );

app.get('/:table', function(req,res)
connectionpool.getConnection(function(err, connection) 
        if (err) 
            console.error('CONNECTION error: ',err);
            res.statusCode = 503;
              res.send(
                result: 'error',
                err:    err.code
            );
         else 

           connection.query('SELECT * FROM user ORDER BY user_id DESC LIMIT 20', req.params.id, function(err, rows, fields) 
                if (err) 
                    console.error(err);
                    res.statusCode = 500;
                    res.send(
                        result: 'error',
                        err:    err.code
                    );
                


                res.send(
                    result: 'success',
                    err:    '',
                    json:   rows
                );
                connection.release();
            );
        
    );


);

请指教。

谢谢!

【问题讨论】:

您是否尝试使用 mysql 命令行客户端从节点机器连接到服务器...或使用 nc 甚至 telnet -- 验证简单网络连接的东西? 是的,如果我通过 SSH 或 MSQL 工作台连接到 mysql 服务器,它工作正常。 `只是不能在节点中工作。 好的,但是来自运行节点的机器 命令nc dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306 是否返回预期的垃圾字符串,例如N 5.6.19-logxxxwRrf,FZpxxxHUQx)a-[ca?Rmysql_native_password?还是telnet dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306 甚至cat < /dev/tcp/dev-db.xxxxxx.us-west-2.rds.amazonaws.com/3306?任何这些东西都可以用来测试连接性。 我尝试了nc dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306 命令,这是我收到nc: connect to dev-db.xxxxxxxx.us-west-2.rds.amazonaws.com port 3306 (tcp) failed: Connection timed out的响应 天啊!!经过几天的头痛,我想通了。我让我的 aws ec2 实例安全组从我的 ip 而不是 ec2 ip 接收流量。赞美主!!非常感谢您的帮助@Michael-sqlbot 【参考方案1】:

我想问题出在无法连接到 mysql db 的主机上。我通过将主机配置添加到我的主机文件来解决这个问题。即使您运行任何 aws 实例,您也应该将您的域名配置为 hosts 文件。以便在您的应用程序配置中自动查找所需的 IP 地址。

127.0.0.1     localhost
127.0.0.1     yourdomain.com

重启你的 apache。

它对我有用。试试这个并告诉我。

【讨论】:

以上是关于连接节点 v5.10.1 时握手不活动超时错误。到 aws mysql RDS的主要内容,如果未能解决你的问题,请参考以下文章

Sails js错误:握手不活动超时

错误:Node.js MYSQL 模块中的握手不活动超时

net/http:使用 KOPS 的 TLS 握手超时

常见网络知识面试题

SQL Server 登录前握手

mysql连接超时问题