如何使用用户名和密码设置 MongoDB

How to setup MongoDB with username and password

我正在 ubuntu 18.04 中设置 mongo db。我已经使用他们 page 上给出的命令安装了它。安装后,我已经下载 NoSqlBooster 并使用本地主机连接到 Mongo 服务器。

我创建了一个名为RIPE 的数据库,并且还添加了一些集合和测试文档。此时,我还为 RIPE 创建了一些读取用户,以便我可以与同事共享读取用户凭据以供他们使用。我不希望他们进行更改,所以只想给他们读取权限。下面是截图

我的第一个问题是,我在 RIPE 数据库中添加了 ttread 用户,我们可以在上图中看到它,但为什么它也显示在 RIPE 数据库之外?

我的第二个问题是,如何让用户直接连接到 RIPE 数据库。在 nosqlbooster 中,当我连接到本地主机时,我提到 AuthDBRIPE,如下所示:

并且当它连接时,它还会显示其他数据库,例如 adminconfiglocal

最后一个问题,在设置 mongodb 时如何添加用户名和密码,因为任何用户都可以在没有用户名和密码的情况下连接到本地主机。那么设置安全性的最佳方法是什么。

谢谢

为了启用身份验证,请执行以下步骤:

  1. 更改您的配置文件并启用身份验证:

    security:
      authorization: enabled
    
  2. 重新启动您的 MongoDB,通常 systemctl restart mongod

  3. 创建用户管理员

    db.getSiblingDB("admin").createUser({
       user: "root",
       pwd: passwordPrompt(), // or cleartext password
       roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    })
    

除非创建了用户管理员,否则您仍然可以在没有 username/password 的情况下连接到您的 MongoDB,此行为称为 Localhost Exception

就我个人而言,除了 admin,我认为没有任何理由在其他数据库中创建用户,请参阅

我会这样创建用户:

db.getSiblingDB("admin").runCommand( {
   createUser: "ttread",
   pwd: passwordPrompt(),
   roles: [ { role: "read", db: "RIPE " } ]
} )