我正在 Ubuntu 18.04 中设置 MongoDB。我已经使用其page上给出的命令安装了它。安装完成后,我已经下载了
NoSqlBooster
并使用 localhost 连接到 Mongo 服务器。
我创建了一个名为
RIPE
的数据库,并添加了一些集合和测试文档。此时,我还为 RIPE
创建了一些读取用户,以便我可以与同事共享读取用户凭据,供他们使用。我不想让他们进行更改,所以只想给他们读取权限。下面是截图:
我的第一个问题是,我在
ttread
数据库中添加了 RIPE
用户,我们可以在上图中看到,但为什么它也在 RIPE
数据库之外显示它?
我的第二个问题是,如何让用户直接连接到
RIPE
db.在nosqlbooster中,当我连接到本地主机时,我将AuthDB
提到为RIPE
,如下所示:
当它连接时,它也会显示其他数据库,例如,
admin
,config
,local
。
最后一个问题,在设置 MongoDB 时,如何添加用户名和密码,因为任何用户都可以在没有用户名和密码的情况下连接到本地主机。那么设置安全性的最佳方法是什么?
为了启用身份验证,请执行以下步骤:
更改配置文件并启用身份验证:
security:
authorization: enabled
重新启动 MongoDB,通常是
systemctl restart mongod
创建用户管理员
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 " } ]
} )