MongoDB shell命令行身份验证失败

MongoDB shell命令行身份验证失败,mongodb,authentication,database-replication,Mongodb,Authentication,Database Replication,我使用身份验证设置了副本集。我用的是教程。我设置了keyfile、admin用户和其他用户。一切正常-匿名访问被禁用,我可以登录 $ mongo MongoDB shell version: 2.6.1 connecting to: test Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

我使用身份验证设置了副本集。我用的是教程。我设置了keyfile、admin用户和其他用户。一切正常-匿名访问被禁用,我可以登录

$ mongo
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute     command { getLog: "startupWarnings" }
rs0:PRIMARY> use admin
switched to db admin
rs0:PRIMARY> db.auth("USERNAME","PASSWORD")
1
rs0:PRIMARY> 
使用我创建的用户的凭据

但是我不能从命令行登录

$ mongo -u 'USERNAME' -p 'PASSWORD'
MongoDB shell version: 2.6.1
connecting to: test
2014-05-18T14:23:47.324+0200 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at   src/mongo/shell/db.js:1210
exception: login failed

使用相同的凭据。我在文档或此处没有找到任何有用的信息。

在您的示例中执行的shell内身份验证是针对admin数据库的。上面发布的命令行没有指定数据库,因此正在对默认数据库进行身份验证,默认数据库为test。改为尝试通过命令行对admin db进行身份验证:

mongo admin -u 'USERNAME' -p 'PASSWORD'
如果服务器不在本地主机上,则可以使用以下方法:

mongo your_host_name:your_port/admin -u 'USERNAME' -p 'PASSWORD'

现在可能不同了,因为这个问题最初得到了回答,但身份验证只有在用户名/密码用双引号括起来时才能成功。 e、 g


是的,我想不出来。。。thanx,它可以工作:-)这个问题和答案值得很多人投票,因为它在Mongo文档中没有正确指定。它不应该是:
Mongo您的主机名称:您的端口/admin-u'USERNAME'-p'PASSWORD'
Good catch@sebweisgerber-我会修复。
mongo admin -u "myName" -p "myPassword"