You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS连接Ubuntu服务器MongoDB时出现认证及数据库名称错误

解决MongoDB连接的数据库名称无效与认证问题

问题分析

从错误信息能直接看到两个核心问题:

  1. 数据库名称非法:连接字符串末尾的/被识别为数据库名的一部分,导致MongoDB判定数据库名(如messio/)无效,触发InvalidNamespace错误。
  2. 认证数据库未指定:你的admin用户是在admin数据库下创建的,默认情况下Mongoose会尝试用目标数据库(dbname)认证,但该数据库尚未创建,且admin用户的权限信息存储在admin库,因此会出现认证失败。

修复方案

1. 修正连接字符串

去掉连接字符串末尾的斜杠,同时添加authSource=admin参数指定认证数据库:

const mongoose = require("mongoose");
mongoose.set("strictQuery", true);
// 修复后的连接代码
mongoose
    .connect(`mongodb://${process.env.DB_USER_PASS}@2.56.247.250:27017/dbname?authSource=admin`)
    .then(() => console.log('已连接到数据库'))
    .catch((err) => console.log("连接错误:", err));

注意:process.env.DB_USER_PASS必须是用户名:密码的格式,比如admin:yourAdminPassword,确保环境变量配置正确。

2. 验证admin用户权限

登录MongoDB Shell确认用户权限:

# 以admin用户身份连接到admin库认证
mongo -u admin -p 你的密码 --authenticationDatabase admin
# 切换到目标数据库(不存在会自动创建)
use dbname
# 查看用户权限
db.runCommand({ usersInfo: "admin", showPrivileges: true })

3. 检查服务器MongoDB配置

确保Ubuntu服务器允许远程连接:

  • 编辑/etc/mongod.conf,将bindIp改为0.0.0.0(生产环境建议限制为特定IP)
  • 重启MongoDB服务:sudo systemctl restart mongod

内容的提问来源于stack exchange,提问作者Arnaud Derison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:31:47