MongoDB shell命令行认证失败

问题描述 投票:23回答:2

我设置了副本集与认证。我用的是 这个 教程。我设置了keyfile,管理员用户和其他用户。这一切都很好 - 匿名访问被禁用,我可以登陆

$ 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

使用相同的凭证。我没有在文档或SO上找到任何有用的东西。

mongodb authentication database-replication
2个回答
56
投票

在你的例子中执行的shell内认证是针对于 管理员 数据库。上面发布的命令行并没有指定数据库,因此是针对默认的数据库进行验证,该数据库是 检验. 试着通过命令行对admin db进行认证。

mongo admin -u 'USERNAME' -p 'PASSWORD'

如果服务器不在本地主机上,那么你可以用这个。

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

1
投票

也许现在不同了,因为这个问题最初的答案是更新的,但只有当用户名和密码用双引号包裹时,验证才会成功,例如:

mongo admin -u "myName" -p "myPassword"
© www.soinside.com 2019 - 2024. All rights reserved.