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

问题描述 投票:0回答:1

我正在 Ubuntu 18.04 中设置 MongoDB。我已经使用其page上给出的命令安装了它。安装完成后,我已经下载了

NoSqlBooster
并使用 localhost 连接到 Mongo 服务器。

我创建了一个名为

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

我的第一个问题是,我在

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

我的第二个问题是,如何让用户直接连接到

RIPE
db.在nosqlbooster中,当我连接到本地主机时,我将
AuthDB
提到为
RIPE
,如下所示:

当它连接时,它也会显示其他数据库,例如,

admin
config
local

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

mongodb security nosql
1个回答
1
投票

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

  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" } ]
    })
    

除非创建了用户管理员,否则您仍然可以在没有用户名/密码的情况下连接到 MongoDB,这种行为称为 本地主机异常

就个人而言,我认为除了

admin
之外,没有任何理由在其他数据库中创建用户,请参阅mongodb中的“admin”数据库是什么?

我会像这样创建用户:

db.getSiblingDB("admin").runCommand( {
   createUser: "ttread",
   pwd: passwordPrompt(),
   roles: [ { role: "read", db: "RIPE " } ]
} )
© www.soinside.com 2019 - 2024. All rights reserved.