当前位置:首页 > 数据库 > 【一次Mongodb远程访问失败的记录】通过命令查询当前启动Mongodb的路径并进行配置修改

【一次Mongodb远程访问失败的记录】通过命令查询当前启动Mongodb的路径并进行配置修改

2022年11月08日 23:07:52数据库26

前言

老板要求将之前的项目集成为一个整体的项目,需要将之前的系统进行集成。但是上一届学长学姐的数据还保留在了实验室服务器中的MongoDB上,当尝试使用本地运行的系统访问服务器的数据库的时候却遇到了错误。

com.mongodb.MongoSocketOpenException: Exception opening socket
【一次Mongodb远程访问失败的记录】通过命令查询当前启动Mongodb的路径并进行配置修改 _ JavaClub全栈架构师技术笔记

解决过程

查看是否是服务器启动Mongodb服务

查看当前27017端口是否运行:
netstat -lanp| grep "27017"
这里显示端口确实正在数据库监听。

unix  2      [ ACC ]     STREAM     LISTENING     36793    2059/mongod          /run/mongodb/mongodb-27017.sock

因此服务器是正常运行的,只是我的电脑没有办法进行远程访问,因此排除服务器问题。

后面查找了解到可能是因为服务器配置文件的问题,需要允许访问的IP范围。

尝试查找服务器中的数据库位置

为了修改配置文件,我需要找到数据库究竟被学长学姐放在目录下。通过locate命令我找到了所有可能和MongoDB有关的文件路径,终于找到了关键信息:mongod
mongod所在目录下运行mongod命令,果然能够打开数据并进行访问了。说明本机的服务也是没有问题的。

尝试修改配置文件

当时服务器的安装和配置都不是我做的,找到这些文件无异于大海捞针。

locate filename
通过使用这个命令,我尝试查找当前数据库的配置文件

root@server507:/usr/bin# locate mongodb.conf
/path/mongodb.conf

打开配置文件,果然文件中的配置限制了只允许本机进行访问。

经过学习了解到,Mongodb数据库配置需要修改配置文件

mongodb.conf
将配置文件里面的配置进行修改

# bind_ip = 127.0.0.1
bind_ip = 0.0.0.0

但是,我怎么确定哪个配置文件是现在正在运行的服务所使用的呢?

因此我需要看一下服务器当前运行的服务使用的配置信息存在哪里。
重新启动MongoDB数据库并在数据库中使用以下命令:

use local;
db.startup_log.find({}, { _id:0, hostname:1, startTime:1, cmdLine:1}).sort({startTime:-1}).limit(1)
root@server507:/usr/bin# mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Server has startup warnings: 
2022-03-22T18:49:19.368+0800 I STORAGE  [initandlisten] 
2022-03-22T18:49:19.368+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2022-03-22T18:49:19.368+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2022-03-22T18:49:23.241+0800 I CONTROL  [initandlisten] 
2022-03-22T18:49:23.241+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2022-03-22T18:49:23.241+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2022-03-22T18:49:23.241+0800 I CONTROL  [initandlisten] 
2022-03-22T18:49:23.242+0800 I CONTROL  [initandlisten] 
2022-03-22T18:49:23.242+0800 I CONTROL  [initandlisten] ** WARNING: You are running on a NUMA machine.
2022-03-22T18:49:23.242+0800 I CONTROL  [initandlisten] **          We suggest launching mongod like this to avoid performance problems:
2022-03-22T18:49:23.242+0800 I CONTROL  [initandlisten] **              numactl --interleave=all mongod [other options]
2022-03-22T18:49:23.242+0800 I CONTROL  [initandlisten] 
> use local;
switched to db local
> db.startup_log.find({
     }, {
      _id:0, hostname:1, startTime:1, cmdLine:1})
{
      "hostname" : "???", "startTime" : ISODate("202???"), "cmdLine" : {
      "config" : "/path/mongodb.conf", "net" : {
      "bindIp" : "127.0.0.1", "unixDomainSocket" : {
      "pathPrefix" : "/path/mongodb" } }, "storage" : {
      "dbPath" : "/path/mongodb", "journal" : {
      "enabled" : true } }, "systemLog" : {
      "destination" : "file", "logAppend" : true, "path" : "/path/mongodb/mongodb.log" } } }

果然当前绑定的IP只是127.0.0.1,因此我的电脑是无法连接到数据库的。修改对应path的配置文件,重启服务器。大功告成!

作者:Lf_MrF
来源链接:https://blog.csdn.net/Lf_MrF/article/details/123668351

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/68542.html

标签: MongoDBGo
分享给朋友:

“【一次Mongodb远程访问失败的记录】通过命令查询当前启动Mongodb的路径并进行配置修改” 的相关文章

Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)

Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第104篇原创 文章工程: * JDK 1.8 * Maven 3.5.2 * Spring Boot 2.1.3.R...

WebFlux 集成 Thymeleaf 、 Mongodb 实践,Spring Boot 2

WebFlux 集成 Thymeleaf 、 Mongodb 实践,Spring Boot 2

这是泥瓦匠的第105篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-5-thymeleaf-mong...

配置Python、Django环境变量教程

配置Python、Django环境变量教程

配置环境变量 在Windows下你必须配置环境变量! 右击桌面或者你能看到的任何 此电脑、这台电脑或者我的电脑。 右击:属性   点击:高级系统设置 点击:环境变量   找到系统变量下的Path...

Golang面试题

目录 Golang面试题 1. defer的执行顺序 for循环时使用指针赋值为副本形式 go执行的随机性和闭包的局部变量 go的组合继承实现OOP的继承 5. se...

golang对我有益的文章总集

golang 知识总结:https://www.cnblogs.com/darope/p/14455404.html go 常见面试题整理、金三银四全靠它了:https://www.cnblogs.com/darope/p/14469747.html 工程实践:给函数取一个"好"的名字...

Go函数篇

Go函数篇

本文参考:https://www.liwenzhou.com/posts/Go/09_function/ 函数 函数概述 函数是一段能够重复使用的代码的封装。函数参数定义了外界给函数输入的数据。返回值定义了函数给外界输出的数据。Go语言函数支持不定长参数和多个返回值。...

golang面向对象分析

说道面向对象(OOP)编程, 就不得不提到下面几个概念: 抽象 封装 继承 多态 其实有个问题Is Go An Object Oriented Language?, 随便谷歌了一下, 你就发现讨论这个的文章有很多:...

ERROR Processor got uncaught exception.ERROR Processor got uncaught exception. (kafka.network.Processor) java.lang.ArrayIndexOutOfBoundsException: 18

[2018-11-23 15:35:14,958] ERROR Processor got uncaught exception. (kafka.network.Processor)java.lang.ArrayIndexOutOfBoundsException: 18 at org....

215.go面试题

1.统计字母出现的频率 面试官建议使用生产者消费者模型 type LetterFreq map[rune]int func CountLetters(strs []string, concurrency int) LetterFreq { if len(strs) &...

go defer

最近看到一道Go语言的面试题,如下: package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }(...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。