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

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

前言

老板要求将之前的项目集成为一个整体的项目,需要将之前的系统进行集成。但是上一届学长学姐的数据还保留在了实验室服务器中的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
分享给朋友: