Mongodb mongo的命令行身份验证失败

Mongodb mongo的命令行身份验证失败,mongodb,Mongodb,我正在osx上运行Mongo2.2.2 当我执行以下身份验证时,一切正常: $ mongo >> use admin >> db.auth("uname", "password") 日志: 但是,当我尝试直接从命令行进行身份验证时: $ mongo admin -u uname -p password 我得到以下错误: Thu Mar 7 14:25:52 [initandlisten] connection accepted from 127.0.0.1:6393

我正在osx上运行Mongo2.2.2

当我执行以下身份验证时,一切正常:

$ mongo
>> use admin
>> db.auth("uname", "password")
日志:

但是,当我尝试直接从命令行进行身份验证时:

$ mongo admin -u uname -p password
我得到以下错误:

Thu Mar  7 14:25:52 [initandlisten] connection accepted from 127.0.0.1:63939 #12 (5 connections now open)
Thu Mar  7 14:25:52 [conn12]  authenticate db: admin { authenticate: 1, nonce: "789", user: "uname", key: "147" }
Thu Mar  7 14:25:52 [conn12] auth: key mismatch uname, ns:admin
Thu Mar  7 14:25:52 [conn12] end connection 127.0.0.1:63939 (4 connections now open)

有人知道这是什么原因吗?

包含特殊字符(尤其是美元符号)的密码必须放在单引号中,以保护它们不受命令shell的影响:

$ mongo admin -u uname -p 'password'

您必须使用
--authenticationDatabase
指示mongodb在何处查找您创建的用户。例如:

mongo admin -u uname -p 'password' --authenticationDatabase admin

这是从终端访问authenticate MongoDB数据库的方法

mongo -u user_name -p "your_password" host_name/database_name
Ex:

mongo -u hasib -p "123456" localhost/my_db

要通过命令行登录MongoDB,请执行以下操作

$ mongo admin -u 'username' -p 'Password'

正如为防止向bash历史公开密码所解释的,使用
mongo admin-u uname-p
,它将提示您password@Kimmo你的评论本身就是一个答案。使用
-p
获得的密码提示不需要保护/转义特殊字符,因此输入密码时可以不带引号。我将投票支持这个答案,其中包括额外的安全奖金!您在2013年也得到了完全相同的回复!上述命令必须按原样运行,禁止使用
uname
password
的值。
$ mongo admin -u 'username' -p 'Password'