如何在MongoDB上用密码创建新用户并从NodeJS应用程序连接

时间:2019-05-27 22:40:50

标签: node.js mongodb mongoose nosql

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

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

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

我在NodeJS上使用Mongoose

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

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

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

它给了我身份验证失败

1 个答案:

答案 0 :(得分:0)

  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. 连接猫鼬时,您可以在连接URI中或作为选项传递它
mongoose.connect('mongodb://userApp:passwordApp@localhost:27017/myAmazingApp');

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