【问题标题】:How do I connect local nodeJS server with MySQL which is running on AWS?如何将本地 nodeJS 服务器与在 AWS 上运行的 MySQL 连接?
【发布时间】:2018-08-27 10:36:07
【问题描述】:

这是我连接 MYSQL 的代码,我收到 connection timeout 错误:

这是我连接MYSQL的连接文件:

/*
* @sqlConnection
* Creates the connection, makes the query and close it to avoid concurrency conflicts.
*/

var mysql = require('mysql');
var sqlConnection = function sqlConnection(sql, values, next) {

    // It means that the values hasnt been passed
    if (arguments.length === 2) {
        next = values;
        values = null;
    }
    var connection = mysql.createConnection({
        "host": process.env.dbHost,
        "user": process.env.dbUser,
        "password": process.env.dbPass,
        "database": process.env.dbName,
        "port":process.env.dbPort
    });
    connection.connect(function (err) {
        if (err !== null) {
            console.log("[MYSQL] Error connecting to mysql:" + err + '\n');
        }
        else {
            console.log("Connection is available");
        }
    });

    connection.query(sql, values, function (err) {
        connection.end(); // close the connection

        if (err) {
            throw err;
        }

        // Execute the callback
        next.apply(this, arguments);
    });
};

module.exports = sqlConnection;

这是我得到的错误:

Error: connect ETIMEDOUT
    at Connection._handleConnectTimeout (/home/himanshu/node_modules/mysql/lib/Connection.js:411:13)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at Socket.emit (events.js:208:7)
    at Socket._onTimeout (net.js:420:8)
    at ontimeout (timers.js:482:11)
    at tryOnTimeout (timers.js:317:5)
    at Timer.listOnTimeout (timers.js:277:5)
    --------------------

我认为我在配置文件中做错了,我不知道在 db HOST 中提供什么或者我实际上如何连接 aws mysql db:

dbHost=00.00.000.000 // aws instance ip
dbName=HIMANSHU
dbUser=ROOT
dbPass=PASSWORD
dbPort=3360

【问题讨论】:

    标签: mysql node.js amazon-ec2 mysql-error-1064


    【解决方案1】:

    @Himanshu 只需检查您的实例的入站规则。 根据您的代码,您似乎正在您的 EC2 机器上运行 MySQL。

    因此,请确保您已在入站规则和出站规则中允许 3306 端口

    【讨论】:

    • 我刚刚设置了入站规则,现在我收到Error connecting to mysql:Error: connect ECONNREFUSED 错误。
    • 您的 conf 文件中的 DB 端口是 3360,如果不手动更改则更改为 3306。确保您的入站规则仅根据 db 端口设置。
    • 只要确定你的数据库正在监听哪个端口
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2013-03-10
    • 2012-10-11
    • 2020-01-04
    • 2021-07-22
    • 2019-03-21
    • 2017-04-20
    相关资源
    最近更新 更多