【问题标题】:Handshake inactivity timeout error when connecting node v5.10.1. to aws mysql RDS连接节点 v5.10.1 时握手不活动超时错误。到 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

标签: mysql node.js amazon-web-services rds


【解决方案1】:

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

127.0.0.1     localhost
127.0.0.1     yourdomain.com

重启你的 apache。

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

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 2019-03-16
    • 2021-04-19
    • 1970-01-01
    • 2020-04-11
    • 2017-10-05
    • 2016-06-03
    • 2017-04-22
    • 2017-08-03
    相关资源
    最近更新 更多