MongoDB只允许我远程连接而无需身份验证,即使配置文件中的auth = true也是如此

时间:2015-06-23 09:39:23

标签: mongodb authentication

从托管计算机内部登录MongoDB工作正常,但如果我尝试从远程位置登录,只有在我不提供用户名和密码时才允许我进入shell。 ES:

$ mongo AAA.BBB.CCC.DDD/dbname 
MongoDB shell version: 2.4.11
connecting to: AAA.BBB.CCC.DDD/dbname
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
> 

但是,如果我尝试提供凭证(在主机内完美运行):

$ mongo AAA.BBB.CCC.DDD:27017/dbname -u username -p password
MongoDB shell version: 2.4.11
connecting to: AAA.BBB.CCC.DDD:27017/dbname
Tue Jun 23 11:32:35.967 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:228
exception: login failed
$

我的配置文件没有任何绑定IP设置,auth设置为true,只有我想到的是主机上的mongo-shell版本(工作版)是3.0.1,而远程客户有2.4.11。有没有人知道发生了什么?

2 个答案:

答案 0 :(得分:4)

我遇到了与MongoDB shell版本相同的问题:2.4.9尝试连接到远程MongoDB服务器版本:3.0.6

删除MongoDB shell版本2.4.9并安装MongoDB shell 3.0.6版完全解决了这个问题。

我的客户机正在运行Ubuntu 14.04,我在运行sudo apt-get install mongo-clients之后得到了MongoDB shell版本2.4.9,这当然不是suggested method of installing MongoDB所以我删除了2.4.9版本并安装了3.0版本.6在客户端上如下:

$ sudo apt-get remove mongodb-clients
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
$ sudo apt-get install mongodb-org-shell

之后,连接到以前失败的远程MongoDB服务器现在运行正常(使用bash历史记录重新执行先前使auth失败的命令)

答案 1 :(得分:0)

您似乎缺少mongo AAA.BBB.CCC.DDD中的--authenticationDatabase选项:27017 / dbname -u username -p password。该值应该是用户所属的数据库。