mongodb的連接問題,綁定IP惹的禍

剛剛安裝好了 mongodb 。對着 mongodb in action上的例子敲了下面的代碼:

public class TestDBConnect {
	@Test
	public void testdb() {

		MongoClient mongoClient = null;
		try {
			mongoClient = new MongoClient("xx.xx.xx.xx", 27017);
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		DB db = mongoClient.getDB("crawler");
		DBCollection coll = db.getCollection("sites");

		DBObject doc = new BasicDBObject();
		String[] tags = { "database", "open-source" };

		doc.put("url", "org.mongodb");
		doc.put("tags", tags);

		DBObject attrs = new BasicDBObject();
		attrs.put("lastAddress", new Date());
		attrs.put("pingtime", 20);

		doc.put("attrs", attrs);

		coll.insert(doc);

		System.out.println("Initial document:n");
		System.out.println(doc.toString());

		System.out.println("updating pingtime...n");
		coll.update(new BasicDBObject("_id", doc.get("_id")),
				new BasicDBObject("$set", new BasicDBObject("pingtime", "30")));

		DBCursor cursor = coll.find();
		System.out.println("After updaten");
		System.out.println(cursor.next().toString());
		System.out.println("Number of site documents:" + coll.count());
		System.out.println("Removing documents...");

		coll.remove(new BasicDBObject());
	}
}

上面服務器的IP 用XX.XX.XX.XX隱去了,運行之後報了錯:

九月 20, 2013 10:19:52 上午 com.mongodb.DBTCPConnector initDirectConnection
警告: Exception executing isMaster command on localhost/xx.xx.xx.xx:27017
java.net.ConnectException: Connection refused: connect

說白了就是連接不上。

說明一下網絡情況:

安裝了mongodb的是一臺Linux服務器,IP是aa.bb.cc.dd,本機運行java程序去鏈接。

接下來我又嘗試了,在本機上運行mongo客戶端 使用

mongo aa.bb.cc.dd來連接,同樣失敗。

不死心,ssh到服務器上,使用mongo aa.bb.cc.dd來連接,失敗,我擦!

不加IP,或者使用mongo 127.0.0.1 可以連接上,到這兒我基本猜出了問題的原因了,mongodb的數據庫實例被綁定到了127.0.0.1這個IP了,使用外網IP無法訪問。

打開/etc/mongodb.conf.

bind_ip = 127.0.0.1這一行替換爲

bind_ip = aa.bb.cc.dd。重新運行上面的代碼,測試通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章