Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91

本文详细介绍了在Linux环境下安装与配置MongoDB的过程,包括遇到的问题及解决方法,以及通过Java代码进行基本操作的示例。重点突出了在Linux上利用MongoDB进行数据管理和操作的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开始学习mongo 在window的安装已经掌握,操作不难,工作中使用还是在linux的使用比较多。但是参考一些文档安装完毕后。发现在启动mongo时候出现了标题的错误

最终通过重新对路径的设置解决了此问题

解决办法:输入以下命令

[root@localhost mongodb]# ./bin/mongod -dbpath=/data/db

然后界面会出现:

[root@localhost mongodb]# ./bin/mongod -dbpath=/data/db
Tue Dec 11 14:45:53 
Tue Dec 11 14:45:53 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Tue Dec 11 14:45:53 
Tue Dec 11 14:45:53 [initandlisten] MongoDB starting : pid=3813 port=27017 dbpath=/data/db 32-bit host=localhost.localdomain
Tue Dec 11 14:45:53 [initandlisten] 
Tue Dec 11 14:45:53 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Tue Dec 11 14:45:53 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Tue Dec 11 14:45:53 [initandlisten] **       with --journal, the limit is lower
Tue Dec 11 14:45:53 [initandlisten] 
Tue Dec 11 14:45:53 [initandlisten] db version v2.2.2, pdfile version 4.5
Tue Dec 11 14:45:53 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
Tue Dec 11 14:45:53 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Tue Dec 11 14:45:53 [initandlisten] options: { dbpath: "/data/db" }
Tue Dec 11 14:45:53 [initandlisten] exception in initAndListen: 10296 
*********************************************************************
 ERROR: dbpath (/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
Tue Dec 11 14:45:53 dbexit: 
Tue Dec 11 14:45:53 [initandlisten] shutdown: going to close listening sockets...
Tue Dec 11 14:45:53 [initandlisten] shutdown: going to flush diaglog...
Tue Dec 11 14:45:53 [initandlisten] shutdown: going to close sockets...
Tue Dec 11 14:45:53 [initandlisten] shutdown: waiting for fs preallocator...
Tue Dec 11 14:45:53 [initandlisten] shutdown: closing all files...
Tue Dec 11 14:45:53 [initandlisten] closeAllFiles() finished
Tue Dec 11 14:45:53 dbexit: really exiting now
[root@localhost mongodb]# ./bin/mongod -dbpath=/usr/local/mongodb/data/db/
Tue Dec 11 14:46:53 
Tue Dec 11 14:46:53 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Tue Dec 11 14:46:53 
Tue Dec 11 14:46:53 [initandlisten] MongoDB starting : pid=3819 port=27017 dbpath=/usr/local/mongodb/data/db/ 32-bit host=localhost.localdomain
Tue Dec 11 14:46:53 [initandlisten] 
Tue Dec 11 14:46:53 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Tue Dec 11 14:46:53 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Tue Dec 11 14:46:53 [initandlisten] **       with --journal, the limit is lower
Tue Dec 11 14:46:53 [initandlisten] 
Tue Dec 11 14:46:53 [initandlisten] db version v2.2.2, pdfile version 4.5
Tue Dec 11 14:46:53 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
Tue Dec 11 14:46:53 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Tue Dec 11 14:46:53 [initandlisten] options: { dbpath: "/usr/local/mongodb/data/db/" }
Tue Dec 11 14:46:53 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/usr/local/mongodb/data/db/journal"
Tue Dec 11 14:46:53 [initandlisten] waiting for connections on port 27017
Tue Dec 11 14:46:53 [websvr] admin web console waiting for connections on port 28017
Tue Dec 11 14:47:11 [initandlisten] connection accepted from 127.0.0.1:48783 #1 (1 connection now open)
Tue Dec 11 14:49:04 [initandlisten] connection accepted from 192.168.0.137:2869 #2 (2 connections now open)
Tue Dec 11 14:49:04 [FileAllocator] allocating new datafile /usr/local/mongodb/data/db/temp.ns, filling with zeroes...
Tue Dec 11 14:49:04 [FileAllocator] creating directory /usr/local/mongodb/data/db/_tmp
Tue Dec 11 14:49:05 [FileAllocator] done allocating datafile /usr/local/mongodb/data/db/temp.ns, size: 16MB,  took 0.303 secs
Tue Dec 11 14:49:05 [FileAllocator] allocating new datafile /usr/local/mongodb/data/db/temp.0, filling with zeroes...
Tue Dec 11 14:49:05 [FileAllocator] done allocating datafile /usr/local/mongodb/data/db/temp.0, size: 16MB,  took 0.328 secs
Tue Dec 11 14:49:05 [FileAllocator] allocating new datafile /usr/local/mongodb/data/db/temp.1, filling with zeroes...
Tue Dec 11 14:49:05 [conn2] build index temp.users { _id: 1 }
Tue Dec 11 14:49:05 [conn2] build index done.  scanned 0 total records. 0 secs
Tue Dec 11 14:49:05 [conn2] insert temp.users keyUpdates:0 locks(micros) w:652433 652ms
Tue Dec 11 14:49:05 [conn2] end connection 192.168.0.137:2869 (1 connection now open)
Tue Dec 11 14:49:05 [FileAllocator] done allocating datafile /usr/local/mongodb/data/db/temp.1, size: 32MB,  took 0.528 secs


表示设置成功,此时不要关闭这个界面,需要重新打开一个窗口来启动mongo

 

Last login: Tue Dec 11 14:05:30 2012 from 192.168.0.137
[root@localhost ~]# ls
anaconda-ks.cfg  Desktop  install.log  install.log.syslog
[root@localhost ~]# cd /usr/local
[root@localhost local]# ls
bin    gcc-4.1.2         gcc-install    leveldb-1.5.0.tar.gz  lib      mongodb-linux-i686-2.0.8.tgz  redis-1.2.6.tar.gz   redis-2.6.6.tar.gz  src
etc    gcc-4.1.2.tar.gz  include        leveldb-1.7.0         libexec  mongodb-linux-i686-2.2.2.tgz  redis-2.4.14         sbin
games  gcc-build         leveldb-1.5.0  leveldb-1.7.0.tar.gz  mongodb  redis-1.2.6                   redis-2.4.14.tar.gz  share
[root@localhost local]# cd mongodb
[root@localhost mongodb]# ls
bin  db  GNU-AGPL-3.0  logs  README  THIRD-PARTY-NOTICES
[root@localhost mongodb]# cd logs
[root@localhost logs]# ls
[root@localhost logs]# ls
[root@localhost logs]# 








[root@localhost logs]# cd ..
[root@localhost mongodb]# ./bin/mongo
MongoDB shell version: 2.2.2
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
> 













当出现这个时候表示启动成功,然后用java代码测试:

/**
 * MongoDbTest.java
 * 版权所有(C) 2012 
 * 创建:cuiran 2012-12-05 13:47:22
 */
package com.wpndemo.mongodb;

import java.net.UnknownHostException;

import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

/**
 * TODO
 * @author cuiran
 * @version TODO
 */
public class MongoDbTest {

	 private Mongo mg = null;   
	 private DB db;   
	 private DBCollection users;
	 
	 /**
	  * 初始化
	  * TODO
	  */
	 public void init(){
			 try {
//				mg=new Mongo();
				 mg=new Mongo("192.168.0.138",27017);
			} catch (UnknownHostException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}catch (MongoException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//获取temp DB 如果默认没有 会自动创建
			db=mg.getDB("temp");
			//获取users Collection 如果默认没有 会自动创建
			users=db.getCollection("users");
			
			
			
	 }
	 
	 /**
	  * 销毁
	  * TODO
	  */
	 public void destory(){
		 if(mg!=null){
			 mg.close();
		 }
		 mg=null;
		 db=null;
		 users=null;
		 System.gc();
		 
	 }
	 /**
	  * <b>function:</b> 查询所有数据
	  * @author cuiran
	  * @createDate 2012-12-11 09:24:11
	  */
	 public void queryAll(){
		 print("查询users的所有数据");
		 //Db游标
		 DBCursor cur=users.find();
		 while(cur.hasNext()){
			 print(cur.next());
		 }
	 }
	 
	 /**
	  * 
	  *<b>function:</b>添加数据
	  * @author cuiran
	  * @createDate 2012-12-11 09:25:23
	  */
	 public void add(){
		 queryAll();
		 
		 print("count:"+users.count());
		 DBObject user=new BasicDBObject();
		 user.put("name", "cuiran1");
		 user.put("age", 27);
		 
//		 users.save(user);
//		 print(users.save(user).getN());
		 
		 user.put("sex", "男");
		 print(users.save(user).getN());
		 
		 
		 print("count:"+users.count());
		 queryAll();
		 
	 }
	 /**
	  * 
	  *<b>function:</b>删除数据
	  * @author cuiran
	  * @createDate 2012-12-11 09:38:12
	  */
	 public void remove(){
		 queryAll();
		 print("删除id = 50c68da852c2e1adb70f6d29:" + users.remove(new BasicDBObject("_id", new ObjectId("50c68da852c2e1adb70f6d29"))).getN());
		 queryAll();
	 }
	 
	 public void print(Object o){
		 System.out.println(o);
	 }
	 
	 
	 public void start(){
		 init();
		 add();
		 destory();
//		 remove();
//		 queryAll();
		 
		 
	 }
	 
	/**
	 * TODO
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MongoDbTest t=new MongoDbTest();
		t.start();
	}

}


运行结果:

 

查询users的所有数据
count:0
0
count:1
查询users的所有数据
{ "_id" : { "$oid" : "50c6d73952c25d5c9cec8c11"} , "name" : "cuiran1" , "age" : 27 , "sex" : "男"}



 

 

<think>好的,我现在需要帮助用户解决MongoDB连接失败的问题,错误是SocketException: Connection refused。首先,我应该回顾用户提供的引用内容,看看里面有哪些解决方案。 首先,用户提到错误信息显示连接被拒绝,可能的原因有几个。引用[3]指出,MongoDB可能没有启动。所以第一步应该是检查MongoDB服务是否在运行。用户需要进入MongoDB的bin目录执行mongod命令,并指定数据目录,比如mongod --dbpath ../data/db。这可能解决服务未启动的问题。 接着,引用[2]提到连接127.0.0.1:27017失败,这可能是端口被占用或者防火墙阻止。需要确认MongoDB是否真的在监听27017端口。可以使用netstat或者lsof命令查看端口情况,如果有其他程序占用了端口,就需要停止那个程序或者更改MongoDB的端口配置。 另外,引用[4]和[5]提到,在Spring Boot应用中排除MongoDB的自动配置。这可能适用于那些不需要连接MongoDB的项目,但如果有依赖的话,这种方法就不合适了。需要判断用户的项目是否真的需要MongoDB,如果不需要,可以通过注解排除自动配置,或者在pom.xml中注释掉相关依赖。 然后,还要考虑配置文件是否正确。用户可能配置了错误的主机或端口,比如指向了错误的IP地址或者端口号。检查application.properties或application.yml中的spring.data.mongodb.uri或相关配置是否正确。 还有可能,MongoDB的配置文件(比如mongod.conf)中的bindIp设置可能限制了访问的IP地址,默认是localhost,如果用户尝试远程连接,可能需要调整这个配置。不过用户的问题看起来是本地连接,所以可能不需要改这个,但如果有改动过配置文件,也需要检查。 另外,权限问题也可能导致连接失败,比如MongoDB配置了身份验证,但应用没有提供正确的用户名和密码。这时需要检查连接字符串是否包含正确的凭证。 总结下来,可能的解决步骤包括: 1. 确保MongoDB服务已启动。 2. 检查端口占用和防火墙设置。 3. 检查应用配置中的连接信息是否正确。 4. 排除Spring Boot的自动配置(如果不需要MongoDB)。 5. 验证MongoDB的配置文件是否正确。 6. 确认身份验证信息是否正确。 需要将这些步骤分点整理,并引用用户提供的参考资料来支持每个步骤。比如,引用[3]对应启动服务,引用[4]和[5]对应排除配置,引用[2]对应端口检查。同时,要确保回答结构清晰,用户能逐步排查问题。</think>### 解决方案:MongoDB 4.2.24 连接失败(SocketException: Connection refused) #### 1. **确认MongoDB服务是否启动** - **现象**:若未启动MongoDB服务,客户端无法通过`127.0.0.1:27017`建立连接。 - **操作**: 1. 进入MongoDB安装目录的`bin`文件夹。 2. 执行启动命令: ```bash mongod --dbpath ../data/db ``` 3. 观察控制台输出是否包含`waiting for connections on port 27017`,表示服务已启动[^3]。 - **说明**:`--dbpath`需指向正确的数据存储路径,默认是`/data/db`(Linux)或安装目录下的`data/db`(Windows)。 #### 2. **检查端口占用与防火墙** - **现象**:端口`27017`被其他进程占用或防火墙拦截。 - **操作**: 1. **Linux/Mac**:使用命令`lsof -i :27017`检查端口占用。 2. **Windows**:使用`netstat -ano | findstr :27017`查看进程PID,并通过任务管理器终止冲突进程。 3. 确保防火墙允许`27017`端口通信(临时关闭防火墙测试)。 #### 3. **验证Spring Boot配置** - **场景**:若项目无需使用MongoDB,但依赖存在导致自动连接失败。 - **操作**: 1. **排除自动配置**:在启动类添加`exclude`: ```java @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) ``` 2. **移除依赖**:在`pom.xml`中注释MongoDB依赖(若长期不需要)[^4][^5]。 #### 4. **检查连接配置** - **现象**:配置文件中主机、端口或认证信息错误。 - **操作**: 1. 打开`application.properties`或`application.yml`。 2. 确认配置项: ```properties spring.data.mongodb.uri=mongodb://localhost:27017/databaseName ``` 3. 若启用身份验证,需包含用户名和密码: ```properties spring.data.mongodb.uri=mongodb://user:password@localhost:27017/databaseName ``` #### 5. **检查MongoDB绑定IP** - **现象**:MongoDB默认仅绑定`localhost`,若需远程访问需修改配置。 - **操作**: 1. 打开MongoDB配置文件`mongod.conf`(路径通常为`/etc/mongod.conf`或安装目录下)。 2. 修改`net.bindIp`为`0.0.0.0`(允许所有IP访问)或指定IP。 3. 重启MongoDB服务使配置生效。 --- ### 相关问题 1. **如何排查MongoDB的端口冲突问题?** 2. **Spring Boot中如何动态启用/禁用MongoDB连接?** 3. **MongoDB启用身份验证后如何配置Spring Boot的连接参数?** --- **引用说明** [^1]: 若服务未启动,客户端会抛出`MongoSocketOpenException`,需通过启动命令解决。 [^2]: 端口占用或防火墙拦截会导致`NETWORK`层连接失败,需检查端口状态。 [^3]: 启动命令需指定正确的数据目录以初始化服务。 : 通过`exclude`注解可避免Spring Boot自动初始化MongoDB连接。 [^5]: 移除依赖或注释配置可彻底避免连接尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值