【问题标题】:Access MySQL server in private ec2 instance in nodejs在nodejs中访问私有ec2实例中的MySQL服务器
【发布时间】:2020-06-15 16:25:37
【问题描述】:

我是 AWS 和 Node js 的新手。我想在我正在使用 Node js 构建的测试项目中查询私有 ec2 实例中的 MySQL 服务器。我应该怎么做? 谢谢

编辑:我想通过我的本地计算机访问它。我想出的方法是:

  1. 从节点 js 启动终端 - 不知道哪种方法最好

  2. 使用终端登录public ec2

  3. 通过公共实例连接私有 ec2

  4. 通过私有实例启动MySQL客户端并查询。

我想知道是否有更好的方法来做到这一点。以及有关如何实现相同目标的任何建议

【问题讨论】:

  • 需要阅读有关 VPC、私有子网、Internet 网关、NAT 网关、VPC 接口端点、安全组、nacles 等的信息。 AWS 文档是一个很好的起点。
  • 您是要从外部(互联网)还是从同一 VPC 中的另一个 EC2 实例查询 MySQL?因为这一点对于使用 NAT 网关或任何其他方法都很重要

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


【解决方案1】:
  1. 安装包:mysql

    npm install -save mysql

  2. 将 MySQL 连接到服务器。

例子:

const mysqlConnection = require('mysql').createConnection;

mysqlConnection = mysqlConnection({
        host: HOST,
        user: DB_USER,
        password: DB_PASSWORD,
        database: DB_NAME,
      });
mysqlConnection.connect();

mysqlConnection.query('SELECT * FROM table_name');

注意:query() 是一个异步函数。

【讨论】:

  • 感谢您的回复。不幸的是,这不是我想要的。请参考补充。
【解决方案2】:
  1. 安装包:jm-ez-mysql

    npm install jm-ez-mysql --save

    使用此文档网址:https://www.npmjs.com/package/jm-ez-mysql

  2. 配置和连接数据库 数据库.js 文件

    const My = require('jm-ez-mysql');

    // Init DB Connection
    const connection = My.init({
      host: process.env.DBHOST,
      user: process.env.DBUSER,
      password: process.env.DBPASSWORD,
      database: process.env.DATABASE,
      dateStrings: true,
      charset: 'utf8mb4',
      timezone: 'utc',
      multipleStatements: true,
      connectTimeout: 100 * 60 * 1000,
      acquireTimeout: 100 * 60 * 1000,
      timeout: 100 * 60 * 1000,
    });
    
    module.exports = {
      connection,
    };
    

在express js项目中配置数据库

/config
  /database.js
/server.js
/.env

const http = require('http');
const app = require('express')();
require('./config/database.js');
const bodyParser = require('body-parser');
const server = http.createServer(app);

server.listen(process.env.ServerPort, '0.0.0.0', () => {
  logger.info(`Express server listening on port ${process.env.ServerPort}`);
});
  1. server.js 文件

    const My = require('jm-ez-mysql');

    My.first("psu_project", ["id"], "1=1").then(function (r) { 控制台.log(r); });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2021-12-04
    相关资源
    最近更新 更多