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();
}
}
}
}