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