首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS RDS使用(读取通信数据包时出错)进行响应。在当地工作

问AWS RDS使用(读取通信数据包时出错)进行响应。在当地工作
EN

Database Administration用户
提问于 2020-04-03 14:59:23
回答 1查看 7.5K关注 0票数 3

我已经在这个问题上讨论了几天了,我将报道我最后尝试过的事情。因此,我正在使用netlify-lamda从GitHub回购系统运行一个GitHub服务器。我正在连接到Amazon (MySQL)。因此,最奇怪的是,这是在本地工作,然而,当我把它带到Netlify,我会得到一个错误。

我使用Postman发送HTTP请求。

我的db.js文件:

代码语言:javascript
复制
var mysql = require("mysql");
var db;
require("dotenv").config();

function connectDatabase(){
    if(!db){
        db = mysql.createPool({
            connectionLimit: process.env.CONN_LIMIT,
            host: process.env.DB_HOST,
            user: process.env.DB_USER,
            password: process.env.DB_PASS,
            database: process.env.DB_NAME,
            port: process.env.DB_PORT
        });
    }
    return db;
}

module.exports = connectDatabase();

查询DB我执行以下操作:

代码语言:javascript
复制
router.post('/login',(req,res) => {
    var username = req.headers.username;
    var password = req.headers.password;
    var sql = `SELECT password FROM admin WHERE username= ?`;
    db.query(sql,[username],function(err,results,query){
        if(err){
            res.status(401);
            res.send("Unauthorized-sql err"); // This is where the error occurs.
        } 
        else if(!err){
            if(crypt.decrypt(results[0].password).match(password)){
                res.status(200);
                res.send("Authorized");
            }else{
                res.status(401);
                res.send("Unauthorized");
            }
        }
    });
});

RDS错误日志:

代码语言:javascript
复制
2020-04-03T14:11:31.874911Z 22 [Note] Aborted connection 22 to db: 'db' user: 'admin' host: 'xxx.xxx.xx.xx' (Got an error reading communication packets)
2020-04-03T14:11:31.877847Z 29 [Note] Aborted connection 29 to db: 'db' user: 'admin' host: 'xxx.xxx.xx.xx' (Got an error reading communication packets)
----------------------- END OF LOG ----------------------

NodeJS错误日志

代码语言:javascript
复制
6:17:18 PM: 2020-04-03T17:17:18.120Z    1d561b89-f8a1-4e78-9d7c-61dac84ea37f    INFO    Error: connect ECONNREFUSED 127.0.0.1:3306    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1137:16)

at Protocol._enqueue (/var/task/admin.js:29255:48)
at Protocol.handshake (/var/task/admin.js:29162:23)
at PoolConnection.connect (/var/task/admin.js:9041:18)
at Pool.getConnection (/var/task/admin.js:27212:16)
at Pool.query (/var/task/admin.js:27366:8)
at /var/task/admin.js:27556:6
at Layer.handle [as handle_request] (/var/task/admin.js:7030:5)
at next (/var/task/admin.js:6641:13)
at Route.dispatch (/var/task/admin.js:6616:3)
at Layer.handle [as handle_request] (/var/task/admin.js:7030:5) 
{  
errno: 'ECONNREFUSED',  
code: 'ECONNREFUSED',  
syscall: 'connect',  
address: '127.0.0.1',  
port: 3306,  
fatal: true
}   

我尝试过的

事物:

  • 改变港口。
  • 在DB实例中,我允许来自任何IP地址的所有连接。
  • 为NodeJS实例设置不同的端口。
  • 我现在转向使用MySQL池技术,错误仍然存在。
  • 防止代码的小型化/编码(尤其是对于DB实例,因为这是mysql包的一个问题)

Sidenote:这是我第一次使用AWS RDS,所以很可能这个错误是非常愚蠢的。

EN

回答 1

Database Administration用户

发布于 2020-06-19 03:16:48

我在QA环境中遇到了这种情况。我花了大量的时间启用AWS审计插件,提高性能,并在任何地方设置日志。

重新解决这个问题的方法是正确地处理Java客户端应用程序中的JDBC连接。请参考以下与您在此提出的问题有关的问题。RDS有很多消息,读取通信数据包时出错.

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/264261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档