MongoDB社区版错误 homebrew.mxcl.mongodb-community.plist

11

在运行brew services start mongodb-community时,我遇到了这个错误。

mongodb-community error   root /Library/LaunchDaemons/homebrew.mxcl.mongodb-community.plist

我已经尝试重新安装Homebrew、Mongodb和其他一些解决方案,但都没有起作用。如果有帮助的话,将不胜感激,谢谢!

9个回答

13

你好,停止mongodb后运行sudo brew services start mongodb-community命令解决了问题。


1
添加sudo对我也起作用了。但之前并非如此。如果不使用sudo,我启动服务并检查brew services list,则会得到以下状态:mongodb-community error root /Library/LaunchDaemons/homebrew.mxcl.mongodb-community.plist。我想知道这是否需要在pList中添加权限。但不确定如何操作。寻求帮助。 - fredrick cyril
1
有人可以解释一下为什么它能够正常工作吗?我尝试按照文档的说明操作,但它并没有正常工作。但在这样做之后,它正常工作了! - Kamal Hossain
这对我也起作用了。我也得到了与@fredrickcyril相同的状态。 - Jammy
请执行以下命令以启动mongodb-community服务:sudo brew services start mongodb-community - Shehan Jayalath

7

我遇到了同样的问题。最终在 /usr/local/var/log/mongodb/mongo.log 找到了错误,提示我的数据库文件在 /usr/local/var/mongodb 中版本过旧(版本为4.2),不适用于这个版本的 mongodb (版本为4.4)。由于我并不需要这些文件,所以我删除了它们,mongodb 就可以正常启动了。查看你的日志,它们会告诉你问题出在哪里。


1
经过30分钟的尝试,这个方法对我有用,所以谢谢。如果您之前安装了原始的mongod homebrew(就像我一样),那么这很可能是您的问题。 - Harry
错误信息参考:「这个版本的 MongoDB 太新了,无法在现有的数据文件上启动。请尝试使用 MongoDB 4.2 或更早的版本。」 - blub
这对我也起作用了。 我删除了2017年的旧数据库文件(mongo ver3?),并允许mongodb-community使用其默认文件启动(可能我卸载并重新安装mongo以将默认db文件放在那里)。请注意,对于最新的macOS,默认的db文件夹不再是/data/db。 - ObjectiveTC

3

你好,刚刚解决了一个类似的问题。如果您尝试使用root运行mongodb,则会显示错误,这个问题很可能是文件权限问题。

您可以通过以下命令确认位置(目录可能因系统而异,以下是默认值):查看mongo日志

cat /usr/local/var/log/mongodb/mongo.log

您很可能会看到一个“Permission denied”(拒绝许可)错误的文件。(我的是一堆文件)。

您需要对这些文件运行chown

chown -R <login> /usr/local/var/mongodb

这应该可以解决问题。

您可以通过运行以下命令进行验证:ls -la <directory>,并验证所有内容现在都属于您的登录用户。


1

出现此错误的另一个原因可能是您忘记启用旧版本的不兼容功能。如果您连续更新了几个版本,这种情况可能会发生。例如,如果您想从3.2迁移到3.6,则必须安装所有中间版本(在本例中为3.4),并且对于每个版本,您都必须在安装下一个版本之前启用“不兼容的3.4功能”,使用以下命令:

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) 

根据https://www.mongodb.com/docs/manual/release-notes/3.4-upgrade-standalone/中的说明(例如),如果您忘记了这一步骤,版本3.6将无法启动,并在日志文件(/usr/local/var/log/mongodb/mongo.log)中显示通知:“* 重要提示:升级问题:在尝试升级到3.6之前,数据文件需要完全升级到版本3.4;请参见http://dochub.mongodb.org/core/3.6-upgrade-fcv获取更多详细信息。”请注意保留HTML标签。

0
请参考以下链接: https://blog.codewithdan.com/installing-mongodb-on-mac-catalina-using-homebrew/ 我按照这个链接的步骤,在/System/Volumes/Data下创建了一个data/db文件夹,并在/usr/local/etc/mongod.conf中更新了变量'dbPath:'的路径。
请确保用户和用户权限(创建此文件的用户与运行Mongo的brew服务的用户相同)
但是我的服务仍然没有启动。当我运行'brew services list'时,出现了错误。
在此问题上提到了相同的错误。
当我检查/usr/local/var/log/mongodb/mongo.log时,
它无法取消链接/tmp/mongodb-27017.sock这个文件。
请参考以下链接解决此问题。(只需删除该.sock文件)

