【问题标题】:How to create new User with password on MongoDB and connect from NodeJS application如何在 MongoDB 上使用密码创建新用户并从 NodeJS 应用程序连接
【发布时间】:2026-02-18 11:40:01
【问题描述】:

我需要一些帮助来设置我的 NodeJS 应用程序以使用凭据连接到 MongoDB。

我很困惑在 admin 数据库上创建用户,或者在我将存储我的文档的数据库上创建用户,然后从我的应用程序连接到它。

所以,假设我在 localhost 端口 27017 上运行了这个 MongoDB 服务,我的数据库名为 myAmazingApp。我想在这个现在为空的数据库上创建一个具有读/写权限的用户,并设置用户 userApp 和密码 passwordApp

我在 NodeJS 上使用 Mongoose

我的问题包括我必须在哪里以及如何在 MongoDB 上创建此用户/角色/任何内容。

顺便说一下,现在这是我的连接字符串

mongodb://userApp:passwordApp@localhost:27017/myAmazingApp 我正在与mongoose.connect 联系。

它给了我身份验证失败

【问题讨论】:

  • 请将文件粘贴到您的mongoose.connect() 所在的位置。之后,粘贴您的 authentication.js 文件和您的 user.js 模型文件。

标签: node.js mongodb mongoose nosql


【解决方案1】:
  1. 通过终端登录 mongo shell
user@ubuntu:~$ mongo

并切换到管理数据库

> use admin
  1. 创建一个具有“userAdminAnyDatabase”角色的用户,该角色授予在任何现有数据库上创建其他用户的权限。
> db.createUser(
  {
    user: "adminUser",
    pwd: "adminPwd",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
  1. 从 mongo shell 断开
  2. 您需要在 mongod 配置文件中启用身份验证。打开 /etc/mongod.conf 或 /etc/mongodb.conf
security:
    authorization: "disabled"

改成

security:
    authorization: "enabled"
  1. 重启mongodb服务
user@ubuntu:~$ sudo service mongodb restart

user@ubuntu:~$ sudo service mongod restart
  1. 以用户管理员身份连接和验证
user@ubuntu:~$ mongo admin
> db.auth("adminUser", "adminPwd")
1
  1. 根据需要创建其他用户
> use myAmazingApp
> db.createUser(
  {
    user: "userApp",
    pwd: "passwordApp",
    roles: [ { role: "readWrite", db: "myAmazingApp" } ]
  }
)
  1. 连接 mongoose 时,您可以在连接 URI 中或作为选项传递它
mongoose.connect('mongodb://userApp:passwordApp@localhost:27017/myAmazingApp');

mongoose.connect('mongodb://localhost:27017/myAmazingApp', {useNewUrlParser: true, user: "userApp", pass: "user:passwordApp"});

【讨论】: