如何获得mongodb身份验证

时间:2016-10-14 16:34:59

标签: mongodb

这让我疯了......

我曾经工作过一次,但我花了一两天的时间才能做到正确:一个好的MongoDB数据库,有一堆集合,可以通过Java客户端访问。一切都很好,除了我忘了注意我是如何正常工作的。

现在我需要添加第二个数据库。我根本无法获得身份验证 - 我向管理员db添加了一个新用户,但没有成功。我将用户添加到新的数据库本身,仍然没有成功。我甚至尝试了这里提出的解决方案:MongoDB 3.2 authentication failed ...但之后整个mongoDB被锁定,我的所有数据都丢失了。我不得不卸载MongoDB,并从头开始重新安装。

是否有一个简单的分步指南如何使用新数据库设置一个vanilla mongodb,以及一个可以使用用户名/密码通过Java(或任何其他远程客户端)连接的用户?我现在用Google搜索了两个小时,但我还没有找到答案。

谢谢,

的Stefan

1 个答案:

答案 0 :(得分:0)

每当你设置mongodb时,你应该创建一个角色为userAdminAnyDatabase的管理员用户,你甚至可以创建这个用户,即使mongod是以-auth开头的。您可以通过以下命令创建此用户。

use admin

db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

此后如果没有打开授权,可以通过runnig mongod使用--auth标志打开,或者在mongod.conf中启用授权并重新启动mongod服务器。

然后使用admin用户

通过以下命令登录mongo shell
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

转到数据库,创建一个具有readWrite权限的用户。

use myapplication

db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "myapplication" }]
  }
)

现在您可以使用myTester用户在myapplication数据库中进行读/写,每当您创建新数据库时,使用myUserAdmin用户启动mongo shell并为新数据库创建新用户。

在mongodb中,你也可以创建一个用户,并为他提供所有数据库的所有权限,但你不应该这样做。

如果您想进一步研究,可以查看以下链接。 https://docs.mongodb.com/v3.2/tutorial/enable-authentication/

当您意外锁定mongodb时,您可以关闭mongod.conf文件中的授权并访问您的数据。