https://www.dev2qa.com/how-to-fix-failed-to-unlink-socket-file-error-when-start-mongo-db-on-macos/

接着,我确保了data/db的权限是正确的

d-wx--x--x 3 name wheel 96 Mar 22 11:20 data

然后停止了mongo的brew服务并重新启动。这样就可以了。


0

我尝试了2个小时来解决这个问题。问题出在mongod.conf文件中的一个意外的标记,导致mongodb-community@4.2无法启动。

要跟踪此问题,请打开.plist文件并查看输出日志文件位置,在StandardErrorPath键后可以找到它。


0
我执行了停止命令 sudo brew services stop mongodb-community,然后再执行启动命令 sudo brew services start mongodb-community,问题就解决了。

0

与Rob Lopez / Craig Eddy的回答类似,以下是我在macOS ventura 13上使用mongodb-community@6.0和homebrew的解决方法:

在运行brew services start mongodb-community后,我遇到了类似的错误。

Name              Status        File
mongodb-community error  25600 ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

始终通过使用cat /usr/local/var/log/mongodb/mongo.log来检查日志,这总是有帮助的。

在我的情况下,看起来最后一行指出了问题"error":"IllegalOperation: 尝试在只读目录上创建锁文件:/usr/local/var/mongodb"

{"t":{"$date":"2023-06-03T14:30:42.768+08:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"config":"/usr/local/etc/mongod.conf","net":{"bindIp":"127.0.0.1, ::1","ipv6":true},"storage":{"dbPath":"/usr/local/var/mongodb"},"systemLog":{"destination":"file","logAppend":true,"path":"/usr/local/var/log/mongodb/mongo.log"}}}}
{"t":{"$date":"2023-06-03T14:30:42.769+08:00"},"s":"I",  "c":"NETWORK",  "id":5693100, "ctx":"initandlisten","msg":"Asio socket.set_option failed with std::system_error","attr":{"note":"acceptor TCP fast open","option":{"level":6,"name":261,"data":"00 04 00 00"},"error":{"what":"set_option: Invalid argument","message":"Invalid argument","category":"asio.system","value":22}}}
{"t":{"$date":"2023-06-03T14:30:42.769+08:00"},"s":"I",  "c":"NETWORK",  "id":5693100, "ctx":"initandlisten","msg":"Asio socket.set_option failed with std::system_error","attr":{"note":"acceptor TCP fast open","option":{"level":6,"name":261,"data":"00 04 00 00"},"error":{"what":"set_option: Invalid argument","message":"Invalid argument","category":"asio.system","value":22}}}
{"t":{"$date":"2023-06-03T14:30:42.770+08:00"},"s":"E",  "c":"CONTROL",  "id":20557,   "ctx":"initandlisten","msg":"DBException in initAndListen, terminating","attr":{"error":"IllegalOperation: Attempted to create a lock file on a read-only directory: /usr/local/var/mongodb"}}

顺便说一下,我尝试使用sudo brew services start mongodb-community命令,它起作用了,但也收到了一个警告,说不推荐这样做。
所以我尝试使用以下命令更改/usr/local/var/mongodb的权限,这解决了错误。
sudo chown -R `id -un` /usr/local/var/mongodb

只是额外信息:

  • chown:用于更改Unix类操作系统中文件和目录的所有权的命令。chown命令允许您为给定的文件或目录指定新的所有者。
  • -R:这是chown命令的一个选项,代表"递归"。使用时,它指示chown以递归方式操作,更改指定目录及其子目录中所有文件和目录的所有权。
  • id -un:这是由反引号括起来的命令替换。它执行id -un命令并将其输出作为整个命令的一部分替换。id -un命令用于获取当前用户的用户名。因此,在这个上下文中,它获取执行sudo命令的用户的用户名。

0
尝试删除文件夹"dbPath",要删除它,请查看您的配置以获取路径,如下所示:
systemLog:
  destination: file
  path: /opt/homebrew/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /opt/homebrew/var/mongodb
net:
  bindIp: 127.0.0.1, ::1
  ipv6: true

在我的情况下是/opt/homebrew/var/mongodb 现在你需要按照以下命令操作:
$cd /opt/homebrew/var

$rm mongodb

$mkdir mongodb

然后:
brew services restart mongodb-community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接