MongoDB 连接到 AWS 上的节点 平均堆栈

Posted

技术标签:

【中文标题】MongoDB 连接到 AWS 上的节点 平均堆栈【英文标题】:MongoDB connecting to Node on AWS Mean stack 【发布时间】:2019-02-05 06:22:40 【问题描述】:

我已经尝试了几天将我的 mongoDB 连接到 MEAN 堆栈但没有成功。它在 AWS lightsail (Bitnami) 上运行。网站本身运行良好,除了任何有 ajax/db 调用的页面,因为数据库没有连接/验证我的连接字符串。

我正在使用 mongo,node,express 堆栈的一部分,我目前不需要也不知道任何角度。我认为这比在 nodeJS 上设置然后单独添加 mongoDB 更容易(好吧,我确实尝试过类似的问题),我确实打算在未来学习 angualar,所以这可能是更好的长期。服务器端设置目前是一个弱点。

我正在使用猫鼬进行连接。我可以使用以下方式访问数据库: mongo admin --username root -p SSH 密码。

我也可以通过 Rockmongo SSH 访问数据库。目前数据库中只有一个管理员用户,即root。

我的初始服务器/启动文件如下:

server.js

const app = require('/opt/bitnami/apps/MYAPP/app.js');

require('dotenv').config( path: 'variables.env' );

const mongoose    = require("mongoose");

mongoose.Promise = global.Promise;  

mongoose.connect(process.env.DATABASE_CONN);

app.listen(3000,function()
   console.log("Server has started!");
 );

variables.env

DATABASE_CONN = mongodb://root:password@127.0.0.1:27017/MYAPPDATABASE

我还尝试了许多其他连接字符串,将 root 换成 bitnami 默认用户等。

当我转到我的应用程序文件夹并启动服务器(npm start 或 node server.js)时,网站启动但出现以下 mongoDB 身份验证错误,以下只是第一部分。

> Server has started!
Connection error:  MongoError: Authentication failed.
    at /opt/bitnami/apps/MYAPP/node_modules/mongoose/node_modules/mongodb-core/lib/con
nection/pool.js:595:61
    at authenticateStragglers (/opt/bitnami/apps/MYAPP/node_modules/mongoose/node_modu
les/mongodb-core/lib/connection/pool.js:513:16)
    at Connection.messageHandler (/opt/bitnami/apps/MYAPP/node_modules/mongoose/node_m
odules/mongodb-core/lib/connection/pool.js:549:5)
    at emitMessageHandler (/opt/bitnami/apps/MYAPP/node_modules/mongoose/node_modules/
mongodb-core/lib/connection/connection.js:309:10)
    at Socket.<anonymous> (/opt/bitnami/apps/MYAPP/node_modules/mongoose/node_modules/
mongodb-core/lib/connection/connection.js:452:17)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:597:20)
  name: 'MongoError',
  message: 'Authentication failed.',
  ok: 0,
  errmsg: 'Authentication failed.',
  code: 18,
  codeName: 'AuthenticationFailed' 

任何帮助或指导将不胜感激。非常感谢。

每月。

【问题讨论】:

【参考方案1】:

好的。找到解决方案。

    在 mongo.conf 文件中,我将 dbpath 设置为 /data/db mongo shell 指向 /opt/bitnami/mongodb/tmp/mongodb-27017.sock "$@"

转到 /opt/bitnami/mongodb/bin/mongo 将 /opt/bitnami/mongodb/tmp/mongodb-27017.sock "$@" 更改为 /tmp/mongodb-27017.sock "$@"

可以使用 sudo nano /opt/bitnami/mongodb/bin/mongo 做到这一点,然后编辑文件。

仍然没有打开 noauth,所以下一步是让我的数据库连接字符串进行身份验证。

希望对某人有所帮助。

谢谢

【讨论】:

【参考方案2】:

一些改进。我现在已经编辑了 mongo.conf 以启用 no auth。然后我运行了 mongod ,它声明没有 /data/db 为其存储数据的文件夹。所以我创建了文件夹并再次运行 mongod。现在所有页面都可以工作,但 mongo shell 命令 'mongo' 将无法在终端上工作。

我认为是因为 mongod dbpath 设置为 data/db,而 mongodb conf 文件 dbpath 设置为 /opt/bitnami/mongodb/data/db。

所以我正在尝试更新 mongod dbpath,但它似乎没有更新。

【讨论】:

以上是关于MongoDB 连接到 AWS 上的节点 平均堆栈的主要内容,如果未能解决你的问题,请参考以下文章

无法通过节点休息应用程序上的mongoose连接到mongodb-altas,连接失败:“UnhandledPromiseRejectionWarning:错误:连接EACCES”

从 Elastic Beanstalk 连接到托管在 AWS ec2 上的 MongoDB

如何设置 SSH 隧道以连接到位于 AWS EC2 服务器上的 ElasticSearch 和 MongoDB?

Amazon AWS Elastic Beanstalk - 连接到 mongodb

AWS - 节点应用程序不会连接到正在运行的 mongo 实例

AWS Lambda 上的节点函数无法使用 node-pg 连接到数据库