解决 MongoDB7 不用密码也可以登录

MongoDB 版本:7.0.12

之前的 conf 配置如下(mongodb.conf):

# 端口号
port=27017
# 数据存放路径 
dbpath=/home/tools/mongodb/data
# 日志路径
logpath=/home/tools/mongodb/logs/mongodb.log
# 后台启动
fork=true
# 是否需要用户名密码
auth=true
# 监听所有的地址 
bind_ip=0.0.0.0

启动命令:

bin/mongod -f conf/mongodb.conf

发现 auth=true 不生效,不用密码也可以登录、访问MongDB

解决方法

将 mongodb.conf 改成如下配置:

processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27017
storage:
   dbPath: /home/tools/mongodb/data
systemLog:
   destination: file
   path: /home/tools/mongodb/logs/mongodb.log
   logAppend: true
security:
   authorization: enabled

主要是这个配置项:

security:
   authorization: enabled

启动命令:

bin/mongod --config conf/mongodb.conf

测试 JUnit5

import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.ServerApi;
import com.mongodb.ServerApiVersion;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoIterable;


public class TestMongoDb {

	private static final String username = "root";
	private static final String password = "xxxxxxx";
	private static final String ip = "192.xxx.xx.xx";
	private static final int port = 27017;
	private static final String databaseName = "admin";

	private MongoClient mongoClient = null;

	@BeforeEach
	void setUp() {
		String connectUrl = "";

		if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) {
			// "mongodb://192.xxx.xx.xx:27017"
			connectUrl = "mongodb://" + ip + ":" + port;
		} else {
			connectUrl = "mongodb://" + username + ":" + password + "@" + ip + ":" + port;
		}
		System.out.println("测试连接MongoDB,connectUrl:" + connectUrl);

		ServerApi serverApi = ServerApi.builder().version(ServerApiVersion.V1).build();

		MongoClientSettings settings = MongoClientSettings.builder()
				.applyConnectionString(new ConnectionString(connectUrl)).serverApi(serverApi).build();

		mongoClient = MongoClients.create(settings);
	}

	@Test
	public void connect() {
		try {
			MongoIterable<String> database = mongoClient.listDatabaseNames();

			MongoCursor<String> coursor = database.iterator();

			while (coursor.hasNext()) {
				System.out.println(coursor.next());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (mongoClient != null) {
				mongoClient.close();
			}
		}
	}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值