开发者社区 问答 正文

如何处理登录失败的问题?


我在Mongodb实例上新建了一个账号,账号和密码都是test,但执行` mongo —host $myhost —port $myport -u test -p test`提示Authentication failed。


Mongodb的帐号是跟数据库(DB)关联的,鉴权时需要指定帐号所属的数据库信息,假设test帐号属于admin数据库,则可使用如下命令登录: mongo —host $myhost —port $myport -u test -p test —authenticationDatabase admin

或者 mongo —host $myhost —port $myport
mongo> use admin
mongo> db.auth(“test”, “test”)

展开
收起
云栖大讲堂 2017-10-30 17:32:58 1433 分享 版权
阿里云 AI 助理回答

您遇到的问题很常见,MongoDB中的用户账户确实需要与特定的数据库关联,并且在进行身份验证时,必须指定该用户的认证数据库(即该用户被创建时所在的数据库)。在您的例子中,如果test账号是在admin数据库下创建的,那么执行mongo命令时,必须明确指定--authenticationDatabase admin参数。

您提供的解决方案是正确的:

mongo --host $myhost --port $myport -u test -p test --authenticationDatabase admin

这条命令指定了连接的主机、端口、用户名、密码以及认证数据库(admin),这样就可以成功通过认证了。

另一种方式是先不带认证信息连接到MongoDB,然后切换到相应的数据库并执行db.auth()方法进行登录认证,如您所述:

mongo --host $myhost --port $myport
mongo> use admin
mongo> db.auth("test", "test")

这种方法在交互式使用或脚本中也很常用,先连接再认证。请确保按照您的实际情况调整 $myhost$myport 为实际的主机地址和端口号。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答