我无法连接到MongoDB 。 在Ubuntu中,它可以工作,但我现在在CentOS工作。 这是错误信息:
MongoDB shell版本:2.4.2
连接到:testing
Sat Apr 20 07:22:09.390 JavaScript执行失败:错误:无法连接到src / mongo / shell / mongo.js的服务器127.0.0.1:27017:L112
exception:连接失败
我尝试删除mongod.lock
文件,但它不起作用。
尝试删除/var/lib/mongodb/mongod.lock并重新启动mongdo服务
sudo rm /var/lib/mongodb/mongod.lock sudo service mongodb restart
如果您正在运行Ubuntu,那么文件夹的所有权有一个问题。
运行这些命令:
停止MongoDB服务
sudo service mongodb stop
删除MongoDB锁定文件
sudo rm /var/lib/mongodb/mongod.lock
将所有权从根改为MongoDB路径
sudo chown -R mongodb:mongodb /var/lib/mongodb/
启动MongoDB服务
sudo service mongodb start
测试mongo应用程序
mongo
那么你将能够成功执行(我希望)。
参考: 堆栈Exchange站点上的答案数据库管理员 错误:无法连接到服务器127.0.0.1:27017 src / mongo / shell / mongo.js:91更改mongodb数据目录时 !
此方法只适用于如果您要修复您的数据文件,而不保留原始文件。 要找到dbpath所在的位置,请使用
vim /etc/mongodb.conf
检查选项dbpath=
。
(我有dbpath=/var/lib/mongodb
。)
默认值: /data/db/
典型的位置包括/srv/mongodb
, /var/lib/mongodb
或/opt/mongodb
。
用你的dbpath替换/ var / lib / mongodb
sudo rm /var/lib/mongodb/mongod.lock sudo mongod --dbpath /var/lib/mongodb/ --repair sudo mongod --dbpath /var/lib/mongodb/ --journal
(确保你已经运行了上面几行的终端,不要按Ctrl + C或者退出)。现在在另一个窗口中输入命令来启动mongo
。
我希望这对你有用! 对于那些想要在保留原始文件的同时修复数据文件的人,请参见mongo
recover 。
我过去也有同样的问题。 就我而言,我没有足够的空间来存放日志文件。 释放一些空间解决了这个问题。
我面临同样的问题。 在bin里面运行mongod(你已经安装了mongodb)为我工作。 我也没有足够的空间。
我不知道为什么@lkrzysiak答案是downvoted:它为我工作! 可用空间不足可能是我得到的这个错误的来源,看到我得到的日志:
Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed Mon Aug 12 17:02:59.159 [initandlisten] Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles Mon Aug 12 17:02:59.159 [initandlisten] Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndlistn: 15926 Insufficient free space for journals, terminating Mon Aug 12 17:02:59.159 dbexit: Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...
经过一些清洁,释放一些空间,它就像一个魅力!
如果您在/etc/mongo.conf中更改了mongoDB的默认端口,也会出现此错误
在这种情况下通过外壳连接使用:
$mongo 127.0.0.1:your_new_port_number
要么
$mongo -u <user> -p <pass> --host <host> --port your_new_port_number
来自MongoDB文档
它可能是$ PATH和权限问题的组合。
请按照以下步骤操作:
更新你的$ PATH变量来指向你的MongoDB bin文件。 在我的情况下,brew安装MongoDB到这个文件夹:
/usr/local/Cellar/mongodb/2.4.6/
为了更新您的$ PATH变量,请执行以下操作:
$ sudo vi /etc/paths
然后,按'i'在Vi中插入文本,并将MongoDB路径附加到“路径”文件的末尾,然后重新启动终端。
/usr/local/Cellar/mongodb/2.4.6/bin
使用“Esc:w q”保存并退出Vi编辑器。
使用echo来显示你的路径变量:
$ echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin
现在尝试检查Mongo版本,如果你跟随,那么你是在正确的轨道上!
$ mongo --version MongoDB shell version: 2.4.6
现在我们需要创建数据库目录。 我使用了MongoDB文档中建议的默认“/ data / db”位置。 我还创建了一个日志目录,以避免在Mongo尝试创建任何日志时出现任何权限问题。 改变所有权,并将完成这项工作。
$ sudo mkdir /data/db $ sudo mkdir /data/log $ whoami username $ chown -R username /data
现在,我们将为MongoDB首次创建一个默认的配置文件,供我们运行“mongod”命令。 现在,我还要指出,'mongod'将启动一个服务,它将监听传入的数据连接。 这与'$ service mysqld start'执行相似。我们继续创建配置文件。 请记住,我已经创建了非常基本的配置文件。 但是,您可以添加许多其他变量来配置MongoDB。 这是我第一次使用MongoDB,所以我只知道MongoDB文档,我创建了“mongodb.conf”。
$ sudo vi /etc/mongodb.conf
添加如下:
fork = true port = 27017 quiet = true dbpath = /data/db logpath = /data/log/mongod.log logappend = true journal = true
请注意,MongoDB服务器的默认端口是27017.请使用您自己的路径来创建步骤-5中创建的dbpath和logpath。不要忘记关闭并保存conf文件。
现在我们都准备开始我们的MongoDB服务。 打开终端1的两个实例,输入:
$ sudo mongod -f /etc/mongodb.conf about to fork child process, waiting until server is ready for connections. forked process: 3516 all output going to: /data/log/mongod.log child process started successfully, parent exiting
如果你得到上面的消息,那么知道你已经成功地启动了你的Mongod服务。
现在,连接到它,在终端2键入以下内容:
$mongo test MongoDB shell version: 2.4.6 connecting to: test server has startup warnings: Tue Sep 3 16:55:43.527 [initandlisten] Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000 >
忽略警告,但是您已成功连接到“测试”数据库! 凉!
就这样。 我应用这个解决方案,当我试图在我的Mac上第一次安装MongoDB的副本。 看看这是否也帮助你。
对于详细的文章,你可以去这里 – http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 。
我希望它有帮助!
干杯,Chinmay