无法连接远程MongoDB数据库

在远程服务器上(CentOS6.5)安装 MongoDB(版本3.2.10),按照如下命令启动:

#!/bin/bash
### start mongodb shell
### dbpath 表示执行数据库存放目录(若不指定,则默认值为/data/db)
### fork 表示以Daemon方式运行
### auth 表示需要帐号密码
### 【注意】如果指定fork参数,则必须指定logpath参数
/opt/mongodb/mongodb-3.2.10/bin/mongod --auth --dbpath=/opt/mongodb/mongodbdata --fork --logpath=/opt/mongodb/mongodblog

也添加了用户/密码,并添加了测试库、测试集合、测试数据;

在服务器(即安装MongoDB的机器)上登录ok,查询数据ok;

也确认服务器的该端口对公网开放;


但是用MongoVUE远程连接,死活连不上,报错如下:


报错为认证失败,网上查询,认证失败,就是帐号或密码错误;

但经过确认,在服务器上登录、查询均没有问题,说明肯定不是这个错误。

又说是因为服务器启动的时候,缺少 bind_ip参数,如果不加该参数,则允许访问的地址均为本地地址。

经笔者测试,即使加上该参数,依然无法连接。


有找到一篇博文,说MongoVUE暂不支持3.0以上的MongoDB版本,

博文地址为:https://www.oschina.net/question/1473401_2160373

搞不明白,因此现在该问题依然未解决。


另外,使用Java连接远程MongoDB也是相同的问题,无法连接,报错相同。代码如下:

public static void main(String[] args) {
	List<MongoCredential> credentials = new ArrayList<MongoCredential>();
	credentials.add(MongoCredential.createMongoCRCredential("zhangsan", "demo1", "123456".toCharArray()));
	
	ServerAddress serverAddress = new ServerAddress("localhost", 27017);
	MongoClient mongoClient = new MongoClient(serverAddress, credentials);
	
	MongoDatabase db = mongoClient.getDatabase("demo1");
	
	//操作
	MongoCollection<Document> collection = db.getCollection("person");
	FindIterable<Document> it = collection.find();
	MongoCursor<Document> iterator = it.iterator();
	while(iterator.hasNext()) {
		Document doc = iterator.next();
		System.out.println(doc.toJson());
	}
	
	// 关闭数据库连接
	mongoClient.close();
}



【2016-11-04 晚上11点】

代码无法连接MongoDB的错误,终于找到原因:

使用createScramSha1Credential方法替换createMongoCRCredential方法,即可正常连接MongoDB。

至于原因,不得而知。

可参考API:http://api.mongodb.com/java/current/com/mongodb/MongoCredential.html

博文也有说明:http://stackoverflow.com/questions/28857921/cannot-connect-to-mongodb-3-0-0-by-using-c-sharp-driver-1-10


通过另一MongoDB客户端Robomongo0.9.0的连接界面,再猜测MongoVUE无法连接MongoDB,估计也是由于MongoVUE底层调用的方法没有修改吧。截图如下:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值