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

小勇Oo 小勇Oo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在搞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!
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
小勇Oo
Java EE 67,535 成员 225,843 内容