MongoDB连接到AWS Mean stack上的Node

时间:2018-08-30 10:28:22

标签: mongodb mean

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

我正在使用mongo,node,表示堆栈的一部分,目前我不需要或不知道任何角度。我认为这比在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默认用户,等等。

当我进入我的app文件夹并启动服务器(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' }

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

Mos。

2 个答案:

答案 0 :(得分:0)

一些改进。我现在已经编辑mongo.conf以启用不进行身份验证。然后,我运行mongod,其中没有声明用于存储数据的/ data / db文件夹。因此,我创建了文件夹并再次运行mongod。现在所有页面都可以使用,但是mongo shell命令'mongo'在终端上不可用。

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

因此,我尝试更新mongod dbpath,但似乎没有更新。

答案 1 :(得分:0)

好。找到解决方案。

  1. 在mongo.conf文件中,我将dbpath设置为/ data / db
  2. 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,因此下一步是获取我的数据库连接字符串以进行认证。

希望它可以帮助某人。

谢谢