这让我疯了......
我曾经工作过一次,但我花了一两天的时间才能做到正确:一个好的MongoDB数据库,有一堆集合,可以通过Java客户端访问。一切都很好,除了我忘了注意我是如何正常工作的。
现在我需要添加第二个数据库。我根本无法获得身份验证 - 我向管理员db添加了一个新用户,但没有成功。我将用户添加到新的数据库本身,仍然没有成功。我甚至尝试了这里提出的解决方案:MongoDB 3.2 authentication failed ...但之后整个mongoDB被锁定,我的所有数据都丢失了。我不得不卸载MongoDB,并从头开始重新安装。
是否有一个简单的分步指南如何使用新数据库设置一个vanilla mongodb,以及一个可以使用用户名/密码通过Java(或任何其他远程客户端)连接的用户?我现在用Google搜索了两个小时,但我还没有找到答案。
谢谢,
的Stefan
答案 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 shellmongo --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文件中的授权并访问您的数据。