我在管理数据库中定义了superuser
:
$ mongo admin -u superuser -p 1234
MongoDB shell version: 2.4.6
connecting to: admin
> db.system.users.findOne()
{
"_id" : ObjectId("52a9a8bd2db854b07d3960f1"),
"user" : "superuser",
"pwd" : "8c246ca972a74c8049b79771df9b718b",
"roles" : [
"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"clusterAdmin",
"readWriteAnyDatabase"
]
}
但现在我无法使用此用户连接到另一个数据库:
$ mongo mono -u superuser -p 1234
MongoDB shell version: 2.4.6
connecting to: mono
Thu Dec 12 13:22:42.100 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228
exception: login failed
这是一个已知的功能/限制还是我做错了什么?
答案 0 :(得分:4)
经过认证的mongo是一种皇室般的痛苦。即使您的超级用户基本上是无所不在的[“userAdminAnyDatabase”,“dbAdminAnyDatabase”,“clusterAdmin”,“readWriteAnyDatabase”],如果您按照{设置它',他的system.user帐户仍然位于“admin”数据库中{3}}。这意味着您必须首先登录“admin”,然后您可以“自行使用数据库”。
$ mongo mono -u superuser -p 1234 admin
MongoDB shell version: 2.4.6
connecting to: admin
myReplSet:PRIMARY> use mono
或者,我怀疑但是没有测试过您可以将超级用户放入“测试”数据库而不是“管理员”,这是shell默认放置的地方。这样可以让你从mongo命令行中删除“admin”,但现在你已经让你的用户在不同的地方维护了。岩石。硬地。