我已经尝试了几天,但没有成功将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。
答案 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)
好。找到解决方案。
转到/ opt / bitnami / mongodb / bin / mongo 将/opt/bitnami/mongodb/tmp/mongodb-27017.sock“ $ @” 更改为 /tmp/mongodb-27017.sock“ $ @”
可以使用sudo nano / opt / bitnami / mongodb / bin / mongo然后编辑文件。
仍然没有启用noauth,因此下一步是获取我的数据库连接字符串以进行认证。
希望它可以帮助某人。
谢谢