关于用java连接MongDB,安全认证问题

小勇Oo 2015-08-14 07:53:06
最近在搞MondDB,从安装到java连接Mondb,学了3天了。今天遇到了一个问题,就是用java连接MongDB,时候若没开启安全认证,则一切正常,若开启了安全认证,发现老是:

boolean auth = db.authenticate(USER_NAME, PWD.toCharArray());

auth显示为:false

好了问题出来了说说我的代码场景(本人用的mngdb的版本是3.0.5):
首先免开启认证,开启mongdb服务:
mongod --dbpath=F:\Users\mongdb

然后进入admin库:
use admin
在设置超级管理员权限:
db.createUser(  
{
user: "root",
pwd: "123456",
roles:
[
{role:"userAdminAnyDatabase",db:"admin"},
"readWrite"
]
}
)


最后开启安全认证: mongod --dbpath=F:\Users\mongdb --auth

用root登录:db.auth("root", "123456")

进入mydb库,常见读写用户:
db.createUser(  
{
user: "admin",
pwd: "123456",
roles:
[
{role:"readWrite",db:"mydb"}
]
}
)


测试过,用admin登录,在控制台上进行插入数据是可以,以上有看不懂的随时问我。接下来就是头疼的问题,用java连接mongdb时候的问题:
看一段java代码:
package com.lgy.util;

import java.net.UnknownHostException;
import java.util.Set;

import com.mongodb.DB;
import com.mongodb.MongoClient;

public class MongDBUtils {
public final static String IP = "localhost";
public final static Integer PORT = 27017;
public final static String USER_NAME = "admin";
public final static String PWD = "123456";
public final static String collectionName = "mydb";
public static DB getDB() {
MongoClient mongoClient;
DB db = null;
try {
mongoClient = new MongoClient(IP, PORT);
// mongoClient = new MongoClient();
db = mongoClient.getDB(collectionName);
boolean auth = db.authenticate(USER_NAME, PWD.toCharArray());

System.out.println(auth);
} catch (UnknownHostException e) {
e.printStackTrace();
}
return db;
}
}




测试代码:
public class Test {
//测试连接状态
public static void init() {
DB db = MongDBUtils.getDB();
System.out.println(db.getCollectionNames().size());
}

public static void main(String[] args) {
init();
}
}


然后就老是报错说权限不组,auth也老是显示为false。 I don't know what 's with my code!
...全文
160 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