嗨,我正在做一些關於java和mongoDB的實驗。我已經成功安裝了mongoDB並能夠通過命令行進行連接。但是,當我嘗試通過java連接,然後它給我錯誤的身份驗證。我試着在下列方式:Java mongo db身份驗證失敗
[email protected]:~$ mongo -u admin -p admin123 --authenticationDatabase admin
MongoDB shell version: 3.2.9
connecting to: test
Server has startup warnings:
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten]
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten]
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-09-17T16:29:31.090+0530 I CONTROL [initandlisten]
>
,並通過java代碼:
package mongo;
import java.net.UnknownHostException;
import java.util.Date;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
/**
* Java + MongoDB Hello world Example
*
*/
public class App {
public static void main(String[] args) {
try {
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("testdb");
boolean auth = db.authenticate("admin", "admin123".toCharArray());
if (auth) {
System.out.println("Login is successful!");
} else {
System.out.println("Login is failed!");
}
System.out.println("Done");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}
,並得到了它的結果:
Login is failed!
Done
這有什麼錯?需要一些幫助。謝謝。
ÿ您正在使用Mongo Java驅動程序v2的語法。更好地切換到Mongo3語法(MongoClient和MongoCredentials):http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/connecting/authenticating/ http://www.programcreek.com/java-api -examples/index.php?api = com.mongodb.MongoCredential – Robert
testdb是錯誤的,應該測試。嘗試並讓我知道這是否有幫助 – harshavmb